Security Study of Chrome's Process-based Sandboxing

 
The Web/Local Boundary Is Fuzzy
A Security Study of Chrome’s Process-based Sandboxing
 
Yaoqi Jia
, Zheng Leong Chua, Hong Hu,
Shuo Chen, Prateek Saxena, Zhenkai Liang
 
National University of Singapore
Microsoft Research
Monolithic Browser Design
1
 
Web Page
 
Local System
 
Files
 
Apps
 
Sensors
 
 
 
Web/Local
Boundary
2
nd
 Generation Browser:
Process-based Isolation
2
 
Local System
 
 
    Process-based sandboxing – process boundary
Browser           kernel
Is
 
the
 
Web/Local
 
Boundary
 
Sufficient?
3
Stress
 
testing,
bug
 
bounty,
fuzzing …
Web/Local
Boundary
Browser kernel
  Used by most modern browsers
Local System
Contributions
4
 
  The Web
/Local
 
Boundary
 
is
 
Fuzzy !
The Web
/Local
 
Boundary
 
is
 
Fuzzy
5
 
 
 
Before
 
2016
Browser Kernel
 
  Landscape changes --- Rise of the cloud services
 
Web/Local
Boundary
 
A new path to
access local system
 
Fuzzy
 
Attacks due to
Fuzzy Web/Local Boundary
6
7
Browser Kernel
Dropbox
Client
Attack Example 1: Drop a Malware
www.evil.com
8
Browser Kernel
Dropbox
Client
Example 2: Steal a Local File
www.evil.com
9
Browser Kernel
Google
Play
www.evil.com
Example 3: Install Malware
10
Browser Kernel
OpenStack
www.evil.com
Example 4: Remote System Control
 
 rm -rf
/
But 
 Chrome’s Protections
 
Same-Origin Policy (SOP)
Control-Flow Integrity (CFI) 
on the way
In-Memory Partitioning
Internal Randomization
11
SOP Enforcement in Chrome
12
 
 
 
www.dropbox.com
Various SOP checks for cross-origin
read/write: contentDocument,
frames, etc.
www.evil.com
SOP
Checks
bool SecurityOrigin::canAccess() {
    if (m_universalAccess)
        return true;
    if (this == other)
        return true;
 
......
    return canAccess;}
Control-Flow Integrity
13
  CFI: control flows cannot be modified (on the way)
 
Check1
 
Check2
 
Check3
<func1>
 
 
lea
 
func2,
 
%eax
 
 
jmp
 *
%eax
 
<func2>
 
push %ebx
 
Bypass SOP & CFI
14
 
  Corrupt critical data
  Not modify control flow
  Bypass SOP checks
Check1
Check2
Check3
bool SecurityOrigin::canAccess() {
    if (m_universalAccess)
        return true;
    if (this == other)
        return true;
 
......
    return canAccess;
}
True
True
True
When m_universalAccess is
true, the check always passes
In-Memory Partitioning
15
  Separate different types of objects in 4 partitions
  Surrounded by inaccessible guard pages
Different Objects
Node
Layout
Buffer
General
Guard Page
Cross-Partition References
to Bypass Partitioning
16
  Link objects in one partition to another
Node
Buffer
Layout
General
  Pervasive & often under the control of scripts
  Dereference pointers to cross partition boundaries 
Partition-based Randomization
17
  Randomize the base address of each partition
  Guard pages cannot be read/written
Node
Layout
Buffer
General
Fingerprinting Technique
to Bypass ASLR & Find Critical Data
18
  Special
 
pattern
 
for
 
security
 
monitor objects
  
Linearly scan memory
 class PLATFORM_EXPORT SecurityOrigin
  {   ......
      String m_protocol;
      String m_host;
      String m_domain;
      String m_suboriginName;
      unsigned short m_port;
      bool m_isUnique;
      bool m_universalAccess;
      bool m_domainWasSetInDOM;
      bool m_canLoadLocalResources;
      bool m_blockLocalAccessFromLocalOrigin;
      bool m_needsDatabaseIdentifierQuirkForFiles;
};
Match
 
the pattern
……
B9 BB 88 20
B9 CC 91 10
B9 CC 91 10
00 00 00 00
00 00 00 00
00 00 00 00
……
protocol
host
domain
suborigin
m_universalAccess
01
Find the Address of Vulnerable Array
19
  Create a predictable “fingerprinting” object
  Linearly scan memory to find the object’s location
……
B9 DD 11 10
……
41 41 41 41
41 41 41 41
……
B9 DD 22 30
B9 DD 22 30
B9 DD 22 30
B9 DD 22 30
……
Vulnerable Array
Fingerprinting Object
Object Pointer
Object Pointer
… …
 
Offset
Count the offset when
finding the pattern
Most frequent data is
the address of
fingerprinting object
Addr
base
 = Addr
obj
- Offset
Bypass  SOP & In-Memory Protections
20
 
 CFI
 
 In-memory partitioning
 
 Internal ASLR
Seems difficult to bypass
 
 
Data-oriented attacks
 
Cross-partition references
 
 
Fingerprinting technique
 
 
SOP
 
 
Data-oriented attacks
Attack Implementation
 
Work on proper memory error vulnerabilities
POC: CVE
 
2014-1705
 
heap
 
overflow
 
in
 
V8
 
(Chrome 33)
Over
 
10
 
SOP-related
 
flags
 
(Chrome 45)
End-to-end attacks
Access files on the local system
Dropbox, Google Drive
Interact with local system
OpenStack, Google Play
Misuse system sensors
Fitbit, Runkeeper
21
 
Protections against Web/Local Attacks
 
22
Web Browser-Side
 
Protection
 
Memory safety
Huge code base, e.g., +5 million LOC for Chrome
Software-based fault isolation (SFI)
Cross-partition references
23
Light-Weight Mitigation
 
Identify critical data
ASLR to hide the address of critical data
Address of the critical data is not saved in user space
Average 3.8% overhead
Raise the bar of Web/Local attacks
24
Node
Buffer
Layout
General
Disclosure to Google
 
Fine-grained process-based isolation
Chrome’s
 
Out
-of-Process
 
iframes
Performance
 
overhead
 
and
 
massive refactoring
25
 
www.dropbox.com
 
www.evil.com
 
www.dropbox.com
 
www.evil.com
Cloud Service-Side
 
Protection
 
Distinguish requests of its site from client
Restrict the privileges for the web interface
Require the user’s consent
26
Browser Kernel
Web/Local
Boundary
Conclusion
 
Concrete Attacks on Web/Local Boundary
Access
 
local
 
files,
 
system control
Using
 
1
 
bug
 
in
 
renderer
 
process
Attack Details
Bypass
 
in-memory
 
protections
 
 
Solutions
Imperfect existing solutions
Open to researchers
27
Video
 
at
 
https://youtu.be/fIHaiQ4btok
POC 
at
 
https://github.com/jiayaoqijia/Web-Local-Attacks
 
Thanks
 
Yaoqi Jia
(Graduating in 2017)
jiayaoqi@comp.nus.edu.sg
http://www.comp.nus.edu.sg/~jiayaoqi/
 
28
Slide Note
Embed
Share

Investigate the effectiveness of process-based sandboxing in modern browsers like Chrome, focusing on the fuzzy boundaries between the web and local systems. The study explores vulnerabilities and potential attacks, proposing lightweight solutions to mitigate risks presented by imperfect existing security measures.

  • Security
  • Chrome
  • Process-based Sandboxing
  • Fuzzy Boundaries
  • Vulnerabilities

Uploaded on Jul 15, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. The Web/Local Boundary Is Fuzzy A Security Study of Chrome s Process-based Sandboxing Yaoqi Jia, Zheng Leong Chua, Hong Hu, Shuo Chen, Prateek Saxena, Zhenkai Liang National University of Singapore Microsoft Research

  2. Monolithic Browser Design Web Page EXE Local System Files Apps Sensors 1

  3. 2nd Generation Browser: Process-based Isolation Process-based sandboxing process boundary Web Page Web/Local Boundary Browser kernel Local System 2

  4. Is the Web/Local Boundary Sufficient? Used by most modern browsers Web Page B Web Page A Web/Local Boundary Browser kernel Local System Stress testing, bug bounty, fuzzing 3

  5. Contributions The Web/Local Boundary is Fuzzy ! Concrete Access local files, system control Use 1 bug in renderer process Attacks Attack Bypass in-memory protections using data-oriented attacks Details Imperfect existing solutions Our light-weight mitigation Solutions 4

  6. The Web/Local Boundary is Fuzzy Landscape changes --- Rise of the cloud services Before 2016 Web Page Fuzzy Cloud Web/Local Boundary A new path to access local system Browser Kernel Local System Client 5

  7. Attacks due to Fuzzy Web/Local Boundary 6

  8. Attack Example 1: Drop a Malware www.evil.com Dropbox Cloud Browser Kernel Local System Dropbox Client 7

  9. Example 2: Steal a Local File www.evil.com Dropbox Cloud Browser Kernel Local System Dropbox Client 8

  10. Example 3: Install Malware www.evil.com Google Play Server Browser Kernel Local System (Android) Google Play 9

  11. Example 4: Remote System Control www.evil.com rm -rf / OpenStack Server Browser Kernel Local System (VM) OpenStack 10

  12. But Chromes Protections Same-Origin Policy (SOP) Control-Flow Integrity (CFI) on the way In-Memory Partitioning Internal Randomization 11

  13. SOP Enforcement in Chrome www.evil.com bool SecurityOrigin::canAccess() { if (m_universalAccess) return true; if (this == other) return true; ...... return canAccess;} SOP Checks www.dropbox.com Various SOP checks for cross-origin read/write: contentDocument, frames, etc. 12

  14. Control-Flow Integrity CFI: control flows cannot be modified (on the way) <func1> lea func2, %eax jmp *%eax Check1 Check2 <func2> push %ebx Check3 13

  15. Bypass SOP & CFI Corrupt critical data Not modify control flow Bypass SOP checks bool SecurityOrigin::canAccess() { if (m_universalAccess) return true; if (this == other) return true; ...... return canAccess; } Check1 True Check2 True When m_universalAccess is true, the check always passes Check3 True 14

  16. In-Memory Partitioning Separate different types of objects in 4 partitions Surrounded by inaccessible guard pages Different Objects Guard Page Node Layout Buffer General 15

  17. Cross-Partition References to Bypass Partitioning Link objects in one partition to another Pervasive & often under the control of scripts Dereference pointers to cross partition boundaries General Buffer Layout Node 16

  18. Partition-based Randomization Randomize the base address of each partition Guard pages cannot be read/written Node Layout Buffer General 17

  19. Fingerprinting Technique to Bypass ASLR & Find Critical Data Special pattern for security monitor objects Linearly scan memory class PLATFORM_EXPORT SecurityOrigin { ...... String m_protocol; String m_host; String m_domain; String m_suboriginName; unsigned short m_port; bool m_isUnique; bool m_universalAccess; bool m_domainWasSetInDOM; bool m_canLoadLocalResources; bool m_blockLocalAccessFromLocalOrigin; bool m_needsDatabaseIdentifierQuirkForFiles; }; protocol host B9 BB 88 20 B9 CC 91 10 B9 CC 91 10 00 00 00 00 00 00 00 00 00 00 00 00 Match the pattern domain suborigin 01 m_universalAccess 18

  20. Find the Address of Vulnerable Array Create a predictable fingerprinting object Linearly scan memory to find the object s location Count the offset when finding the pattern B9 DD 11 10 41 41 41 41 41 41 41 41 Vulnerable Array Offset Fingerprinting Object Most frequent data is the address of fingerprinting object Object Pointer B9 DD 22 30 B9 DD 22 30 B9 DD 22 30 B9 DD 22 30 Object Pointer Addrbase = Addrobj- Offset 19

  21. Bypass SOP & In-Memory Protections SOP Data-oriented attacks Seems difficult to bypass CFI Data-oriented attacks In-memory partitioning Cross-partition references Internal ASLR Fingerprinting technique 20

  22. Attack Implementation Work on proper memory error vulnerabilities POC: CVE 2014-1705 heap overflow in V8 (Chrome 33) Over 10 SOP-related flags (Chrome 45) End-to-end attacks Access files on the local system Dropbox, Google Drive Interact with local system OpenStack, Google Play Misuse system sensors Fitbit, Runkeeper 21

  23. Protections against Web/Local Attacks 22

  24. Web Browser-Side Protection Memory safety Huge code base, e.g., +5 million LOC for Chrome Software-based fault isolation (SFI) Cross-partition references General Buffer Layout Node 23

  25. Light-Weight Mitigation Identify critical data ASLR to hide the address of critical data Address of the critical data is not saved in user space Average 3.8% overhead Raise the bar of Web/Local attacks General Buffer Layout Node 24

  26. Disclosure to Google Fine-grained process-based isolation Chrome s Out-of-Process iframes Performance overhead and massive refactoring www.evil.com www.evil.com www.dropbox.com www.dropbox.com 25

  27. Cloud Service-Side Protection Distinguish requests of its site from client Restrict the privileges for the web interface Require the user s consent Web Page Cloud Web/Local Boundary Browser Kernel Local System Client 26

  28. Conclusion Concrete Attacks on Web/Local Boundary Access local files, system control Using 1 bug in renderer process Attack Details Bypass in-memory protections Video at https://youtu.be/fIHaiQ4btok POC at https://github.com/jiayaoqijia/Web-Local-Attacks Solutions Imperfect existing solutions Open to researchers 27

  29. Thanks Yaoqi Jia (Graduating in 2017) jiayaoqi@comp.nus.edu.sg http://www.comp.nus.edu.sg/~jiayaoqi/ 28

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#