cse543 introduction to computer and network security
play

CSE543 - Introduction to Computer and Network Security Module: - PowerPoint PPT Presentation


  1. �������฀฀���฀฀�������� ��������������฀�������� � � �������฀���฀��������฀��������฀������ ����������฀��฀��������฀�������฀���฀����������� ������������฀�����฀�����������฀����������฀����฀฀�� CSE543 - Introduction to Computer and Network Security Module: System Vulnerabilities Professor Trent Jaeger 1 CSE543 - Introduction to Computer and Network Security Page

  2. Still Not Enough • So, even with “secure” operating systems that enforce • MAC policies comprehensively • The adversaries can still launch many attacks against those systems • What are we missing? 2 CSE543 - Introduction to Computer and Network Security Page

  3. Name Resolution • Processes often use names to obtain access to system resources " • A nameserver (e.g.,OS) performs name resolution using namespace bindings (e.g., directory ) to convert a name (e.g., filename ) into a system resource (e.g., file ) " Namespace (filesystem) " ‣ Filesystem, System V IPC, … ! ! open(“/var/ / ! / ! var ! var ! mail ! mail ! root ! root ! P ! ! mail/root”) Name ! Resource (filename) " Bindings (directories) " (file) " 3 CSE543 - Introduction to Computer and Network Security Page

  4. Attacks on Name Resolution • Improper Resource Attack ! ‣ Adversary controls final resource in unexpected ways ! ‣ Untrusted search paths (e.g., Trojan library), file squatting ! ‣ Victim expects high integrity, gets low integrity instead ! ! owner root open(“/var/ root ! root ! root ! / ! var ! var ! mail ! mail ! V root ! ! mail/root”) A mail ! 4 CSE543 - Introduction to Computer and Network Security Page

  5. Attacks on Name Resolution • Improper Resource Attack ! ‣ Adversary controls final resource in unexpected ways ! ‣ Untrusted search paths (e.g., Trojan library), file squatting ! ‣ Victim expects high integrity, gets low integrity instead ! ! owner mail open(“/var/ / ! var ! var ! mail ! mail ! root ! root ! V root ! ! mail/root”) A mail ! 5 CSE543 - Introduction to Computer and Network Security Page

  6. Attacks on Name Resolution • Improper Binding Attack ! ‣ Adversary controls bindings to redirect victim to a resource not under adversary’s control (confused deputy) ! ‣ Symbolic link, hard link attacks ! ‣ Victim expects low integrity/secrecy, gets high instead ! ! open(“/var/ root ! root ! / ! / ! var ! var ! var ! mail ! mail ! mail ! root ! V root ! ! mail/root”) passwd ! passwd ! etc ! A mail ! 6 CSE543 - Introduction to Computer and Network Security Page

  7. Attacks on Name Resolution • Race Conditions ! ‣ Adversary exploits non-atomicity in “check” and “use” of resource to conduct improper resource and improper binding attacks ! ‣ Well-known “TOCTTOU” attacks ! ! lstat(“/var/ root ! / ! var ! var ! mail ! mail ! V root ! ! mail/root”) passwd ! etc ! A mail ! 7 CSE543 - Introduction to Computer and Network Security Page

  8. Attacks on Name Resolution • Race Conditions ! ‣ Adversary exploits non-atomicity in “check” and “use” of resource to conduct improper resource and improper binding attacks ! ‣ Well-known “TOCTTOU” attacks ! ! open(“/var/ root ! / ! / ! var ! var ! var ! mail ! mail ! mail ! root ! root ! root ! V root ! ! mail/root”) etc ! passwd ! passwd ! A mail ! 8 CSE543 - Introduction to Computer and Network Security Page

  9. How Serious a Problem? • Name resolution vulnerabilities accounts for 5-10% CVE entries each year ! • These are particularly hard to eradicate as they involve multiple parties ! ‣ Programmers who write code ! ‣ OS distributors who define access control policies ! ‣ Administrators who configure end system ! 9 CSE543 - Introduction to Computer and Network Security Page

  10. Di ffi cult to Prevent 01 /* filename = /var/mail/root */ • Manual checks can 02 /* First, check if file already exists */ 03 fd = open (filename, flg); 04 if (fd == -1) { easily overlook 05 /* Create the file */ 06 fd = open(filename, O_CREAT|O_EXCL); Squat during ! 07 if (fd < 0) { vulnerabilities ! create ! 08 return errno; } 09 10 } • But, misses already 11 /* We now have a file. Make sure 12 we did not open a symlink. */ 13 struct stat fdbuf, filebuf; existing file squat! ! 14 if (fstat (fd, &fdbuf) == -1) 15 return errno; Symbolic link ! 16 if (lstat (filename, &filebuf) == -1) 17 return errno; 18 /* Now check if file and fd reference the same file, 19 file only has one link, file is plain file. */ 20 if ((fdbuf.st_dev != filebuf.st_dev 21 || fdbuf.st_ino != filebuf.st_ino Hard link, ! 22 || fdbuf.st_nlink != 1 23 || filebuf.st_nlink != 1 race conditions ! || (fdbuf.st_mode & S_IFMT) != S_IFREG)) { 24 25 error (_("%s must be a plain file 26 with one link"), filename); 27 close (fd); 28 return EINVAL; 29 } 30 /* If we get here, all checks passed. 31 Start using the file */ 32 read(fd, ...) Systems and Internet Infrastructure Security Laboratory (SIIS) Page 31 10 CSE543 - Introduction to Computer and Network Security Page

  11. Fundamental Problem • Security problems occur because low-integrity adversary processes share the same OS namespaces as high-integrity victim processes ! ‣ Adversary processes attempt to affect name resolution of victim processes ! • Permissions for /var/mail ! ‣ Group mail can create and delete files 11 CSE543 - Introduction to Computer and Network Security Page

  12. STING Approach • Thus, we have to actively change the namespace to create adversarial scenarios ! ‣ And evaluate process response to scenario ! • We take inspiration from “grey-box” testing ! ‣ Feed known adversarial inputs to programs and examine process response (e.g., detect SQL injection vulnerability) ! Generate ! Study ! db.exec(‘drop ‘test’; drop V ! Adversarial ! Program ! table name’); table name; Input ! Response ! Vulnerable! ! 12 CSE543 - Introduction to Computer and Network Security Page

  13. Adversary Accessibility • Under DAC adversary model ! ‣ Only 4% (Fedora) and 5.7% (Ubuntu) of total name resolution entrypoints were accessible to adversaries ! ‣ Only 0.3% (Fedora) and 0.9% (Ubuntu) of total name resolutions were vulnerable ! 13 CSE543 - Introduction to Computer and Network Security Page

  14. Vulnerabilities Found Program Vuln. Priv. Escalation Distribution Previously Entry DAC: uid- > uid known dbus-daemon 2 messagebus- > root Ubuntu Unknown landscape 4 landscape- > root Ubuntu Unknown Startup scripts (3) 4 various- > root Ubuntu Unknown mysql 2 mysql- > root Ubuntu 1 Known mysql upgrade 1 mysql- > root Ubuntu Unknown tomcat script 2 tomcat6- > root Ubuntu Known lightdm 1 *- > root Ubuntu Unknown bluetooth-applet 1 *- > user Ubuntu Unknown java (openjdk) 1 *- > user Both Known zeitgeist-daemon 1 *- > user Both Unknown mountall 1 *- > root Ubuntu Unknown mailutils 1 mail- > root Ubuntu Unknown bsd-mailx 1 mail- > root Fedora Unknown cupsd 1 cups- > root Fedora Known abrt-server 1 abrt- > root Fedora Unknown yum 1 sync- > root Fedora Unknown x2gostartagent 1 *- > user Extra Unknown 19 Programs 26 21 Unknown 14 CSE543 - Introduction to Computer and Network Security Page

  15. Preventions • How to prevent such vulnerabilities? 15 CSE543 - Introduction to Computer and Network Security Page

  16. Preventions • How to prevent such vulnerabilities? • Add checks in your program to make sure that you are protected from such attacks • What do you need to check for? 16 CSE543 - Introduction to Computer and Network Security Page

  17. Resource Retrieval Preventions • How to prevent such vulnerabilities? • Check for symbolic link • Add checks in your program to make sure that you are (lstat) protected from such attacks • Check for lstat-open race • Expensive and incomplete • Check for inode recycling • Do checks for each path component ( safe_open ) ‣ /, var, mail, … • Programmers fail to get these checks right – retrofit! • 4*path_length additional syscalls for each open() • Too expensive! 17 CSE543 - Introduction to Computer and Network Security Page Systems and Internet Infrastructure Security Laboratory (SIIS) Page 104

  18. Preventions Code Filters - Ine ffi cient • How to prevent such vulnerabilities? • Checking retrieved resources is expensive • Add checks in your program to make sure that you are ‣ Single open() requires 4 * path length additional syscalls protected from such attacks ‣ Programmers omit checks to improve performance • What do you need to check for? • Example: Apache documentation recommends switching off resource access checks 18 CSE543 - Introduction to Computer and Network Security Page Systems and Internet Infrastructure Security Laboratory (SIIS) Page 18

  19. Preventions • How to prevent such vulnerabilities? • Add checks in your program to make sure that you are protected from such attacks • What do you need to check for? • When should programmers apply such defenses? 19 CSE543 - Introduction to Computer and Network Security Page

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend