what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

popclient30b6.txt

popclient30b6.txt
Posted Jun 29, 2004
Authored by Dean White, John Cartwright

An off-by-one condition exists in the POP3 handler code present in popclient 3.0b6. By crafting a malicious email a remote attacker may cause a denial of service against users of this software.

tags | advisory, remote, denial of service
SHA-256 | 37477ee91fb39858381402adf7f0db7f0667492f2d0b8d2109a09061ffc25866

popclient30b6.txt

Change Mirror Download


DoS in popclient 3.0b6
----------------------

Release Date: 29th June 2004
Discovery: Dean White <incidents@oneguard.com>
Research: John Cartwright <johnc@grok.org.uk>

Overview
--------

"popclient is a Post Office Protocol compliant mail retrieval client
which supports both POP2 (as specified in RFC 937) and POP3 (RFC 1725)."

An off-by-one condition exists in the POP3 handler code present in
this application. By crafting a malicious email a remote attacker may
cause a denial of service against users of this software.

Detail
------

The problem occurs in pop3.c, function 'POP3_readmsg':

int POP3_readmsg (socket,mboxfd,topipe)
int socket;
int mboxfd;
int topipe;
{
[1] char buf [MSGBUFSIZE];
char *bufp;
char savec;
char fromBuf[MSGBUFSIZE];
int needFrom;
int lines,sizeticker;
time_t now;
/* This keeps the retrieved message count for display purposes */
static int msgnum = 0;

/* set up for status message if outlevel allows it */
if (outlevel > O_SILENT && outlevel < O_VERBOSE) {
fprintf(stderr,"reading message %d",++msgnum);
/* won't do the '...' if retrieved messages are being sent to stdout */
if (mboxfd == 1)
fputs(".\n",stderr);
else
;
}
else
;

/* read the message content from the server */
lines = 0;
sizeticker = MSGBUFSIZE;
while (1) {
[2] if (SockGets(socket,buf,sizeof(buf)) < 0)
return(PS_SOCKET);
bufp = buf;
if (*bufp == '.') {
bufp++;
if (*bufp == 0)
break; /* end of message */
}
[3] strcat(bufp,"\n");

A buffer of size MSGBUFSIZE is declared at [1]. At [2], the function
SockGets is called, which returns a line of input from the message
into this buffer. In the case of a long line, this will return at
maximum a string of (MSGBUFSIZE - 1) characters plus the null
terminator required.

In this case, then the strcat is performed at [3], the null is
overwritten with the '\n' character, and a new null is placed one byte
after the buffer, partially overwriting the saved stack pointer.

When the function returns this leads to an application crash, however
there does not appear to be any possibility of influencing this
behaviour to cause anything other than a DoS.

Workaround
----------

The call to SockGets at [2] should use (sizeof(buf)-1) for the third
parameter so that bounds are not overrun when the newline is applied.

Notes
-----

- Whilst symptoms of this problem were discussed as far back as 1998,
there does not appear to be any (publicly available) research into,
or fix for, this DoS.
- popclient 3.0b6 code was sourced from the OpenBSD ports tree.
- Thanks to Len Rose/Netsys.com for the continued long-time support!

This advisory will be archived at
http://www.grok.org.uk/advisories/popclient.html
Login or Register to add favorites

File Archive:

July 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Jul 1st
    27 Files
  • 2
    Jul 2nd
    10 Files
  • 3
    Jul 3rd
    35 Files
  • 4
    Jul 4th
    27 Files
  • 5
    Jul 5th
    18 Files
  • 6
    Jul 6th
    0 Files
  • 7
    Jul 7th
    0 Files
  • 8
    Jul 8th
    28 Files
  • 9
    Jul 9th
    44 Files
  • 10
    Jul 10th
    24 Files
  • 11
    Jul 11th
    25 Files
  • 12
    Jul 12th
    11 Files
  • 13
    Jul 13th
    0 Files
  • 14
    Jul 14th
    0 Files
  • 15
    Jul 15th
    28 Files
  • 16
    Jul 16th
    6 Files
  • 17
    Jul 17th
    34 Files
  • 18
    Jul 18th
    6 Files
  • 19
    Jul 19th
    0 Files
  • 20
    Jul 20th
    0 Files
  • 21
    Jul 21st
    0 Files
  • 22
    Jul 22nd
    0 Files
  • 23
    Jul 23rd
    0 Files
  • 24
    Jul 24th
    0 Files
  • 25
    Jul 25th
    0 Files
  • 26
    Jul 26th
    0 Files
  • 27
    Jul 27th
    0 Files
  • 28
    Jul 28th
    0 Files
  • 29
    Jul 29th
    0 Files
  • 30
    Jul 30th
    0 Files
  • 31
    Jul 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close