首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第40期->最新漏洞
期刊号: 类型: 关键词:
Sun ONE(iPlanet)应用服务器Connector NSAPI模块远程缓冲区溢出漏洞

日期:2003-04-02

发布日期:2003-03-13
更新日期:2003-03-17

受影响系统:
Sun ONE Application Server 6.5
Sun ONE Application Server 6.0
不受影响系统:
Sun ONE Application Server 6.5 SP1
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 7082
CVE(CAN) ID: CAN-2002-0387

Sun ONE应用服务程序包含Connector模块,此模块是NSAPI插件集成在Sun ONE应用服务器上的WEB服务程序上。

Connector模块在处理进入的HTTP请求URL缺少边界缓冲区检查,远程攻击者利用这个漏洞进行缓冲区溢出攻击,可能以WEB进程权限在系统上执行任意指令。

Sun ONE应用服务器上的gxnsapi6.dll模块使用静态缓冲区处理进入的URI请求,/[AppServerPrefix]/[long buffer]形式的超长URL请求可导致缓冲区溢出,通过控制保存的EIP可能以WEB进程权限在系统上执行任意指令。

<*来源:Kevin Dunn (kdunn@atstake.com)
        Chris Eng (ceng@atstake.com)
  
  链接:http://www.atstake.com/research/advisories/2003/a031303-1.txt
*>

建议:
--------------------------------------------------------------------------------
临时解决方法:

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

* 如果用户使用6.5版本建议采用SP1。

* 使用或写自己的NSAPI模块处理HTTP请求,下面的模块可允许obj.conf文件中指定长度的URI请求,否则会发送"440 Possible Attack Detected"应答给客户端:

=============================
NSAPI Data Validation Module:
=============================


Usage:


In [server-root]/[server-instance]/config/obj.conf:


...
Init fn="load-modules" shlib="[path to libs]/long.so"
funcs="bounds_check"


<Object name=default>
# Make sure this function is the first to be called
NameTrans fn=bounds_check maxlength=500


...


----- BEGIN -----
#include "nsapi.h"


static int max_req_len = 0;


NSAPI_PUBLIC int bounds_check(pblock *pb, Session *sn,
  Request *rq) {
  char *temp;
  max_req_len = atoi(pblock_findval("maxlength", pb));
  temp = pblock_findval("uri", rq->reqpb);


  if (temp != NULL) {
    if (strlen(temp) > max_req_len) {
      log_error(LOG_SECURITY, "bounds_check", sn, rq,
                "Overly long URI header (%d bytes)...
               aborting.",
                strlen(temp));
      protocol_status(sn, rq, 440, "Potential Attack
                      Detected");
      return REQ_ABORTED;
    }
  }
    return REQ_NOACTION;
}
----- END -----

* 使用IDS监视通信,过滤超长不正常的HTTP URI请求。

* 使用反向代理服务程序检查HTTP请求的头数据,如果长度超长就进行匹配的相应操作。

厂商补丁:

Sun
---
Sun One Application Server 6.5补丁下载:

http://wwws.sun.com/software/download/products/3e3afb89.html

供应商没有为6.0版本提供补丁。
版权所有,未经许可,不得转载