- - ---------------------------------------------------------------------
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: 
http://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

Gentoo: pptpd Remote buffer overflow

A buffer overflow has been fixed in pptpd

Summary


- - ---------------------------------------------------------------------
GENTOO LINUX SECURITY ANNOUNCEMENT 200304-08
- - ---------------------------------------------------------------------

- - ---------------------------------------------------------------------
- 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: http://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


Resolution

References

Availability

Concerns

Severity
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

Synopsis

Background

Affected Packages

Impact

Workaround

Related News