CVE-2003-1418
CVSS4.3
发布时间 :2003-12-31 00:00:00
修订时间 :2008-09-05 16:36:52
NMCO    

[原文]Apache HTTP Server 1.3.22 through 1.3.27 on OpenBSD allows remote attackers to obtain sensitive information via (1) the ETag header, which reveals the inode number, or (2) multipart MIME boundary, which reveals child proccess IDs (PID).


[CNNVD]Apache Web Server MIME Boundary远程信息泄露漏洞(CNNVD-200312-297)

        
        Apache是一款流行的开放源代码httpd服务程序。
        Apache Web服务程序在生成MIME消息边界(message boundaries)时存在问题,远程攻击者可以利用这个漏洞获得服务器敏感信息。
        Apache的把系统敏感信息用在生成的MIME消息边界中,因此攻击者可以在返回信息中获得这些敏感信息,可以进一步对系统进行攻击。OpenBSD提供了补丁使用BASE64编码的随机号来生成MIME边界。
        <*链接:http://www.openbsd.org/errata.html
        *>

- CVSS (基础分值)

CVSS分值: 4.3 [中等(MEDIUM)]
机密性影响: PARTIAL [很可能造成信息泄露]
完整性影响: NONE [不会对系统完整性产生影响]
可用性影响: NONE [对系统可用性无影响]
攻击复杂度: MEDIUM [漏洞利用存在一定的访问条件]
攻击向量: NETWORK [攻击者不需要获取内网访问权或本地访问权]
身份认证: NONE [漏洞利用无需身份认证]

- CWE (弱点类目)

CWE-200 [信息暴露]

- CPE (受影响的平台与产品)

cpe:/a:apache:http_server:1.3.25Apache Software Foundation Apache HTTP Server 1.3.25
cpe:/a:apache:http_server:1.3.26Apache Software Foundation Apache HTTP Server 1.3.26
cpe:/a:apache:http_server:1.3.24Apache Software Foundation Apache HTTP Server 1.3.24
cpe:/a:apache:http_server:1.3.27Apache Software Foundation Apache HTTP Server 1.3.27
cpe:/a:apache:http_server:1.3.22Apache Software Foundation Apache HTTP Server 1.3.22
cpe:/a:apache:http_server:1.3.23Apache Software Foundation Apache HTTP Server 1.3.23

- OVAL (用于检测的技术细节)

未找到相关OVAL定义

- 官方数据库链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
(官方数据源) MITRE
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2003-1418
(官方数据源) NVD
http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-200312-297
(官方数据源) CNNVD

- 其它链接及资源

http://www.securityfocus.com/bid/6943
(PATCH)  BID  6943
http://xforce.iss.net/xforce/xfdb/11438
(UNKNOWN)  XF  apache-mime-information-disclosure(11438)
http://www.securityfocus.com/bid/6939
(UNKNOWN)  BID  6939
http://www.openbsd.org/errata32.html
(UNKNOWN)  OPENBSD  [3.2] 008: SECURITY FIX: February 25, 2003

- 漏洞信息

Apache Web Server MIME Boundary远程信息泄露漏洞
中危 设计错误
2003-12-31 00:00:00 2003-12-31 00:00:00
远程  
        
        Apache是一款流行的开放源代码httpd服务程序。
        Apache Web服务程序在生成MIME消息边界(message boundaries)时存在问题,远程攻击者可以利用这个漏洞获得服务器敏感信息。
        Apache的把系统敏感信息用在生成的MIME消息边界中,因此攻击者可以在返回信息中获得这些敏感信息,可以进一步对系统进行攻击。OpenBSD提供了补丁使用BASE64编码的随机号来生成MIME边界。
        <*链接:http://www.openbsd.org/errata.html
        *>

- 公告与补丁

        临时解决方法:
        如果您不能立刻安装补丁或者升级,CNNVD建议您采取以下措施以降低威胁:
        * 使用OpenBSD发布的安全补丁:
        ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.2/common/008_httpd.patch
        Apply by doing:
         cd /usr/src
         patch -p0 < 008_httpd.patch
        And then rebuild and install httpd and it's modules:
         cd usr.sbin/httpd
         make -f Makefile.bsd-wrapper obj
         make -f Makefile.bsd-wrapper depend
         make -f Makefile.bsd-wrapper
         make -f Makefile.bsd-wrapper install
        If httpd had been started, you might want to run
         apachectl stop
         apachectl start
        afterwards.
        Index: usr.sbin/httpd/src/main/http_main.c
        ===================================================================
        RCS file: /cvs/src/usr.sbin/httpd/src/main/http_main.c,v
        retrieving revision 1.25.2.1
        retrieving revision 1.25.2.2
        diff -u -p -r1.25.2.1 -r1.25.2.2
        --- usr.sbin/httpd/src/main/http_main.c 8 Nov 2002 00:04:04 -0000 1.25.2.1
        +++ usr.sbin/httpd/src/main/http_main.c 24 Feb 2003 02:09:38 -0000 1.25.2.2
        @@ -1,4 +1,4 @@
        -/* $OpenBSD: http_main.c,v 1.25.2.1 2002/11/08 00:04:04 jason Exp $ */
        +/* $OpenBSD: http_main.c,v 1.25.2.2 2003/02/24 02:09:38 margarida Exp $ */
        
         /* ====================================================================
         * The Apache Software License, Version 1.1
        @@ -5176,6 +5176,7 @@ static void standalone_main(int argc, ch
         }
         ap_set_version(); /* create our server_version string */
         ap_init_modules(pconf, server_conf);
        + ap_init_etag(pconf);
         version_locked++; /* no more changes to server_version */
        
         if(!is_graceful && !is_chrooted)
        Index: usr.sbin/httpd/src/main/http_protocol.c
        ===================================================================
        RCS file: /cvs/src/usr.sbin/httpd/src/main/http_protocol.c,v
        retrieving revision 1.13
        retrieving revision 1.13.2.1
        diff -u -p -r1.13 -r1.13.2.1
        --- usr.sbin/httpd/src/main/http_protocol.c 19 Jul 2002 21:31:16 -0000 1.13
        +++ usr.sbin/httpd/src/main/http_protocol.c 24 Feb 2003 02:09:39 -0000 1.13.2.1
        @@ -1,3 +1,4 @@
        +/* $OpenBSD: http_protocol.c,v 1.13.2.1 2003/02/24 02:09:39 margarida Exp $ */
         /* ====================================================================
         * The Apache Software License, Version 1.1
         *
        @@ -76,6 +77,7 @@
         #include "util_date.h" /* For parseHTTPdate and BAD_DATE */
         #include
         #include "http_conf_globals.h"
        +#include "ap_sha1.h"
        
         #define SET_BYTES_SENT(r) \
         do { if (r->sent_bodyct) \
        @@ -276,7 +278,10 @@ static int byterange_boundary(request_re
         API_EXPORT(int) ap_set_byterange(request_rec *r)
         {
         const char *range, *if_range, *match;
        + char *bbuf, *b;
        + u_int32_t rbuf[12]; /* 48 bytes yields 64 base64 chars */
         long length, start, end, one_start = 0, one_end = 0;
        + size_t u;
         int ranges, empty;
        
         if (!r->clength || r->assbackwards)
        @@ -322,8 +327,20 @@ API_EXPORT(int) ap_set_byterange(request
         * caller will perform if we return 1.
         */
         r->range = range;
        - r->boundary = ap_psprintf(r->pool, "%lx%lx",
        - r->request_time, (long) getpid());
        + for (u = 0; u < sizeof(rbuf)/sizeof(rbuf[0]); u++)
        + rbuf[u] = htonl(arc4random());
        +
        + bbuf = ap_palloc(r->pool, ap_base64encode_len(sizeof(rbuf)));
        + ap_base64encode(bbuf, (const unsigned char *)rbuf, sizeof(rbuf));
        + for (b = bbuf; *b != '\0'; b++) {
        + if (((b - bbuf) + 1) % 7 == 0)
        + *b = '-';
        + else if (!isalnum(*b))
        + *b = 'a';
        + }
        +
        + r->boundary = bbuf;
        +
         length = 0;
         ranges = 0;
         empty = 1;
        @@ -646,7 +663,7 @@ API_EXPORT(int) ap_meets_conditions(requ
         * could be modified again in as short an interval. We rationalize the
         * modification time we're given to keep it from being in the future.
         */
        -API_EXPORT(char *) ap_make_etag(request_rec *r, int force_weak)
        +API_EXPORT(char *) ap_make_etag_orig(request_rec *r, int force_weak)
         {
         char *etag;
         char *weak;
        @@ -3106,4 +3123,164 @@ API_EXPORT(void) ap_send_error_response(
         ap_kill_timeout(r);
         ap_finalize_request_protocol(r);
         ap_rflush(r);
        +}
        +
        +/*
        + * The shared hash context, copies of which are used by all children for
        + * etag generation. ap_init_etag() must be called once before all the
        + * children are created. We use a secret hash initialization value
        + * so that people can't brute-force inode numbers.
        + */
        +static AP_SHA1_CTX baseCtx;
        +
        +int ap_create_etag_state(pool *pconf)
        +{
        + u_int32_t rnd;
        + unsigned int u;
        + int fd;
        + const char* filename;
        +
        + filename = ap_server_root_relative(pconf, "logs/etag-state");
        + ap_server_strip_chroot(filename, 0);
        +
        + if ((fd = open(filename, O_CREAT|O_WRONLY|O_TRUNC|O_NOFOLLOW, 0640)) ==
        + -1) {
        + ap_log_error(APLOG_MARK, APLOG_CRIT, NULL,
        + "could not create ", filename);
        + exit(-1);
        + }
        +
        + if (fchown(fd, -1, ap_group_id) == -1) {
        + ap_log_error(APLOG_MARK, APLOG_CRIT, NULL,
        + "could not chown ", filename);
        + exit(-1);
        + }
        +
        + /* generate random bytes and write them */
        + for (u = 0; u < 4; u++) {
        + rnd = arc4random();
        + if (write(fd, &rnd, sizeof(rnd)) == -1) {
        + ap_log_error(APLOG_MARK, APLOG_CRIT, NULL,
        + "could not write to ", filename);
        + exit(-1);
        + }
        + }
        +
        + close (fd);
        +}
        +
        +API_EXPORT(void) ap_init

- 漏洞信息

60395
Apache HTTP Server on OpenBSD ETag HTTP Header Remote Information Disclosure
Remote / Network Access Information Disclosure
Loss of Confidentiality
Exploit Public

- 漏洞描述

Unknown or Incomplete

- 时间线

2003-02-25 Unknow
Unknow Unknow

- 解决方案

Unknown or Incomplete

- 相关参考

- 漏洞作者

Unknown or Incomplete
 

 

关于SCAP中文社区

SCAP中文社区是国内第一个以SCAP为主题的中文开放社区。了解更多信息,请查阅[关于本站]

版权声明

CVE/CWE/OVAL均为MITRE公司的注册商标,它们的官方数据源均保存在MITRE公司的相关网站