This talk is going to go through the experience pushing the boundaries on sandboxing in the Chrome browser
What is sandboxing?
* breaking something into lower/higher privileged process
* necessary for browers, OSes, VMs etc.
Chromium uses to reduce the amount of privilege of the application: also to reduce the amount of privilege for code that touches websites (renderer)
* split different websites into different processes
* good defense against logic bugs (e.g. same-origin policy)
Good sandboxing is table stakes..
* necessary to contain a variety of classes of bugs, leaks, and vulnerabilities.
* not, by itself, sufficient for Chromium, nor arbitrarily applicable.
We’re pretty sure Chromium is near the practical limit…
...but your application might still have significant sandboxing headroom left. Use it!
The fundamental building block available to us is the process boundary.
* Fault isolation
* System call filtering
* Low-privilege principals (UID/GID, SID, Access Tokens)
* Segmented memory someday…?
OS mechanisms (Android)
* isolatedProcesses
* Medium-grained system call filtering (certain predefined Seccomp-BPF policies)
* SELinux
OS mechanisms (Linux, Chrome OS)
* Fine-grained system call filtering (freer use of Seccomp-BPF)
* User/PID/network namespaces
* Legacy setuid helper where namespaces not available
But can't sandbox everything (or at a fine-enough grain)!
* Process space overhead: Large on Windows, very large on Android
* Process startup latency: High on Windows, very high on Android
How do we decide when to create a new renderer process?
* Site isolation: one process per renderer (more or less) to keep different sites apart
* ... plus GPU
* ... plus network
* ... plus storage
Moving forward: memory safety [hey, a theme in the session!]
* Sandboxing isn't enough: still significant browser, kernel, kernel attack surface available
* Need to not just contain bugs, but to mitigate and hopefully even solve them.
Investigating safer language options
* Java/Kotlin on Android
* Swift on iOS/macOS
* Rust
* WebAssembly?
Migrating to memory-safe languages:
* Not all-or-nothing! Thankfully!
* We can focus on hot spots: areas of particularly large, soft, or easily-accessible attack surface.
* Interoperability and overall complexity are huge concerns.
* Learning curve, too.
Improving memory-unsafe languages
* Smarter pointer types (MiraclePtr)
* Garbage collection (expanding the use of Oilpan) and semi-GC (MiracleScan)
* Defining undefined behavior
* New hardware features (memory tagging, control flow integrity)
We need to get to the "acceptance" stage as Alex describes [see last talk thread]
Chromium High+ severity vulns breakdown [diagram]
Platform security teams throughout industry — including Microsoft, Android, and Apple — are seeing same problems we are: about ⅔ to ¾ of security-relevant bugs are due to memory unsafety
All seem to be looking in the same direction for solutions: further reduce privilege, increase memory safety.
Create significant asymmetries that favor defense — attackers are less able to get what they want with a single bug (need a chain of bugs), vulns harder to find+exploit
The future
* Sandboxing has given Chromium 10+ good years!
* The next 10 require something more: memory safety
[end of talk]
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Last talk of #enigma2021 by Marcus Botacin: "DOES YOUR THREAT MODEL CONSIDER COUNTRY AND CULTURE? A CASE STUDY OF BRAZILIAN INTERNET BANKING SECURITY TO SHOW THAT IT SHOULD!"
The outcomes I get from my analysis of malware I find in Brazil were quite different than what I saw in analysis of malware from other researchers. Why? Because the malware attacks were different!
The Brazilian banking system:
* let's move banking to computers (80s)to keep up with hyperinflation
* desktop clients for users... and the attackers migrated from physical to fake desktop app attacks -- that would only work in Brazil because that's where the banking was
Content note: this talk is about online abuse as some of the content may be upsetting
Got pulled into this after a screenshot of a class assignment sending folks to post on 4chan to post about race/gender/etc issues got posted on 4chan without the email address... so the 4chan folks thought it was @gianluca_string. It wasn't, but they doxxed and harassed anyway
Kicking off the last session of #enigma2021, @katestarbird is speaking about an extremely pressing topic: "ONLINE RUMORS, MISINFORMATION AND DISINFORMATION: THE PERFECT STORM OF COVID-19 AND ELECTION2020"
Next up at #enigma2021, Alex Gaynor from @LazyFishBarrel (satirical security company) will be talking about "QUANTIFYING MEMORY UNSAFETY AND REACTIONS TO IT"
Look for places where there are a lot of security issues being handled one-off rather than fixing the underlying issue
We tried to fix credential phishing mostly by telling people to be smarter, rather than fixing the root cause: people being able to use phished credential.
Zoom's launched end-to-end encryption 5 months after the white paper was published
* prevents eavesdroppers between users who are speaking to each other
* protection against compromised servers