Skip to contentSkip to conversation

tools/hv/hv_kvp_daemon.c: Netlink source address validation allows DoS

PATCH In review Tomas Hozza 2 participants 4 messages Nov 6, 2012 1 message not in the archive Hyper-V/Azure core and drivers

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

PATCH 1/1 tools/hv/hv_kvp_daemon.c: Netlink source address validation allows DoS

Hi.

After discussion with KY Srinivasan and Olaf Hering I'm sending you a patch for the HyperV KVP daemon distributed in linux kernel "tools/hv/hv_kvp_daemon.c".

There is an issue in the current daemon source causing hyperv kvp daemon to exit when it processes a spoofed Netlink packet which has been sent from an untrusted local user.

This patch is fixing this, so now the Netlink messages with a non-zero nl_pid source address are just ignored.

Regards,

Tomas Hozza
Associate Software Engineer
BaseOS - Brno, CZ

From 6199072f8131056efce208f04e6985d1f9968d8e Mon Sep 17 00:00:00 2001
From: Tomas Hozza <[email protected]>
Date: Mon, 5 Nov 2012 10:08:16 +0100
Subject: [PATCH] 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. Netlink messages with a non-zero nl_pid source address should just be ignored.

---
 tools/hv/hv_kvp_daemon.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
tools/hv/hv_kvp_daemon.c +7 -1
index 3ea3af2..7d74497 100755
@@ -1478,13 +1478,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
#2 lore raw
Quoted 17 lines

-----Original Message-----
From: Tomas Hozza [mailto:[email protected]]
Sent: Tuesday, November 06, 2012 10:21 AM
To: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Cc: Olaf Hering; KY Srinivasan
Subject: [PATCH] tools/hv/hv_kvp_daemon.c: Netlink source address validation allows DoS

Hi.

After discussion with KY Srinivasan and Olaf Hering I'm sending you a patch for the HyperV KVP daemon distributed in linux kernel "tools/hv/hv_kvp_daemon.c".

Quoted 6 lines

There is an issue in the current daemon source causing hyperv kvp daemon to exit when it processes a spoofed Netlink packet which has been sent from an untrusted local user.

This patch is fixing this, so now the Netlink messages with a non-zero nl_pid source address are just ignored.

You don't want to send the patch as an attachment. Please send the patch as part of the mail.

Regards,

K. Y

Quoted 7 lines

Regards,

Tomas Hozza
Associate Software Engineer
BaseOS - Brno, CZ

���{.n�+�������+%�����ݶ��w��{.n�+����{��G�����{ay�ʇڙ�,j��f���h��������z_�(�階�ݢj"���m������G������?����&���~��iO��z��v�^�m���� ������?�I�

#3 lore raw
Quoted 1 line

From 6199072f8131056efce208f04e6985d1f9968d8e Mon Sep 17 00:00:00 2001

From: Tomas Hozza <[email protected]>
Date: Mon, 5 Nov 2012 10:08:16 +0100
Subject: [PATCH] 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. Netlink messages with a non-zero nl_pid source address should just be ignored.

---
 tools/hv/hv_kvp_daemon.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
tools/hv/hv_kvp_daemon.c +7 -1
index 3ea3af2..7d74497 100755
@@ -1478,13 +1478,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 · 3 lines
1.7.11.7

----- Original Message -----
Quoted 44 lines
Quoted 25 lines

-----Original Message-----
From: Tomas Hozza [mailto:[email protected]]
Sent: Tuesday, November 06, 2012 10:21 AM
To: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Cc: Olaf Hering; KY Srinivasan
Subject: [PATCH] tools/hv/hv_kvp_daemon.c: Netlink source address validation
allows DoS

Hi.

After discussion with KY Srinivasan and Olaf Hering I'm sending you a patch for the HyperV KVP daemon distributed in linux kernel "tools/hv/hv_kvp_daemon.c".

There is an issue in the current daemon source causing hyperv kvp daemon
to exit when it processes a spoofed Netlink packet which has been sent
from an untrusted local user.

Quoted 3 lines

This patch is fixing this, so now the Netlink messages with a non-zero
nl_pid source address are just ignored.

You don't want to send the patch as an attachment. Please send the patch
as part of the mail.

Regards,

K. Y

Quoted 7 lines

Regards,

Tomas Hozza
Associate Software Engineer
BaseOS - Brno, CZ

#4 lore raw
Quoted 11 lines

-----Original Message-----
From: Tomas Hozza [mailto:[email protected]]
Sent: Tuesday, November 06, 2012 2:55 PM
To: KY Srinivasan
Cc: Olaf Hering; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH] tools/hv/hv_kvp_daemon.c: Netlink source address validation allows DoS

Quoted 8 lines

From 6199072f8131056efce208f04e6985d1f9968d8e Mon Sep 17 00:00:00 2001
From: Tomas Hozza <[email protected]>
Date: Mon, 5 Nov 2012 10:08:16 +0100
Subject: [PATCH] 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. Netlink messages with a non-zero nl_pid source address should just be ignored.

Thomas,

You need a Signed-off-by line. Please refer to the documentation on how to submit a patch.

Regards,

K. Y

Quoted 34 lines
---
 tools/hv/hv_kvp_daemon.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
tools/hv/hv_kvp_daemon.c +7 -1
index 3ea3af2..7d74497 100755
@@ -1478,13 +1478,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;
--
1.7.11.7

Quoted 46 lines

----- Original Message -----

Quoted 44 lines
Quoted 25 lines

-----Original Message-----
From: Tomas Hozza [mailto:[email protected]]
Sent: Tuesday, November 06, 2012 10:21 AM
To: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Cc: Olaf Hering; KY Srinivasan
Subject: [PATCH] tools/hv/hv_kvp_daemon.c: Netlink source address validation
allows DoS

Hi.

After discussion with KY Srinivasan and Olaf Hering I'm sending you a patch for the HyperV KVP daemon distributed in linux kernel "tools/hv/hv_kvp_daemon.c".

There is an issue in the current daemon source causing hyperv kvp daemon
to exit when it processes a spoofed Netlink packet which has been sent
from an untrusted local user.

Quoted 3 lines

This patch is fixing this, so now the Netlink messages with a non-zero
nl_pid source address are just ignored.

You don't want to send the patch as an attachment. Please send the patch
as part of the mail.

Regards,

K. Y

Quoted 7 lines

Regards,

Tomas Hozza
Associate Software Engineer
BaseOS - Brno, CZ

���{.n�+�������+%�����ݶ��w��{.n�+����{��G�����{ay�ʇڙ�,j��f���h��������z_�(�階�ݢj"���m������G������?����&���~��iO��z��v�^�m���� ������?�I�