BUGTRAQ ID: 35510
CVE(CAN) ID: CVE-2009-0689
OpenBSD、NetBSD、FreeBSD都是流行的BSD操作系统,是Unix的衍生系统。
OpenBSD、NetBSD、FreeBSD的dtoa实现中存在数组溢出漏洞。在src/lib/libc/gdtoa/gdtoaimp.h中:
最大的Kmax长度为15,如果提供了更大的值(如17),程序就会溢出freelist数组,bss为0x1。
以NetBSD为例:
程序在misc.c中崩溃:
这里
rv->k = k;
或
freelist[k] = rv->next;
FreeBSD FreeBSD 7.2
FreeBSD FreeBSD 6.4
NetBSD NetBSD 5.0
OpenBSD OpenBSD 4.5
厂商补丁:
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/gdtoa/gdtoaimp.h
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/gdtoa/misc.c
printf %1.262159f 1.1
printf %11.2109999999f
printf %11.2009999999f
printf %11.2009999999f
#!/usr/local/bin/perl
printf "%0.4194310f", 0x0.0x41414141;