Closed Bug 1318012 Opened 3 years ago Closed 3 years ago
Broker Common::Send With Fd sends uninitialised stack-allocated data out of process
I ran gtests on valgrind and noticed that SandboxBrokerCommon::SendWithFd can send uninitialised stack allocated data out of process. I suspect this is due to alignment holes in char cmsg_buf in that function. Partly because it seems ungood to have an information leak, and partly to stop valgrind complaining, I'd prefer to zero initialise that array. It's only 24 bytes, at least on x86_64-linux.
A possible fix.
Running gtests on valgrind is a bit tricky. STR: run valgrind-listener in a different shell. This listens on port 1500. export MOZVFLAGS="--num-transtab-sectors=24 --px-default=allregs-at-mem-access \ --px-file-backed=unwindregs-at-mem-access --fair-sched=yes \ --fullpath-after=/MOZ/ --trace-children=yes --show-mismatched-frees=no" DISPLAY=:1.0 G_SLICE=always-malloc v312BRANCH $MOZVFLAGS \ "--trace-children-skip=/usr/bin/which,/usr/bin/file,/usr/bin/uname,/sbin/ldconfig,/usr/bin/cat,/usr/bin/awk,/usr/bin/sed,/usr/bin/whoami,/usr/bin/true,/*/bin/gcc,/usr/bin/gmake" \ --track-origins=yes --log-socket=127.0.0.1:1500 --num-callers=40 \ ./mach gtest
Attachment #8811617 - Flags: review?(jld) → review+
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
The sec-* keywords on this bug might be a bit on the high side — at worst it's an information leak of a few bytes (and I haven't verified that the bytes actually are copied to the other process), it always reads from the same place on the broker thread's stack, _and_ it needs to be combined with a sec-critical to do anything.
Should we consider backporting this to 52 for the next ESR?
Thanks for checking, but there's no benefit to uplifting this. The file broker is used only for content processes, and content sandboxing won't be enabled for non-nightly builds until 53 at the earliest. (I'm not sure if "unaffected" is the right flag, because nightly 52 *was* affected, but aurora/beta/release/etc. 52 aren't.)
We generally use the disabled status for features that aren't riding that train. Thanks!
Whiteboard: sblc2 → sblc2, [post-critsmash-triage]
You need to log in before you can comment on or make changes to this bug.