Nmap Development mailing list archives
Segfault in get_ping_pcap_result() from massping() on x86_64
From: Brandon Enright <bmenrigh () ucsd edu>
Date: Wed, 8 Oct 2008 22:25:50 +0000
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Developers,
I recently noticed that starting at or before Nmap 4.76 ping scans of
very large hostgroups causes Nmap to segfault. To get the hostgroup
large enough it seem that --randomize-hosts is required. Here is the
shortest command I can use to reproduce the tests:
nmap -P S139 -sP --randomize-hosts -n a.b.0.0/16
If -T5 is specified the scan crashes sooner. -PS can be changed to -PA
without affecting the crash. Strangely, if I compile Nmap with -g and
don't strip the binary the crash becomes hard to reproduce. Instead of
crashing every scan it crashes once every 20 scans or so. If I run
Nmap with "valgrind --tool=memcheck" it gets stuck in an infinite loop
and doesn't crash. Also, if I run Nmap with -d3 it doesn't seem to
crash.
Even with the above caveats, I've managed to get a core dump and
backtrace with the debug symbols intact:
Program terminated with signal 11, Segmentation fault.
#0 0x0000000000445df4 in get_ping_pcap_result (USI=0x2bdf900,
stime=0x7fff33bf9160) at scan_engine.cc:4360
4360 if (hss->target->v4hostip()->s_addr == ip->ip_src.s_addr) {
(gdb) bt
#0 0x0000000000445df4 in get_ping_pcap_result (USI=0x2bdf900,
stime=0x7fff33bf9160) at scan_engine.cc:4360
#1 0x0000000000446f43 in waitForResponses (USI=0x2bdf900)
at scan_engine.cc:4579
#2 0x0000000000449a87 in ultra_scan (Targets=@0x7fff33bf9340,
ports=<value optimized out>, scantype=PING_SCAN, to=0x6ad964)
at scan_engine.cc:4853
#3 0x0000000000420522 in massping (hostbatch=0x4000, num_hosts=16384,
ports=0x7fff33bfc060) at targets.cc:462
#4 0x0000000000420a81 in nexthost (hs=0x1b987d0, exclude_group=0x0,
ports=0x7fff33bfc060, pingtype=80) at targets.cc:616
#5 0x000000000041bfdb in nmap_main (argc=9, argv=0x7fff33bff408)
at nmap.cc:1607
#6 0x0000000000418417 in main (argc=9, argv=0x7fff33bff408) at main.cc:224
(gdb) list
4355 continue;
4356 }
4357
4358 if (ping->type == 3) {
4359 /* Destination unreachable. */
4360 if (hss->target->v4hostip()->s_addr == ip->ip_src.s_addr) {
4361 /* The ICMP error came directly from the target, so it's up. */
4362 goodone = true;
4363 newstate = HOST_UP;
4364 } else {
(gdb) p hss
$1 = (HostScanStats *) 0x0
(gdb) p ip
$2 = <value optimized out>
(gdb) p ip->ip_src
Cannot access memory at address 0xc
I haven't determined what commit caused this crash. A also haven't
determined how hss manages to become null. I'm willing to dig into
this more to help someone troubleshoot this problem.
In the mean time, I've added -d3 to my production scans which seems to
have allowed them to continue.
Brandon
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
iEYEARECAAYFAkjtM3UACgkQqaGPzAsl94JU8ACgkN9FI6eZIBcrIPnlJulQns80
jaQAn3WR8nc2OCgkVoEWl+H6LTikc5Rc
=9TYO
-----END PGP SIGNATURE-----
_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://SecLists.Org
Current thread:
- Segfault in get_ping_pcap_result() from massping() on x86_64 Brandon Enright (Oct 08)
