[BusyBox] Insmod segfaults, even on most recent version

David Douthitt ssrat at mailbag.com
Mon Jan 29 21:12:43 UTC 2001


I've attached a document containing output from

# busybox
# ldd busybox
# strace busybox
# ltrace busybox

This is my environment:

// shell: ash
// busybox: most recent (0.49) from CVS
// kernel: 2.2.19pre7
// Openwall patches
// libsafe library in /etc/ld.so.preload
// linuxrc-always and initrd patches (for LRP use)
// ix86 (Pentium 100)

Previously, when using gdb, the "Segmentation Fault" resulting 
from trying to debug "busybox insmod" would cause not just 
busybox to stop but also gdb.

Is there something going on in busybox that libsafe and/or 
Openwall are catching and cancelling?

-- 
David Douthitt
UNIX Systems Administrator
HP-UX, Linux, Unixware
n9ubh at callsign.net

-------------- next part --------------
Problems with:

BusyBox v0.49 (2001.01.29-19:32+0000) multi-call binary -- GPL2

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

	BusyBox is a multi-call binary that combines many common Unix
	utilities into a single executable.  Most people will create a
	link to busybox for each function they wish to use, and BusyBox
	will act like whatever it was invoked as.

Currently defined functions:
	busybox, cat, chgrp, chmod, chown, clear, cp, cut, date, dd, df,
	dmesg, du, dutmp, false, fdflush, find, grep, gunzip, gzip, halt,
	head, hostname, id, init, insmod, kill, killall, ln, loadkmap,
	logger, ls, makedevs, md5sum, mkdir, mkfs.minix, mknod, mktemp,
	more, mount, mv, nslookup, ping, printf, rdate, renice, rm, rmdir,
	rmmod, sort, swapoff, swapon, sync, tail, tar, tee, touch, tr,
	true, umount, uname, uniq, update, uptime, usleep, wc, which,
	whoami, xargs, zcat

Requirements (ldd):

	/lib/libsafe.so.1 => /lib/libsafe.so.1 (0x0011d000)
	libc.so.6 => /lib/libc.so.6 (0x00121000)
	libdl.so.2 => /lib/libdl.so.2 (0x001c7000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00110000)

libsafe is a library that is supposed to prevent most buffer overflow
exploits by making the buffer non-executable.  libdl seems to be
required if libsafe is required; removing libsafe has no effect.

Debugging (ltrace):

Reading config file `/etc/ltrace.conf'...
Reading config file `/root/.ltrace.conf'...
Reading symbol table from /bin/busybox...
Executing `/bin/busybox'...
PID=1370
Enabling breakpoints for pid 1370...
event: syscall (45)
SYS_brk(0, 0, 0x0011b400, 0xbffffe88, 130033 <unfinished ...>
event: sysret (45)

Debugging (strace):

execve("/bin/busybox", ["busybox", "insmod", "./eepro100.o"], [/* 14 vars */]) = 0
brk(0



More information about the busybox mailing list