-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Greetings,

The CERT/CC is tracking this as VR-554, please retain VR-554 in the subject of 
future replies related to this issue.

Considering the issue and CVE IDs are already being publicly discussed, we are 
unlikely to take further action at this time. Any and all CVE disputes should 
be directed to MITRE (c...@mitre.org or their CVE form).

Regards,

Joel Land
Vulnerability Analysis Team
==============================
CERT Coordination Center
www.cert.org / c...@cert.org 
==============================



Sam Trenholme <mara...@gmail.com> writes:
>CVE-2016-9300, CVE-2016-9301, and CVE-2016-9302 are *NOT* valid bug reports.
>
>Here’s the deal: The reporter had to patch MaraDNS before he was able
>to crash her.
>
>The patch, however, treats MaraDNS’ special buffer-overflow-resistant
>“js_string” as if it were an ordinary string — but it’s not. Here’s
>the offending code patched in to MaraDNS from the reporter’s “bug
>report”:
>
>sock_num = read(0, incoming, 512);
>
>As per the man page for read:
>
>ssize_t read(int fd, void *buf, size_t count);
>
>DESCRIPTION
>       read()  attempts to read up to count bytes from file descriptor fd into
>       the buffer starting at buf.
>
>However, incoming is not a raw string buffer: It’s a special js_string
>object which MaraDNS uses to be buffer overflow resistant, as can be
>seen here in server/MaraDNS.c:
>
>int main(int argc, char **argv) {
>
>    js_string *mararc_loc = 0, *errors = 0,
>              *bind_address = 0, *ipv6_bind_address = 0,
>              *csv2_synthip_address = 0,
>              *ipv4_bind_address = 0, *incoming = 0,
>              *uncomp = 0, *verbstr = 0;
>
>The js_string structure (I guess I would call it an object here in
>2016) is defined in libs/JsStr.h:
>
>typedef struct {
>    unsigned char *string;   /* Actual physical string */
>    unsigned int unit_size;  /* The size of a single character in the string */
>    unsigned int unit_count; /* The length of the string, in units */
>    unsigned int max_count;  /* The maximum allowable size of the string,
>                               also in units */
>    int encoding;   /* The type of language/encoding the string is in */
>    int is_good;    /* This is checked to make sure the data structure is
>                       sane */
>    } js_string;
>
>Point being, if we patch MaraDNS to treat this structure as a raw
>buffer instead of a structure, we will be able to crash MaraDNS — but
>that doesn’t mean we have found a UDP packet of death which will crash
>unpatched MaraDNS 2.0.13.
>
>I appreciate that people are performing security research with
>MaraDNS, and the fact that researchers need to resort to patching
>MaraDNS before crashing her indicates that, a decade and a half later
>MaraDNS is still a usable DNS server with a strong security record.


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iQIcBAEBAgAGBQJYRakeAAoJEOaVDwyMMQJnHSMP/jSEFU9QxktXE+iZR0eaIgBE
/KBiSXAr6MoyIqBhlbaGtg/8aAdrxAP9U6XGvH7ntU/yuy04vOhVbl5rYVsOarg8
1mQWZ48L79ek+P5DBprnbTpoJYoscNIv6FBEH1JM3uXdK80FGajMPf7MOyJsZpPu
/Xcv0cEqrRdJClggQhEoKyz4h8EiT12yl4CvWfVRzX8TFtKGjLh0QIbeLo3OknJZ
dRYylBEf4Z+iD2C3EM8QpjuQfMYGT2YDfc6rjgNuuOl2SBliGMoH6FKXiCNAsn5Q
tfCNFNYP+6On8wfP9hRqPLfQWgxd12bWCWeFEKd0LSsxEvaFpdlwQmLshzxiRDxU
3QYw7azzzFTA6RoBgMOblravwkXY4Gi+vTQqsBqkgCdqNI1i3z6VGGn3xQAfeDFi
lAze+1S7EiEMK96uWygTjCtonoBZdZyuP3J0hQloozxV4+2njSN+H/HosEyirhwe
DVkS2excLG22+K8+PSPkKQZnPMVZQwHH6SkXyGI1uPq9PTLM1cpyqFCT1iI4tRep
3VeMkMwts0NEyRAuvXRhYnKQid71NsWBnNN4OgMtCOxU+JIWHjZzpDOamD99fvZg
/OBdCMvfQcW0YLcMRVV1hznhzfSL9+nL90FpLeeSJ6eszCM5EiAQ+mOGG3/p2t7h
f/0gUgTFaN/A9J+yvUpN
=q4mi
-----END PGP SIGNATURE-----

Reply via email to