Telnet是一个广泛使用的明文的远程连接虚拟终端协议,可以用来对远程计算机进行操作。目前使用最多的telnetd版本都是源于BSD telnetd的某个派生。 来源于BSD telnet守护程序的telnetd存在一个堆溢出漏洞,远程攻击者可能通过溢出攻击在主机上以telnetd守护进程的权限(通常是root)执行任意指令。 在处理telnet协议选项的函数中没有进行有效的边界检查,当使用某些选项(\'\'AYT\'\')时,可能发生缓冲区溢出。由于攻击者可以控制的字符是有限的而且溢出发生在BSS区,因此,攻击受到一定限制。但是发现者报告说至少在某些系统(FreeBSD/BSDI/NetBSD)下攻击是切实可行的,一个可用的攻击程序已经广泛流传。 在Linux系统下,如果用户可以获取对系统的本地访问权限,它可以通过telnetd的漏洞为 /bin/login设置环境变量,例如LD_PRELOAD=/tmp/make-rootshell.so 。 如果用户没有本地访问权限,他可以覆盖一些块(chunk)结果,setenv(3)会使用这些结构,并在用户可以控制的内存取中一个新的chunk,因此当环境变量重新分配内存时会改变任意内存地址的值。 最新的报告显示Linux netkit-telnetd <= 0.17版本都是受影响的,攻击者可能远程获取root权限。
Telnet是一个广泛使用的明文的远程连接虚拟终端协议,可以用来对远程计算机进行操作。目前使用最多的telnetd版本都是源于BSD telnetd的某个派生。 来源于BSD telnet守护程序的telnetd存在一个堆溢出漏洞,远程攻击者可能通过溢出攻击在主机上以telnetd守护进程的权限(通常是root)执行任意指令。 在处理telnet协议选项的函数中没有进行有效的边界检查,当使用某些选项(\'\'AYT\'\')时,可能发生缓冲区溢出。由于攻击者可以控制的字符是有限的而且溢出发生在BSS区,因此,攻击受到一定限制。但是发现者报告说至少在某些系统(FreeBSD/BSDI/NetBSD)下攻击是切实可行的,一个可用的攻击程序已经广泛流传。 在Linux系统下,如果用户可以获取对系统的本地访问权限,它可以通过telnetd的漏洞为 /bin/login设置环境变量,例如LD_PRELOAD=/tmp/make-rootshell.so 。 如果用户没有本地访问权限,他可以覆盖一些块(chunk)结果,setenv(3)会使用这些结构,并在用户可以控制的内存取中一个新的chunk,因此当环境变量重新分配内存时会改变任意内存地址的值。 最新的报告显示Linux netkit-telnetd <= 0.17版本都是受影响的,攻击者可能远程获取root权限。