安全研究

安全漏洞
GNU Screen转义序列缓冲区溢出漏洞

发布日期:2003-11-27
更新日期:2003-12-03

受影响系统:
GNU screen 4.0.1
GNU screen 3.9.9
GNU screen 3.9.8
GNU screen 3.9.4
GNU screen 3.9.15
GNU screen 3.9.13
GNU screen 3.9.10
GNU screen 3.9.11
    - Caldera Open Linux Workstation 3.1.1
    - Caldera Open Linux Server 3.1.1
    - Conectiva Linux graficas
    - Conectiva Linux ecommerce
    - Conectiva Linux 7.0
    - Conectiva Linux 6.0
    - Conectiva Linux 5.1
    - Conectiva Linux 5.0
    - Debian Linux 2.2
    - FreeBSD 4.5
    - FreeBSD 4.4
    - FreeBSD 4.3
    - HP HP-UX 11.20
    - HP HP-UX 11.11
    - HP HP-UX 11.0
    - HP HP-UX 10.20
    - Mandrake Linux 8.2
    - Mandrake Linux 8.1
    - Mandrake Linux 8.0
    - Mandrake Linux 7.2
    - NetBSD 1.5.2
    - NetBSD 1.5.1
    - NetBSD 1.5
    - OpenBSD 3.0
    - OpenBSD 2.9
    - OpenBSD 2.8
    - OpenBSD 2.7
    - OpenBSD 2.6
    - RedHat Linux 7.2
    - RedHat Linux 7.1
    - RedHat Linux 7.0
    - RedHat Linux 6.2
    - Slackware Linux 8.0
    - Slackware Linux 7.1
    - Sun Solaris 8.0
    - Sun Solaris 7.0
    - Sun Solaris 2.6
    - SuSE Linux 7.1
    - SuSE Linux 7.0
    - SuSE Linux 6.4
描述:
BUGTRAQ  ID: 9117

Screen是一款免费开放源代码的终端管理软件,由Free Software Foundation分发和维护,可使用在多种Unix和Linux操作系统下。

Screen不正确处理转义序列字符,本地或者远程攻击者可以利用这个漏洞进行缓冲区溢出攻击,精心构建提交数据可能以进程权限在系统上执行任意指令。

问题存在于ansi.c代码中:

ansi.c:

        case '0': case '1': case '2': case '3': case '4':
        case '5': case '6': case '7': case '8': case '9':
          if (curr->w_NumArgs < MAXARGS)
        {
          if (curr->w_args[curr->w_NumArgs] < 100000000)
            curr->w_args[curr->w_NumArgs] =
              10 * curr->w_args[curr->w_NumArgs] + (c - '0');
        }
          break;
        case ';':
        case ':':
          curr->w_NumArgs++;
          break;

w_NumArgs是一个符号整数,在转义字符中发送2GB';'字符,会引起内部变量变为负值,这样就使能成功绕过< MAXARGS的保护检查,而后续的采用此负值的操作可导致破坏内存信息,可能以进程权限在系统上执行任意指令。

由于转义序列可源自使用SSH,telnet,或其他网络工具的远程网络会话,因此此漏洞也可能被远程利用。

<*来源:Timo Sirainen (tss@iki.fi
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=106995837813873&w=2
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 第三方补丁下载:

--- ansi.c.old 2003-11-15 18:04:12.000000000 +0200
+++ ansi.c 2003-11-15 18:04:51.000000000 +0200
@@ -559,7 +559,7 @@
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
- if (curr->w_NumArgs < MAXARGS)
+ if (curr->w_NumArgs >= 0 && curr->w_NumArgs < MAXARGS)
{
if (curr->w_args[curr->w_NumArgs] < 100000000)
curr->w_args[curr->w_NumArgs] =

厂商补丁:

GNU
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.gnu.org

浏览次数:3065
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障