I think we are good with respect to the Rust proxy adherence situation for ESR 60 but I think another set of (fresh) eyes could not hurt, given this is a lot of code that can in theory do nasty networking stuff and we can't rip it out as we would usually do.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
See the second part of comment:15:ticket:22176 for how I tried to deal with the Rust proxy audit. I hope we find some more stream-lined approach during this ESR cycle and/or make progress on https://bugzilla.mozilla.org/show_bug.cgi?id=1376621 and related bugs.
FWIW and just to make a note: geckodriver is about to get built my default: https://bugzilla.mozilla.org/show_bug.cgi?id=1471281. It's not getting built during esr60 and it won't get built by default if --disable-tests gets specified, which we do.
Okay, I started with gk's 3) from that ticket. First, I enumerated all packages and their dependencies (not including the vendored crates). From these packages, I searched for all occurrences of "tcp", "udp", "socket", "bind", "connect", "listener", "send", "recv", and "stream". (I don't claim these are the only functions/methods that can be used for transmitting a message).
I found these are the in-tree packages (not vendored in third_party/rust):
media/mp4parse-rust/mp4parse_capi has instances of "stream" (but that's not surprising considering it's doc comment says "Parses ISO Base Media Format aka video/mp4 streams."). All instances of stream are from audio (FLAC) track information.
xpcom/rust/xpcom/xpcom_macros has a occurrence of "bind" and a few instances of "stream". "bind" is related to FFI, and "stream" are TokenStreams.
dom/webauthn/u2f-hid-rs has "send" and "recv", but these are methods called on a std::sync::mpsc::channel. There is another wrapper method sendrecv that calls U2FHIDCont::write and U2FHIDInit::read for reading/writing the U2F device. These read/write methods specifically take a device as the first argument. Using this for making network calls seems very difficult (without digging too deep).
Step 1. Find all Cargo.toml files starting from the root of the repo. These will be useful next when we must find where the vendored crate is located within the repo.
$ find . -name Cargo.toml > all_cargo_toml
Step 2. Find the package name within each Cargo.toml files - these are the crate names we'll need later. These are of the form path/to/Cargo.toml:name = "name-of-crate".
I realized that Mozilla imported a ton of updated crates and new ones for the 60.3.0esr release. I wondered whether our proposed audit strategy can cope with such a scenario as we ideally want to make sure that those updates don't include proxy bypasses. If not, it might be worth thinking about an audit strategy that does take such point release updates into account.
We have kind of a double-check with tjr's work over in https://bugzilla.mozilla.org/show_bug.cgi?id=1376621. That needs to be enough for now, given that esr68 got just released and we need to prepare for that one.
Trac: Status: new to closed Resolution: N/Ato fixed