- - --------------------------------------------------------------------- GENTOO LINUX SECURITY ANNOUNCEMENT 200304-08 - - --------------------------------------------------------------------- PACKAGE : pptpd SUMMARY : buffer overflow DATE : 2003-04-28 09:22 UTC EXPLOIT : remote VERSIONS AFFECTED :=pptpd-1.1.3.20030429 CVE : CAN-2003-0213 - - --------------------------------------------------------------------- - From advisory: "PPTP packet header contain 16bit length which specifies the full size of the packet: bytes_this = read(clientFd, packet + bytes_ttl, 2 - bytes_ttl); // ... bytes_ttl += bytes_this; // ... length = htons(*(u_int16_t *) packet); if (length > PPTP_MAX_CTRL_PCKT_SIZE) { // abort } Looks good so far, except: bytes_this = read(clientFd, packet + bytes_ttl, length - bytes_ttl); If given length was 0 or 1, the "length - bytes_ttl" result is -1 or -2, which means that it reads unlimited amount of data from client into "packet", which is a buffer located in stack. The exploitability only depends on if libc allows the size parameter to be larger than SSIZE_MAX bytes. GLIBC does, Solaris and *BSD don't." Read the full advisory at: https://marc.theaimsgroup.com/?l=bugtraq&m=104994375011406&w=2 SOLUTION It is recommended that all Gentoo Linux users who are running net-dialup/pptpd upgrade to pptpd-1.1.3.20030409 as follows: emerge sync emerge pptpd emerge clean