#19413: hardened browser does not start on debian with grsec ------------------------------------------+---------------------- Reporter: tblah | Owner: tbb-team Type: defect | Status: new Priority: Medium | Milestone: Component: Applications/Tor Browser | Version: Severity: Normal | Keywords: Actual Points: | Parent ID: Points: | Reviewer: Sponsor: | ------------------------------------------+---------------------- I am running debian stable with the grsec kernel from backports. The hardened browser bundle does not start (with no error message given) but the normal browser bundle works fine. Both have MPROTECT (PaX) disabled on the bundled firefox executable. TPE is disabled for the user executing tor browser. Both browser bundles are the current versions as of today (6.5a1-hardened and 6.0.1).
No errors are displayed in /var/log/messages or dmesg. # uname -a Linux hostname 4.5.0-2-grsec-amd64 #1 SMP Debian 4.5.5-1+grsec201605291201+1~bpo8+1 (2016-06-06) x86_64 GNU/Linux # strace execve("./start-tor-browser.desktop", ["./start-tor-browser.desktop"], [/* 39 vars */]) = 0 brk(0) = 0x12e1b90 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3ac92627000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=97489, ...}) = 0 mmap(NULL, 97489, PROT_READ, MAP_PRIVATE, 3, 0) = 0x3ac9260f000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\34\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1738176, ...}) = 0 mmap(NULL, 3844640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ac92063000 mprotect(0x3ac92205000, 2093056, PROT_NONE) = 0 mmap(0x3ac92404000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a1000) = 0x3ac92404000 mmap(0x3ac9240a000, 14880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3ac9240a000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3ac9260e000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3ac9260d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x3ac9260c000 arch_prctl(ARCH_SET_FS, 0x3ac9260d700) = 0 mprotect(0x3ac92404000, 16384, PROT_READ) = 0 mprotect(0x606000, 4096, PROT_READ) = 0 mprotect(0x3ac9262e000, 4096, PROT_READ) = 0 munmap(0x3ac9260f000, 97489) = 0 brk(0) = 0x12e1b90 brk(0x1302b90) = 0x1302b90 brk(0x1303000) = 0x1303000 open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=1607760, ...}) = 0 mmap(NULL, 1607760, PROT_READ, MAP_PRIVATE, 3, 0) = 0x3ac92483000 close(3) = 0 execve("./Browser/execdesktop", ["./Browser/execdesktop", "./start-tor- browser.desktop"], [/* 39 vars */]) = 0 brk(0) = 0x2a76e00 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x37ffabbf000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=97489, ...}) = 0 mmap(NULL, 97489, PROT_READ, MAP_PRIVATE, 3, 0) = 0x37ffaba7000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libncurses.so.5", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320l\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=151120, ...}) = 0 mmap(NULL, 2246824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x37ffa781000 mprotect(0x37ffa7a5000, 2093056, PROT_NONE) = 0 mmap(0x37ffa9a4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x37ffa9a4000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\316\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=171800, ...}) = 0 mmap(NULL, 2269152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x37ffa557000 mprotect(0x37ffa57d000, 2093056, PROT_NONE) = 0 mmap(0x37ffa77c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x37ffa77c000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=14664, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x37ffaba6000 mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x37ffa353000 mprotect(0x37ffa356000, 2093056, PROT_NONE) = 0 mmap(0x37ffa555000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x37ffa555000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\34\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1738176, ...}) = 0 mmap(NULL, 3844640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x37ff9fa8000 mprotect(0x37ffa14a000, 2093056, PROT_NONE) = 0 mmap(0x37ffa349000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a1000) = 0x37ffa349000 mmap(0x37ffa34f000, 14880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x37ffa34f000 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x37ffaba5000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x37ffaba4000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x37ffaba3000 arch_prctl(ARCH_SET_FS, 0x37ffaba4700) = 0 mprotect(0x37ffa349000, 16384, PROT_READ) = 0 mprotect(0x37ffa555000, 4096, PROT_READ) = 0 mprotect(0x37ffa77c000, 16384, PROT_READ) = 0 mprotect(0x37ffa9a4000, 4096, PROT_READ) = 0 mprotect(0x6f1000, 4096, PROT_READ) = 0 mprotect(0x37ffabc6000, 4096, PROT_READ) = 0 munmap(0x37ffaba7000, 97489) = 0 open("/dev/tty", O_RDWR|O_NONBLOCK) = 3 close(3) = 0 brk(0) = 0x2a76e00 brk(0x2a77000) = 0x2a77000 open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=1607760, ...}) = 0 mmap(NULL, 1607760, PROT_READ, MAP_PRIVATE, 3, 0) = 0x37ffaa1a000 close(3) = 0 brk(0x2a78000) = 0x2a78000 brk(0x2a79000) = 0x2a79000 getuid() = 1000 getgid() = 1000 geteuid() = 1000 getegid() = 1000 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 brk(0x2a7a000) = 0x2a7a000 open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x37ffabbe000 read(3, "MemTotal: 3999936 kB\nMemF"..., 1024) = 1024 close(3) = 0 munmap(0x37ffabbe000, 4096) = 0 brk(0x2a7b000) = 0x2a7b000 rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0x37ff9fdd0e0}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0x37ff9fdd0e0}, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0x37ff9fdd0e0}, 8) = 0 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, 8) = 0 rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, {SIG_DFL, [], 0}, 8) = 0 rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 rt_sigaction(SIGQUIT, {SIG_IGN, [], SA_RESTORER, 0x37ff9fdd0e0}, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, 8) = 0 uname({sys="Linux", node="hostname", ...}) = 0 brk(0x2a7c000) = 0x2a7c000 brk(0x2a7d000) = 0x2a7d000 brk(0x2a7e000) = 0x2a7e000 brk(0x2a7f000) = 0x2a7f000 stat("/home/user/tor-browser", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0 stat(".", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0 getpid() = 8176 open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=26258, ...}) = 0 mmap(NULL, 26258, PROT_READ, MAP_SHARED, 3, 0) = 0x37ffabb8000 close(3) = 0 brk(0x2a80000) = 0x2a80000 getppid() = 8173 brk(0x2a81000) = 0x2a81000 brk(0x2a82000) = 0x2a82000 getpgrp() = 8173 rt_sigaction(SIGCHLD, {0x4464a0, [], SA_RESTORER|SA_RESTART, 0x37ff9fdd0e0}, {SIG_DFL, [], SA_RESTORER|SA_RESTART, 0x37ff9fdd0e0}, 8) = 0 getrlimit(RLIMIT_NPROC, {rlim_cur=15542, rlim_max=15542}) = 0 brk(0x2a83000) = 0x2a83000 brk(0x2a84000) = 0x2a84000 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 open("./Browser/execdesktop", O_RDONLY) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x3dcbdbca8e0) = -1 ENOTTY (Inappropriate ioctl for device) lseek(3, 0, SEEK_CUR) = 0 read(3, "#!/bin/bash\n\nTBB_START_PROG=\"$(g"..., 80) = 80 lseek(3, 0, SEEK_SET) = 0 getrlimit(RLIMIT_NOFILE, {rlim_cur=64*1024, rlim_max=64*1024}) = 0 fcntl(255, F_GETFD) = -1 EBADF (Bad file descriptor) dup2(3, 255) = 255 close(3) = 0 fcntl(255, F_SETFD, FD_CLOEXEC) = 0 fcntl(255, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) fstat(255, {st_mode=S_IFREG|0755, st_size=284, ...}) = 0 lseek(255, 0, SEEK_CUR) = 0 brk(0x2a85000) = 0x2a85000 read(255, "#!/bin/bash\n\nTBB_START_PROG=\"$(g"..., 284) = 284 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 brk(0x2a86000) = 0x2a86000 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 pipe([3, 4]) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0 lseek(255, -155, SEEK_CUR) = 129 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x37ffaba49d0) = 8177 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigaction(SIGCHLD, {0x4464a0, [], SA_RESTORER|SA_RESTART, 0x37ff9fdd0e0}, {0x4464a0, [], SA_RESTORER|SA_RESTART, 0x37ff9fdd0e0}, 8) = 0 close(4) = 0 read(3, "./Browser/start-tor-browser --de"..., 128) = 37 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8177, si_uid=1000, si_status=0, si_utime=0, si_stime=0} --- wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, NULL) = 8177 wait4(-1, 0x3dcbdbc9c90, WNOHANG, NULL) = -1 ECHILD (No child processes) rt_sigreturn() = 37 read(3, "", 128) = 0 close(3) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigaction(SIGINT, {0x443660, [], SA_RESTORER, 0x37ff9fdd0e0}, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, 8) = 0 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, {0x443660, [], SA_RESTORER, 0x37ff9fdd0e0}, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 read(255, "\nshift\n\nif [ \"$#\" -ge 1 ]\nthen\n "..., 284) = 155 write(1, "Launching './Browser/start-tor-b"..., 52Launching './Browser /start-tor-browser --detach'... ) = 52 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 brk(0x2a87000) = 0x2a87000 rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [INT CHLD], 8) = 0 rt_sigprocmask(SIG_SETMASK, [INT CHLD], NULL, 8) = 0 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x37ffaba49d0) = 8182 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigaction(SIGINT, {0x443660, [], SA_RESTORER, 0x37ff9fdd0e0}, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, 8) = 0 wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 8182 rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x37ff9fdd0e0}, {0x443660, [], SA_RESTORER, 0x37ff9fdd0e0}, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8182, si_uid=1000, si_status=0, si_utime=0, si_stime=0} --- wait4(-1, 0x3dcbdbc9ed0, WNOHANG, NULL) = -1 ECHILD (No child processes) rt_sigreturn() = 0 read(255, "", 284) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 exit_group(0) = ? +++ exited with 0 +++ -- Ticket URL: <https://trac.torproject.org/projects/tor/ticket/19413> Tor Bug Tracker & Wiki <https://trac.torproject.org/> The Tor Project: anonymity online _______________________________________________ tor-bugs mailing list tor-bugs@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs