tools: hv: Netlink source address validation allows DoS
PATCH 1/1 tools: hv: Netlink source address validation allows DoS
The source code without this patch caused hypervkvpd to exit when it processed a spoofed Netlink packet which has been sent from an untrusted local user. Now Netlink messages with a non-zero nl_pid source address are ignored and a warning is printed into the syslog.
--- tools/hv/hv_kvp_daemon.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
tools/hv/hv_kvp_daemon.c +7 -1
@@ -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;
Signature · 1 line
1.7.11.7
Quoted 11 lines
-----Original Message-----
From: Tomas Hozza [mailto:[email protected]]
Sent: Thursday, November 08, 2012 4:53 AM
To: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; KY Srinivasan
Cc: Tomas Hozza
Subject: [PATCH] tools: hv: Netlink source address validation allows DoS
Quoted 6 lines
The source code without this patch caused hypervkvpd to exit when it processed a spoofed Netlink packet which has been sent from an untrusted local user. Now Netlink messages with a non-zero
nl_pidsource address are ignored and a warning is printed into the syslog.Signed-off-by Tomas Hozza <[email protected]>
Quoted 35 lines
--- tools/hv/hv_kvp_daemon.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)tools/hv/hv_kvp_daemon.c +7
-1@@ -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= (structhv_kvp_msg*)incoming_cn_msg->data;
--
1.7.11.7
tools/hv/hv_kvp_daemon.c
Quoted 13 lines · Tomas Hozza
The source code without this patch caused hypervkvpd to exit when it processed a spoofed Netlink packet which has been sent from an untrusted local user. Now Netlink messages with a non-zero
nl_pidsource address are ignored and a warning is printed into the syslog.Signed-off-by Tomas Hozza <[email protected]>Acked-by K. Y. Srinivasan <[email protected]>--- tools/hv/hv_kvp_daemon.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)tools/hv/hv_kvp_daemon.c +0
-0
Why are you setting a .c file to executable permissions? Something is really wrong here...
greg k-h
----- Original Message -----
Quoted 15 lines · Tomas Hozza
Quoted 14 lines
The source code without this patch caused hypervkvpd to exit when it processed
a spoofed Netlink packet which has been sent from an untrusted local user.
Now Netlink messages with a non-zeronl_pidsource address are ignored
and a warning is printed into the syslog.Signed-off-by Tomas Hozza <[email protected]>Acked-by K. Y. Srinivasan <[email protected]>--- tools/hv/hv_kvp_daemon.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
Quoted 5 lines
tools/hv/hv_kvp_daemon.c
Quoted 2 lines
tools/hv/hv_kvp_daemon.c +0
-0Why are you setting a .c file to executable permissions? Something is really wrong here...
I'm sorry, this is a mistake and unfortunately I missed it. Permissions should be 0644. Will check more carefully next time.
Regards,
Tomas Hozza
Hello.
Just FYI there is already a CVE name CVE-2012-5532 for this issue.
Regards,
Tomas Hozza
----- Original Message -----
Quoted 24 lines · Tomas Hozza
tools/hv/hv_kvp_daemon.c
Quoted 16 lines
The source code without this patch caused hypervkvpd to exit when it processed
a spoofed Netlink packet which has been sent from an untrusted local user.
Now Netlink messages with a non-zeronl_pidsource address are ignored
and a warning is printed into the syslog.Signed-off-by Tomas Hozza <[email protected]>Acked-by K. Y. Srinivasan <[email protected]>--- tools/hv/hv_kvp_daemon.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)tools/hv/hv_kvp_daemon.c +0
-0Why are you setting a .c file to executable permissions? Something is
really wrong here...greg k-h