积极预防 及时发现
快速响应 力保恢复
Pico server 畸形 HTTP POST 请求溢出缺陷 (APP,补丁)
发布时间:2002-12-03 信息来源:管理员

涉及程序: Pserv Pserv 2.0 beta3 / beta2 / beta1 描述: Pico server 畸形 HTTP POST 请求溢出缺陷 详细: Pico server 是一款用C语言编写的小型Web服务器程序,应用在少数平台上。 Pico Server 对畸形 HTTP POST 请求不能进行正确处理,远程攻击者可利用此缓冲溢出缺陷进行拒绝服务攻击。 用户如无法确定自己的系统是否存在缺陷,可使用下面代码进行测试: bash# cat *.c | grep flow printf(\"Buffer overflow on document path parsing\\n\"); { /* checking for buffer overflow */ printf(\"Buffer overflow on POST read\\n\"); if (totalRead > BUFFER_SIZE) /* checking for buffer overflow */ printf("Buffer overflow on request read\n"); bash# Pico Server 的这个缓冲溢出缺陷存在main.c的第184行(精心构建并提交的POST数据可发生单字节溢出,导致系统产生拒绝服务): 178 reqSize = strlen(req); 179 i = 0; j = 0; 180 while (i < MAX_REQUEST_LINES && j < reqSize) 181 { 182 k = 0; 183 while (req != `\n`) 184 token = req ; // here. 185 token = `\0`; /* the line read ends with an \n we skipit and count it as read */ 186 j++; 187 strcpy(reqArray , token); 188 i++; 189 } 受影响系统: Pserv Pserv 2.0 beta3 Pserv Pserv 2.0 beta2 Pserv Pserv 2.0 beta1 攻击方法: 精心构建并提交的POST数据可发生单字节溢出,导致系统产生拒绝服务 解决方案: 第三方补丁: === http.patch === --- main.c Tue Nov 19 16:48:40 2002 +++ main.patch.c Tue Nov 19 16:15:51 2002 @@ -176,6 +176,9 @@ /* we copy the header lines to an array for easier parsing */ reqSize = strlen(req); + + req =`\n`; /* Limit! */ + i = 0; j = 0; while (i < MAX_REQUEST_LINES && j < reqSize) { === eof ===