param()函数远程拒绝服务漏洞

发布日期:2010-04-29
更新日期:2010-04-30

受影响系统:
Linux kernel 2.6.x
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 39794
CVE ID: CVE-2010-1173

Linux Kernel是开放源码操作系统Linux所使用的内核。

Linux Kernel的sctp_process_unk_param()函数在处理无效参数时存在拒绝服务漏洞:

if (NULL == *errp)
*errp = sctp_make_op_error_space(asoc, chunk,
      ntohs(chunk->chunk_hdr->length));

if (*errp) {
  sctp_init_cause(*errp, SCTP_ERROR_UNKNOWN_PARAM,
     WORD_ROUND(ntohs(param.p->length)));
  sctp_addto_chunk(*errp,
   WORD_ROUND(ntohs(param.p->length)),
      param.v);

在分配error块时,对所假设的最坏情况要求分配chunk_hdr->length的数据,但在sctp_init_cause中向error块注入了sctp_errhdr_t结构,因此对于所有参数都被破坏的最坏情况中要求的数据为chunk_hdr->length+(sizeof(sctp_errhdr_t)*param_count)字节。

<*来源:Chris Guo
 
  链接:https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=584645
       
*>

建议:
--------------------------------------------------------------------------------
厂商补丁:

Linux
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpydw.html