Red Hat Bugzilla – Bug 186247
CVE-2006-1342 Small information leak in SO_ORIGINAL_DST and getname() (CVE-2006-1343)
Last modified: 2007-11-30 17:06:55 EST
It appears sockaddr_in.sin_zero is not zeroed during certain operations returning IPv4 socket names, namely: - getsockopt(...SO_ORIGINAL_DST...) (2.4 and 2.6) see getorigdst() in net/ipv4/netfilter/ip_conntrack_core.c (+ in net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c in 2.6?!) - getsockname() and getpeername() (and accept()) (2.4 only) see inet_getname() in net/ipv4/af_inet.c and several unitialized bytes of kernel stack (sizeof(sin_zero) == 6 to be precise) leak to the userspace. http://marc.theaimsgroup.com/?l=linux-netdev&m=114148078223594&w=2 A patch has been included in Marcelo's 2.4 tree: http://www.kernel.org/git/?p=linux/kernel/git/marcelo/linux-2.4.git;a=commit;h=09d3b3dcfa80c9094f1748c1be064b9326c9ef2b
Fix looks ok (see bz186245) .qa.[root@ia64-21as-bos root]# ./bug 12345 data: 02 00 84 7b ac 10 3b ce 00 00 00 00 00 00 00 00 data: 02 00 30 39 c0 a8 4c 93 00 00 00 00 00 00 00 00 getsockname(as): Protocol not available .qa.[root@ia64-21as-bos root]# uname -a Linux ia64-21as-bos.lab.boston.redhat.com 2.4.18-e.62smp #1 SMP Fri May 26 18:45:16 EDT 2006 ia64 unknown
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2006-0580.html