daemon.c' Netlink报文处理拒绝服务漏洞

发布日期:2012-11-27
更新日期:2012-11-29

受影响系统:
Linux kernel 2.6.x
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 56710
CVE(CAN) ID: CVE-2012-5532

Linux Kernel是Linux操作系统的内核。

Linux Kernel hypervkvpd在处理伪造的Netlink报文时会意外退出,本地攻击者可利用此漏洞造成拒绝服务。

修补后的代码与问题代码的比较如下:(修补后的代码在处理非0的addr.nl_pid情况时只告警,而不结束返回)
---------------------------------------------------

--- a/tools/hv/hv_kvp_daemon.c
+++ b/tools/hv/hv_kvp_daemon.c
@@ -1486,13 +1486,19 @@ int main(void)
                len = recvfrom(fd, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0,
                                addr_p, &addr_l);

-              if (len < 0 || addr.nl_pid) {
+              if (len < 0) {
                        syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s",
                                        addr.nl_pid, errno, strerror(errno));
                        close(fd);
                        return -1;
                }

+              if (addr.nl_pid) {
+                      syslog(LOG_WARNING, "Received packet from untrusted pid:%u",
+                                      addr.nl_pid);
+                      continue;
+              }
+
                incoming_msg = (struct nlmsghdr *)kvp_recv_buffer;
                incoming_cn_msg = (struct cn_msg *)NLMSG_DATA(incoming_msg);
                hv_msg = (struct hv_kvp_msg *)incoming_cn_msg->data;

---------------------------------------------------

<*来源:Florian Weimer (Weimer@CERT.Uni-Stuttgart.DE
 
  链接:
        https://bugzilla.redhat.com/show_bug.cgi?id=877572
        https://git.kernel.org/?p=linux/kernel/git/gregkh/char-misc.git;a=commit;h=95a69adab9acfc3981c504737a2b6578e4d846ef
*>

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

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

https://git.kernel.org/?p=linux/kernel/git/gregkh/char-misc.git;a=commit;h=95a69adab9acfc3981c504737a2b6578e4d846ef

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

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