> -----Original Message----- > From: Tomas Hozza [mailto:thozza@xxxxxxxxxx] > Sent: Thursday, November 08, 2012 4:53 AM > To: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; apw@xxxxxxxxxxxxx; > jasowang@xxxxxxxxxx; KY Srinivasan > Cc: Tomas Hozza > Subject: [PATCH] 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. > > Signed-off-by: Tomas Hozza <thozza@xxxxxxxxxx> Acked-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx> > --- > tools/hv/hv_kvp_daemon.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c > index 13c2a14..c1d9102 100755 > --- 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; > -- > 1.7.11.7 > > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel