Commit graph

808 commits

Author SHA1 Message Date
Ryan VanderMeulen
c7ce7b343c Bug 1829425 - Rename the ASAN/TSAN blacklist macros. r=decoder
Differential Revision: https://phabricator.services.mozilla.com/D176201
2023-04-24 12:47:00 +00:00
Andi-Bogdan Postelnicu
9ed92a7918 Bug 1679492 - Move away from using mozilla::tl::And. r=sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D175761
2023-04-18 12:42:13 +00:00
Jed Davis
bb633f7e44 Bug 1825682 - Avoid truncating the pids in Linux sandbox broker thread names. r=gcp
Differential Revision: https://phabricator.services.mozilla.com/D174199
2023-04-03 19:47:31 +00:00
Chris H-C
fe6d4dbee4 Bug 1824682 - Add /dev/urandom to rdd process sandbox on Linux r=gcp
On Linuxen without getrandom(), Rust (and Firefox broadly) uses /dev/urandom
as a fallback. Rust uses it for a few things, notably hashmaps... and will
panic if it can't use it.

Differential Revision: https://phabricator.services.mozilla.com/D174336
2023-03-31 20:47:16 +00:00
Mike Hommey
9b67b694bf Bug 1822484 - Rename IsDevelopmentBuild. r=necko-reviewers,media-playback-reviewers,padenot,emilio
Differential Revision: https://phabricator.services.mozilla.com/D172748
2023-03-21 21:54:27 +00:00
serge-sans-paille
860ac9660a Bug 1820573 - Make security/ buildable outside of a unified build environment r=andi,keeler
Differential Revision: https://phabricator.services.mozilla.com/D171732
2023-03-15 07:30:36 +00:00
Bob Owen
c952d27eac Bug 1772089 p5: Remove content temp dir from Windows and masOS. r=jld,haik,glandium
This defines MOZ_CONTENT_TEMP_DIR to make it easier to track this in the code.
It also uses this to guard some Linux specific uses.

Differential Revision: https://phabricator.services.mozilla.com/D168596
2023-02-24 08:44:41 +00:00
serge-sans-paille
33f0b784c6 Bug 1817721 - Make security/sandbox/linux/launch buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D170326
2023-02-21 18:57:47 +00:00
serge-sans-paille
3dc90a3d0f Bug 1817720 - Make security/sandbox/linux/gtest buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D170325
2023-02-21 18:57:46 +00:00
Marian-Vasile Laza
3db46c3cc3 Backed out 9 changesets (bug 1817715, bug 1817721, bug 1817716, bug 1817719, bug 1817720, bug 1817722, bug 1817718, bug 1817714, bug 1817717) for BP-hybrid bustages on PacketDumper.h.
Backed out changeset b582db8692bb (bug 1817722)
Backed out changeset f1d37a26a9ea (bug 1817721)
Backed out changeset f0991bfb779c (bug 1817720)
Backed out changeset 42c27b8d075b (bug 1817719)
Backed out changeset 67f07f966ef3 (bug 1817718)
Backed out changeset 408aa730ae68 (bug 1817717)
Backed out changeset 708b5529e7da (bug 1817716)
Backed out changeset f0a3ca660b68 (bug 1817715)
Backed out changeset 36af23356e21 (bug 1817714)
2023-02-21 17:57:00 +02:00
serge-sans-paille
c393e4ffb8 Bug 1817721 - Make security/sandbox/linux/launch buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D170326
2023-02-21 13:12:28 +00:00
serge-sans-paille
6e99aad6db Bug 1817720 - Make security/sandbox/linux/gtest buildable outside of a unified build environment r=andi
Differential Revision: https://phabricator.services.mozilla.com/D170325
2023-02-21 13:12:28 +00:00
Stanca Serban
771d982cfc Backed out 9 changesets (bug 1817714, bug 1817722, bug 1817721, bug 1817719, bug 1817717, bug 1817720, bug 1817715, bug 1817716, bug 1817718) for causing bp-hybrid bustages in nsFind.cpp. CLOSED TREE
Backed out changeset 8acd5a2263f9 (bug 1817722)
Backed out changeset 299f412fa933 (bug 1817721)
Backed out changeset 345907a5a764 (bug 1817720)
Backed out changeset d710584cc1ee (bug 1817719)
Backed out changeset 7a581148ea00 (bug 1817718)
Backed out changeset 0b9d922e895a (bug 1817717)
Backed out changeset 2878e5488069 (bug 1817716)
Backed out changeset 97b49222483f (bug 1817715)
Backed out changeset a556e575cc13 (bug 1817714)
2023-02-21 11:06:43 +02:00
serge-sans-paille
d8c1a73a01 Bug 1817721 - Make security/sandbox/linux/launch buildable outside of a unified build environment r=andi
Depends on D170325

Differential Revision: https://phabricator.services.mozilla.com/D170326
2023-02-21 08:05:47 +00:00
serge-sans-paille
4d9fd396cb Bug 1817720 - Make security/sandbox/linux/gtest buildable outside of a unified build environment r=andi
Depends on D170324

Differential Revision: https://phabricator.services.mozilla.com/D170325
2023-02-21 08:05:46 +00:00
Jed Davis
9904c96a1d Bug 1808320 - Filter the flags argument of pipe2(). r=gcp
Differential Revision: https://phabricator.services.mozilla.com/D166754
2023-01-27 02:36:32 +00:00
Alexandre Lissy
225f9f94b2 Bug 1802513 - Allow readlink(/proc/self/exe) in Utility sandbox for FFVPX r=gcp
Differential Revision: https://phabricator.services.mozilla.com/D163227
2022-11-30 10:10:22 +00:00
Mark Banner
7f3cba09e8 Bug 1795322 - Update toolkit modules references in remaining places. r=mossop,zeid,geckoview-reviewers,calu
Differential Revision: https://phabricator.services.mozilla.com/D160036
2022-10-26 08:06:37 +00:00
Csoregi Natalia
5f9da7b301 Backed out 12 changesets (bug 1795322) for causing multiple failures e.g. test_deletion_request_ping.py. CLOSED TREE
Backed out changeset aba25cbcda51 (bug 1795322)
Backed out changeset a4a35005ada9 (bug 1795322)
Backed out changeset 8e8d790eb0f4 (bug 1795322)
Backed out changeset db8903454bd3 (bug 1795322)
Backed out changeset 60cc71c61cad (bug 1795322)
Backed out changeset bc6a674994ad (bug 1795322)
Backed out changeset 6ac8a611f8c7 (bug 1795322)
Backed out changeset 9fb873ecfb31 (bug 1795322)
Backed out changeset c8a7a40c2a2f (bug 1795322)
Backed out changeset f2c118b6c6ce (bug 1795322)
Backed out changeset 38df43b4a70f (bug 1795322)
Backed out changeset 89aea8373411 (bug 1795322)
2022-10-25 23:47:58 +03:00
Mark Banner
fc7befc08d Bug 1795322 - Update toolkit modules references in remaining places. r=mossop,zeid,geckoview-reviewers,calu
Differential Revision: https://phabricator.services.mozilla.com/D160036
2022-10-25 19:49:28 +00:00
Alexandre Lissy
bb317b2bae Bug 1788596 - Remove UTILITY_AUDIO_DECODING_GENERIC r=nika,media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D156285
2022-10-06 15:51:56 +00:00
Alexandre Lissy
f4906ff3eb Bug 1788596 - Merge UtilityAudioDecoderSandboxPolicy into UtilitySandboxPolicy r=jld
Differential Revision: https://phabricator.services.mozilla.com/D156284
2022-10-06 15:51:55 +00:00
Sandor Molnar
9e30e89e90 Backed out 13 changesets (bug 1788596) for causing build bustage in toolkit/components/processtools/ProcInfo_common.cpp CLOSED TREE
Backed out changeset 620c85305800 (bug 1788596)
Backed out changeset 1f64776a859a (bug 1788596)
Backed out changeset 707e4c9c8801 (bug 1788596)
Backed out changeset 2221a97ebe97 (bug 1788596)
Backed out changeset d50fd0551159 (bug 1788596)
Backed out changeset 7e2ad8c47afb (bug 1788596)
Backed out changeset f87c5fb2c36f (bug 1788596)
Backed out changeset 61dd9a9eb714 (bug 1788596)
Backed out changeset a67c4ea1c8b3 (bug 1788596)
Backed out changeset 1be7af1214cf (bug 1788596)
Backed out changeset e99c7089bf93 (bug 1788596)
Backed out changeset 9a87f108548b (bug 1788596)
Backed out changeset 3dd59224f38b (bug 1788596)
2022-10-06 16:28:46 +03:00
Alexandre Lissy
1d211b0ec1 Bug 1788596 - Remove UTILITY_AUDIO_DECODING_GENERIC r=nika,media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D156285
2022-10-06 10:56:41 +00:00
Alexandre Lissy
301e159051 Bug 1788596 - Merge UtilityAudioDecoderSandboxPolicy into UtilitySandboxPolicy r=jld
Differential Revision: https://phabricator.services.mozilla.com/D156284
2022-10-06 10:56:40 +00:00
Sandor Molnar
2fb4e10f0d Backed out 13 changesets (bug 1788596) for causing browser-chrome failures in security/sandbox/test/browser_sandbox_test.js CLOSED TREE
Backed out changeset 338c18d01cfd (bug 1788596)
Backed out changeset 9d4a5c557191 (bug 1788596)
Backed out changeset 1d1d15dbe44c (bug 1788596)
Backed out changeset e9d29218beba (bug 1788596)
Backed out changeset 397e6c6587f3 (bug 1788596)
Backed out changeset 077fd3a987ca (bug 1788596)
Backed out changeset 2fc674146915 (bug 1788596)
Backed out changeset 4ebb8837ee1a (bug 1788596)
Backed out changeset 9040533dabe1 (bug 1788596)
Backed out changeset 8b27ee4d4168 (bug 1788596)
Backed out changeset 93f50c2f0b9e (bug 1788596)
Backed out changeset 3e7125be66fa (bug 1788596)
Backed out changeset 63ee00ea9be6 (bug 1788596)
2022-10-06 10:28:00 +03:00
Alexandre Lissy
272b0c9273 Bug 1788596 - Remove UTILITY_AUDIO_DECODING_GENERIC r=nika,media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D156285
2022-10-06 06:14:06 +00:00
Alexandre Lissy
592b1be2e3 Bug 1788596 - Merge UtilityAudioDecoderSandboxPolicy into UtilitySandboxPolicy r=jld
Differential Revision: https://phabricator.services.mozilla.com/D156284
2022-10-06 06:14:05 +00:00
Jed Davis
a466bdb2c4 Bug 1780312 - Part 2: Allow fstatfs in the Linux RDD sandbox policy. r=gcp
As discussed in the last patch, allowing `fstatfs` will also make
`statfs` work on any path that the process could open for reading
(subject to sandbox policy).

Differential Revision: https://phabricator.services.mozilla.com/D157542
2022-09-21 17:57:54 +00:00
Jed Davis
3b5c74387e Bug 1780312 - Part 1: Move the statfs replacement into the common sandbox policy. r=gcp
We have code to handle `statfs` calls in content processes by
intercepting them and calling `open` and `fstatfs` instead; the former
is then recursively intercepted and brokered.  This patch moves that
feature into the common policy, but does not allow `fstatfs` in any
other sandbox types (yet; see next patch).  This doesn't affect security
because the caller could have attempted the `open` and `fstatfs`
syscalls itself.

Differential Revision: https://phabricator.services.mozilla.com/D157541
2022-09-21 17:57:54 +00:00
Alexandre Lissy
b135ca0732 Bug 1780796 - Use one process per platform decoder module sandbox requirements r=alwu,nika,fluent-reviewers,flod
Differential Revision: https://phabricator.services.mozilla.com/D152545
2022-09-01 12:59:32 +00:00
Jed Davis
6a37a2ab93 Bug 1778052 - Don't reset ignored signals when starting a sandboxed child process on Linux. r=gcp
We uninstall signal handlers in child processes after clone(), because
they probably won't do the right thing if invoked in that context.
However, the current code also resets signals which were ignored;
if that disposition was set by an outside program like `nohup`, the
expectation is that it should be inherited.  This patch omits those
signals when resetting handlers (similar to what `exec` does).

Differential Revision: https://phabricator.services.mozilla.com/D151336
2022-08-09 00:35:18 +00:00
Jed Davis
4552fc73a3 Bug 1779312 - Replace uses of strerror in Linux sandbox code. r=glandium
`strerror` is async signal unsafe, and we're using it in contexts where
that's a problem: in particular in the child process after `clone()`ing,
where it can deadlock if it takes locks the parents' other threads had
held (or cause other undefined behavior), but also in the SIGSYS handler
if it's nested inside an async signal.  It's also thread-unsafe.

This is mostly a mechanical replacement with the new `SANDBOX_LOG_ERRNO`
or `SANDBOX_LOG_WITH_ERROR`; two messages had the error string in the
middle and have been adjusted.

Differential Revision: https://phabricator.services.mozilla.com/D152099
2022-07-27 19:41:05 +00:00
Jed Davis
05621d57dc Bug 1779312 - Add macros for Linux sandbox logging with an error code. r=glandium
This adds two new logging macros, which are intended to be async signal
safe:

* `SANDBOX_LOG_ERRNO`, which appends the error similarly to `perror` but
   uses the error identifier (e.g., `EINVAL` instead of `Invalid argument`).
   Unlike `perror`, formatting directives are available as for `SANDBOX_LOG`.

* `SANDBOX_LOG_WITH_ERROR` is the same thing but the error number is the
  first argument instead of using `errno`; this is useful for newer POSIX
  APIs which return an error number.

This will be used in the next patch to replace the existing use of
`strerror`, which is not async signal safe (or thread-safe).

Differential Revision: https://phabricator.services.mozilla.com/D152098
2022-07-27 19:41:05 +00:00
Jed Davis
fd918ffb96 Bug 1779312 - Rename SANDBOX_LOG_ERROR to just SANDBOX_LOG. r=glandium
Originally this was written for B2G and used the Android logging
facility, which (like syslog) includes a severity level.  However, all
current usage is on desktop where we just write to stderr, and there was
never much demand to add support for any log levels besides "error".

More importantly for the current situation, renaming the macro to
`SANDBOX_LOG` avoids confusion between `SANDBOX_LOG_ERROR` and
`SANDBOX_LOG_ERRNO` (or `SANDBOX_LOG_ERROR_ERRNO` or whatever).

Differential Revision: https://phabricator.services.mozilla.com/D152097
2022-07-27 19:41:04 +00:00
Jed Davis
4fb97a1c3d Bug 1779312 - Preliminary fixes to some misuses of SANDBOX_LOG_ERROR. r=glandium
Two minor things I noticed while converting the existing sandbox logging:

1. One call site was using %u, but that doesn't exist in this printf
   dialect, only %d; signedness is determined by the actual argument
   type via template magic.

2. POSIX functions that return an error number just return the number;
   there was one place that was negating it before use, as if it had
   come from the Linux syscall ABI.

Differential Revision: https://phabricator.services.mozilla.com/D152096
2022-07-27 19:41:04 +00:00
Jed Davis
6558ec1572 Bug 1771382 - Adjust the Linux RDD sandbox to handle the nvidia driver being loaded but not used. r=gcp
On multi-GPU systems, even though the GPU we're going to use for
accelerated video decoding is driven by Mesa, sometimes the nvidia
proprietary driver can be loaded and attempt to probe devices.  This
patch attempts to make the sandbox policy quietly return errors for
those syscalls, instead of treating them as unexpected (and crashing on
Nightly).

Differential Revision: https://phabricator.services.mozilla.com/D149652
2022-06-23 00:00:54 +00:00
Jed Davis
c807158580 Bug 1770905 - Allow GeckoMediaPlugin processes on Linux to be profiled if memfd_create is available. r=gcp,mstange,media-playback-reviewers,padenot
There are two parts to this patch; both affect only Linux:

1. The GMP sandbox policy is adjusted to allow certain syscalls used in
   shared memory creation (ftruncate and fallocate).  However, the file
   broker is not used; the process still has no access to files in /dev/shm.

2. The profiler is not initialized for GMP processes unless memfd_create
   is available (so the process can create shared memory to send
   profiling data back, without filesystem access), or the GMP sandbox
   is disabled (either at runtime or build time).

As of this patch, profiling GMP processes on Linux should succeed on
distros with kernel >=3.17 (Oct. 2014), but native stack frames won't
have symbols (and may be incorrectly unwound, not that it matters much
without symbols); see the bug for more info.  Pseudo-stack frames and
markers should work, however.

Differential Revision: https://phabricator.services.mozilla.com/D148470
2022-06-15 20:55:24 +00:00
Jed Davis
c4d1df3cf7 Bug 1770905 - Quietly reject readlink in the Linux GeckoMediaPlugin sandbox. r=gcp
The profiler may try to readlink `/proc/self/exe` to determine the
executable name; currently, its attempt to get information about loaded
objects is broken for other reasons, so this isn't helpful.  Thus, this
patch has it fail with `EINVAL` (meaning "not a symbolic link) instead of
being treated as unexpected.

(In the future, if we need to, we could simulate that syscall by
recording the target of `/proc/self/exe` before sandboxing, and
recognizing that specific case in a trap function.)

Differential Revision: https://phabricator.services.mozilla.com/D148469
2022-06-15 20:55:23 +00:00
Jed Davis
09be260cd3 Bug 1772142 - Fix the RDD sandbox to deal with Snap moving some config files. r=gcp
In the Snap environment, some system config files aren't in their usual
places, but rather in a subtree rooted at `$SNAP/gnome-platform`,
which seems to also be `$SNAP_DESKTOP_RUNTIME`.  This includes some
subdirectories of `/usr/share` that we need for EGL to work.

This could probably also have been fixed in the Snap packaging, given
that [Mozilla's][] and [Ubuntu's][] specs both put `/usr/share/libdrm`
back into its normal location, but for now it's easiest to adjust
the sandbox, given that (I think?) anything under `$SNAP` is public
information so we lose nothing by allowing read access.  (See also bug
1732580.)

[Mozilla's]: https://searchfox.org/mozilla-central/rev/973000acec0cbf7211e0fad89ca00c352aeb8384/taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in#50-52
[Ubuntu's]: https://git.launchpad.net/~mozilla-snaps/firefox-snap/+git/firefox-snap/tree/snapcraft.yaml?id=a24fb4a3f92d190299e4126ecc4132087c2aed3d#n85

Differential Revision: https://phabricator.services.mozilla.com/D148925
2022-06-10 19:03:55 +00:00
Sylvestre Ledru
42f6811d95 Bug 1519636 - Reformat recent changes to the Google coding style r=andi,media-playback-reviewers,necko-reviewers,padenot,dragana
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D148375
2022-06-07 12:32:55 +00:00
Jed Davis
b1826e7b68 Bug 1770523 - Return to not allowing X11 access in the RDD process. r=gcp
The patch for bug 1769499 lets the RDD process create a headless EGL
context using GBM, which needs access only to the GPU device files, not
the display server.  This means that the X11 access recently added in
bug 1769182 can be turned back off.

Differential Revision: https://phabricator.services.mozilla.com/D147792
2022-06-01 16:42:53 +00:00
Alexandre Lissy
0d2e553991 Bug 1770703 - Duplicated ioctl() case when building with MOZ_ASAN r=gcp
Differential Revision: https://phabricator.services.mozilla.com/D147057
2022-05-23 09:51:28 +00:00
Alexandre Lissy
74b64ad41e Bug 1769616 - Error(ENOSYS) for set_mempolicy() on Content and Utility AudioDecoder r=jld
Differential Revision: https://phabricator.services.mozilla.com/D146833
2022-05-21 00:01:28 +00:00
Jed Davis
73a294a2b8 Bug 1769182 - Allow the RDD process to use EGL under X11 on Linux. r=gcp
This patch mostly turns on the features set up by the earlier patches:
allow connecting to the X server and reading various related things
(.Xauthority, GPU device info in sysfs, etc.).  It also turns off Mesa's
shader cache in the RDD process; that shouldn't be needed here, and
disabling it lets us avoid dealing with a few things in the sandbox
policy that we'd rather not (e.g., `getpwuid`).

Differential Revision: https://phabricator.services.mozilla.com/D146275
2022-05-19 17:02:33 +00:00
Jed Davis
6798385a35 Bug 1769182 - Factor out the X11/Mesa-related parts of Linux sandbox file policies. r=gcp
This patch moves a lot of text but the idea is relatively simple and
no functional change is intended: factor out the parts of the content
sandbox policy needed to create and use an EGL context under X11.
(The `AddDriPaths` function already has some of the dependencies in a
conveniently separated form, but there are others.)

Differential Revision: https://phabricator.services.mozilla.com/D146274
2022-05-19 17:02:32 +00:00
Jed Davis
c4f9ff3229 Bug 1769182 - Allow send/recv and sendto/recvfrom in the common Linux sandbox policy. r=gcp
These syscalls (at least send/recv) are used by X11 client libraries, and
allowing them doesn't really change anything about security or attack
surface, because they're strict subsets of sendmsg/recvmsg which we
already allow everywhere for use by IPC.  So, this patch allows them in
all process types instead of only content.

Differential Revision: https://phabricator.services.mozilla.com/D146273
2022-05-19 17:02:32 +00:00
Jed Davis
cf0f678eb8 Bug 1769182 - Factor out connect() brokering in the Linux sandbox policies. r=gcp
We're going to want to let the RDD process make a (brokered) connection
to a local X server, but the seccomp-bpf plumbing for that mostly lives
in the content process sandbox policy.  This moves it into the common
policy, and subclasses can opt in.

Differential Revision: https://phabricator.services.mozilla.com/D146272
2022-05-19 17:02:31 +00:00
Jed Davis
034ed27337 Bug 1769182 - Refactor seccomp-bpf sandbox policy constructors. r=gcp
The arguments to the SandboxPolicyCommon contructor will get more
complicated as more optional features are added (e.g., the one added in
the next patch), and they're basically just mapped to boolean member
variables, so this patch lets the subclasses set them directly, to keep
things simpler and more readable.

Differential Revision: https://phabricator.services.mozilla.com/D146271
2022-05-19 17:02:31 +00:00
Iulian Moraru
cf3fad08ff Backed out 5 changesets (bug 1769182) for causing mochitest failures on browser_sandbox_test.js. CLOSED TREE
Backed out changeset f5b71a28f28b (bug 1769182)
Backed out changeset 7a64faec004f (bug 1769182)
Backed out changeset c7833370362a (bug 1769182)
Backed out changeset b91adae9bb59 (bug 1769182)
Backed out changeset cf7bb9b7414d (bug 1769182)
2022-05-14 05:20:37 +03:00