CVE-2007-2053 (CNNVD-200704-602)

CRITICAL
中文标题:
AFFLIB多个缓冲区溢出漏洞
英文标题:
Multiple stack-based buffer overflows in AFFLIB before 2.2.6 allow remote attackers to cause a denia...
CVSS分数: 10.0
发布时间: 2007-04-30 22:00:00
漏洞类型: 授权问题
状态: PUBLISHED
数据质量分数: 0.30
数据版本: v3
漏洞描述
中文描述:

AFFLIB是用于操作高级取证格式(AFF)文件的开源函数库。 AFFLIB中存在多个缓冲区溢出漏洞,可能允许攻击者导致取证查看器拒绝服务或执行任意指令。 具体漏洞如下: * LastModified远程栈溢出 * 文件:lib/s3.cpp 行数:113 LastModified字符串通过strcpy(3)拷贝到了固定长度的缓冲区,但最初从XML响应读取字符串时没有执行长度检查,允许恶意的Amazon S3服务器或中间人在S3客户端系统上执行任意指令。111-115行说明了这个问题: /* Make date nice */ char tstamp[64]; strcpy(tstamp,(*i)->LastModified.c_str()); tstamp[10] = ' '; tstamp[19] = '\000'; (*i)->LastModified字符串是直接从endElement()回调函数(lib/s3_glue.cpp的173-178行)的XML响应中获得的: case 3: if(!strcmp(name,"Key")){ einfo->lbr->contents.back()->Key = einfo->cbuf; break;} if(!strcmp(name,"LastModified")){einfo->lbr->contents.back()->LastModified = einfo->cbuf;break;} if(!strcmp(name,"ETag")){ einfo->lbr->contents.back()->ETag = einfo->cbuf;break;} if(!strcmp(name,"Size")){ einfo->lbr->contents.back()->Size = atoi(einfo->cbuf.c_str());break;} break; 成功攻击要求用户对不可信任的S3服务器运行s3二进制程序,或攻击者能够对用户和有效的S3服务器之间的通讯执行扮演或中间人攻击。 * S3 URL解析栈溢出 * 文件:lib/vnode_s3.cpp 行数:80 & 81 memcpy()调用中不可信任的参数未经长度检查拷贝到了栈缓冲区,如果这个函数接收了不可信任来源的URL,就会导致代码执行。66-81行说明了这个问题: /* Separate out the bucket and the path */ const char *fn = af_filename(af); regex_t re; if(regcomp( &re,"^s3://([^/]*)/(.*)$",REG_EXTENDED)){ err(1,"regcomp"); } regmatch_t match[3]; memset(match,0,sizeof(match)); if(regexec( &re,fn,3,match,0)!=0){ return -1; // can't parse URL; must not be a match } char bucket[1024]; memset(bucket,0,sizeof(bucket)); char path[1024]; memset(path,0,sizeof(path)); memcpy(bucket,fn+match[1].rm_so,match[1].rm_eo-match[1].rm_so); memcpy(path,fn+match[2].rm_so,match[2].rm_eo-match[2].rm_so); 对memcpy()指定的长度是正则表达式的长度,而没有考虑路径缓冲区的大小,如果攻击者能够向特权aimage程序或通过其他第三方程序传送命令行参数的话就可以触发这个溢出。 * libewf Vnode Wrapper栈溢出 * 文件:lib/vnode_ewf.cpp 行数:70strcpy()调用中不可信任的参数未经长度检查拷贝到了栈缓冲区。如果这个命令接收到了不可信任来源的参数,就可能导致代码执行。59-70行说明了这个问题: static int ewf_open(AFFILE *af) { if(strchr(af->fname,'.')==0) return -1; // need a '.' in the filename /* See how many files there are to open */ char **files = (char **)malloc(sizeof(char *)); int nfiles = 1; files[0] = strdup(af->fname); char fname[MAXPATHLEN+1]; strcpy(fname,af->fname); af->fname字符串是由用户提供的,且不受MAXPATHLEN限制。 * AFD Vnode Wrapper栈溢出 * 文件:lib/vnode_afd.cpp 行数:405 strcpy()调用没有经过长度检查便将不可信任的参数写入到栈缓冲区。如果这个命令接收到了不可信任来源的参数,就可能导致任意指令执行。402-412行说明了这个问题: while ((dp = readdir(dirp)) != NULL){ if (last4_is_aff(dp->d_name)){ char path[MAXPATHLEN+1]; strcpy(path,af->fname); strlcat(path,"/",sizeof(path)); strlcat(path,dp->d_name,sizeof(path)); if(afd_add_file(af,path)){ return -1; } } } 如果用户对af->fname指定的值大于1025字节的话就会触发这个溢出。这个长度是可以接受的,因为很多系统都允许最大为4096字节的路径名。 * aimage Input File Name栈溢出 * 文件:aimage/aimage.cpp 行数:554 sprintf()调用没有经过长度检查便将命令行参数写入到了栈缓冲区。如果这个命令接收到了不可信任来源的参数,就可能导致任意指令执行。548-554行说明了这个问题: int getlock(class imager *im) { /* If the file exists and the PID in the file is running, * can't get the lock. */ char lockfile[MAXPATHLEN]; sprintf(lockfile,"/tmp/aimge.%s.lock",im->infile); 如果aimage二进制程序为setuid/setgid,或在CGI脚本中执行aimage程序,攻击者就可以利用这个漏洞。

英文描述:

Multiple stack-based buffer overflows in AFFLIB before 2.2.6 allow remote attackers to cause a denial of service (crash) or possibly execute arbitrary code via (1) a long LastModified value in an S3 XML response in lib/s3.cpp; (2) a long (a) path or (b) bucket in an S3 URL in lib/vnode_s3.cpp; or (3) a long (c) EFW, (d) AFD, or (c) aimage file path. NOTE: the aimage vector (3c) has since been recalled from the researcher's original advisory, since the code is not called in any version of AFFLIB.

CWE类型:
(暂无数据)
标签:
(暂无数据)
受影响产品
厂商 产品 版本 版本范围 平台 CPE
afflib afflib * - - cpe:2.3:a:afflib:afflib:*:*:*:*:*:*:*:*
解决方案
中文解决方案:
(暂无数据)
英文解决方案:
(暂无数据)
临时解决方案:
(暂无数据)
参考链接
2655 third-party-advisory
cve.org
访问
35613 vdb-entry
cve.org
访问
无标题 x_refsource_MISC
cve.org
访问
35614 vdb-entry
cve.org
访问
35615 vdb-entry
cve.org
访问
afflib-multiple-bo(33961) vdb-entry
cve.org
访问
20070427 AFFLIB(TM): Multiple Buffer Overflows mailing-list
cve.org
访问
23695 vdb-entry
cve.org
访问
CVSS评分详情
10.0
CRITICAL
CVSS向量: AV:N/AC:L/Au:N/C:C/I:C/A:C
CVSS版本: 2.0
机密性
COMPLETE
完整性
COMPLETE
可用性
COMPLETE
时间信息
发布时间:
2007-04-30 22:00:00
修改时间:
2024-08-07 13:23:50
创建时间:
2025-11-11 15:32:43
更新时间:
2025-11-11 15:49:17
利用信息
暂无可利用代码信息
数据源详情
数据源 记录ID 版本 提取时间
CVE cve_CVE-2007-2053 2025-11-11 15:17:51 2025-11-11 07:32:43
NVD nvd_CVE-2007-2053 2025-11-11 14:52:10 2025-11-11 07:41:29
CNNVD cnnvd_CNNVD-200704-602 2025-11-11 15:08:56 2025-11-11 07:49:17
版本与语言
当前版本: v3
主要语言: EN
支持语言:
EN ZH
安全公告
暂无安全公告信息
变更历史
v3 CNNVD
2025-11-11 15:49:17
vulnerability_type: 未提取 → 授权问题; cnnvd_id: 未提取 → CNNVD-200704-602; data_sources: ['cve', 'nvd'] → ['cnnvd', 'cve', 'nvd']
查看详细变更
  • vulnerability_type: 未提取 -> 授权问题
  • cnnvd_id: 未提取 -> CNNVD-200704-602
  • data_sources: ['cve', 'nvd'] -> ['cnnvd', 'cve', 'nvd']
v2 NVD
2025-11-11 15:41:29
severity: SeverityLevel.MEDIUM → SeverityLevel.CRITICAL; cvss_score: 未提取 → 10.0; cvss_vector: NOT_EXTRACTED → AV:N/AC:L/Au:N/C:C/I:C/A:C; cvss_version: NOT_EXTRACTED → 2.0; affected_products_count: 0 → 1; data_sources: ['cve'] → ['cve', 'nvd']
查看详细变更
  • severity: SeverityLevel.MEDIUM -> SeverityLevel.CRITICAL
  • cvss_score: 未提取 -> 10.0
  • cvss_vector: NOT_EXTRACTED -> AV:N/AC:L/Au:N/C:C/I:C/A:C
  • cvss_version: NOT_EXTRACTED -> 2.0
  • affected_products_count: 0 -> 1
  • data_sources: ['cve'] -> ['cve', 'nvd']