1 / 31

canonicalization

canonicalization. Prof. Stefano Bistarelli. C Consiglio Nazionale delle Ricerche Iit Istituto di Informatica e Telematica - Pisa. Università “G. d’Annunzio” Dipartimento di Scienze, Pescara. Vedi esempio canonicalization-microsoft. Problemi di Canonicalization.

kisha
Download Presentation

canonicalization

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. canonicalization Prof. Stefano Bistarelli CConsiglio Nazionale delle Ricerche IitIstituto di Informatica e Telematica - Pisa Università “G. d’Annunzio”Dipartimento di Scienze, Pescara

  2. Vedi esempio canonicalization-microsoft S. Bistarelli - Metodologie di Secure Programming

  3. ProblemidiCanonicalization • Generalmenteesistonopiùmetodiperassegnareinomi • Sono disponibili rappresentazioni alternative per: • Nomi file • URL • Periferiche (ad esempio stampanti) • Gli hacker possono sfruttare il codice che consente di effettuare determinate operazioni in base ai nomi file o agli URL S. Bistarelli - Metodologie di Secure Programming

  4. ProblemidiCanonicalizationEsempio1–Nomifile • MyLongFile.txt • MyLongFile.txt. • MyLong~1.txt • MyLongFile.txt::$DATA S. Bistarelli - Metodologie di Secure Programming

  5. EsistonomoltimodiperrappresentareicaratterisuInternet ProblemidiCanonicalizationEsempio2–Rappresentazionedeicaratteri http://www.microsoft.com/technet/security Equivalea- http://www%2emicrosoft%2ecom%2ftechnet%2fsecurity http://www.microsoft.com%c0%aftechnet%c0%afsecurity http://www%25%32%65microsoft.com/technet/security http://172.43.122.12 = http://2888530444 S. Bistarelli - Metodologie di Secure Programming

  6. Difesa.. • Non molto .. • (nel lab on line che non facciamo c’e’ qualcosa per i sistemi windows …) • In genere: • In genere .. S. Bistarelli - Metodologie di Secure Programming

  7. Punti fondamentali • Molti modi di rappresentare indirizzi e nomi, come il path ad un file, ma solo un metodo “canonico” • I problemi di canonicalization portano a directory traversal vulnerabilities • Capire quali funzioni del sistema operativo forniscono chiamate che aiutano nella canonicalizazzione • Capire come usare chroot per difendersi contro directory traversal vulnerabilities

  8. Canonicalization and Directory Traversal: Outline • Importance of Directory Traversal Vulnerabilities • Canonical names • BearShare example • How to canonicalize • Mitigating solutions (e.g., chroot) • Lab

  9. Importance • Directory traversal vulnerabilities sono comuni (ma non quanti I buffer overflows!) • They may allow remotely writing or reading files, depending. These may be executable files, or be secret or confidential documents. • Canonicalization issues are more complex in Windows, due to the many ways of naming a file • short name (8.3) • long name • Unicode name • Trailing dots, forward slashes or backslashes • etc...

  10. Directory Traversal Vulnerabilities • Basic Idea: the characters ‘..’ mean “Go up a directory” • They can be inserted in file paths for • Browsing • Reading • Execution • Often a network services problem (e.g., ftp) • Web sites • Web-enabled applications • Applications using networks

  11. Synonyms • “..” (“dot dot”) attacks • Also “...” on Windows • Windows 95, 98 • Goes up two directories

  12. Definition of Canonical • Canonical means *the* standard form or representation of something • Canonicalization: "process by which various equivalent forms of a name can be resolved to a single, standard name – the so-called canonical name.” • Usually the simplest form • Without symlinks • “/usr/../home/student” is the same as “/home/student” • /home/student is the canonical path

  13. Question • Given that there is a symbolic link: • /home/alfred/sss -> /home/myhomebiz/accounting/spreadsheets/ • What is the canonical path to:“/home/bob/../mary/../alfred/.//sss/may.xls” ? • a) /home/alfred/sss/may.xls • b) /home/myhomebiz/accounting/spreadsheets/may.xls • c) /home/alfred/may.xls

  14. Question • Given that there is a symbolic link: • /home/alfred/sss -> /home/myhomebiz/accounting/spreadsheets/ • What is the canonical path to:“/home/bob/../mary/../alfred/.//sss/may.xls” ? • a) /home/alfred/sss/may.xls • b) /home/myhomebiz/accounting/spreadsheets/may.xls • c) /home/alfred/may.xls

  15. The Problem • If you forbid access to /home/private but enable access to /home/public, what do you do with a request for: • “/home/public/../private” ? • “/home/PRIVATE” ? (This one is dependent on the file system)

  16. Answer • “/home/public/../private” should of course be forbidden, but many programs are fooled by the presence of “..” and equivalent character encodings and obfuscations. • Programs filtering out only “..” are still vulnerable.

  17. Mismatched Object and Access Control • The HFS+ file system is case insensitive. “/home/PRIVATE” == “/home/private” • Apache directory access control is case sensitive, as it is designed for UFS (UNIX File System). It thinks that “/home/PRIVATE” is different from “/home/private”. • Join the two together and you have a canonicalization (“directory traversal”) vulnerability, even though both systems alone are correct. • Fixed since

  18. Url Vulnerabilities • protocol://server/path • http://www.host.com/path • path contains ‘..’; what do you do?

  19. Symantec Example • CVE-1999-0842 • Symantec Mail-Gear 1.0 web interface server allows remote users to read arbitrary files via a .. (dot dot) attack.

  20. Example With Bad Patches (Instructive) • BearShare • Peer-to-peer file sharing service • Also had a vulnerable web server component!

  21. BearShare 2.2.2 • CVE-2001-0368 • http://vulnerable:6346/........../windows/win.ini • This would download the win.ini file from the windows directory. • This is a classic Directory Traversal vulnerability.

  22. Wrong Way to Patch • First attempt to patch, Apr 30 2001 • Guess they forbid ‘{/\}.(.)*’ (unencoded) in the path • Why is it bad?

  23. BearShare 4.05 Vulnerability • Attempt to fix previous exploit by filtering bad stuff • New exploit: • http://127.0.0.1:6346/%5c..%5c..%5c..%5cwindows%5cwin.ini • %5c == ‘\’ • This passes the filter • Then it translates into:http://127.0.0.1:6346/\..\..\..\windows\win.ini • Returning the win.ini file.

  24. BearShare 4.06 • http://127.0.0.1:6346/%5c..%5c..%5c..%5cwindows%5cwin%2eini • %2e is "." • Also returns the win.ini file. • What went wrong twice? • Filter is a black list instead of white list • Filter is applied before canonicalization • Good time to remind of "How to obscure any URL" • http://www.pc-help.org/obscure.htm

  25. Windows: Trailing Characters • Files ending with an extra “.” (dot) or “\” can fool some access control mechanisms, but the filesystem automatically corrects the names by removing the trailing characters! • file.txt. is the same as file.txt for the filesystem • See “Writing Secure Code” by Howard and Leblanc • Conclusion: It is important to use the Operating System’s functions for file canonicalization, so that your semantic validation and the OS’s match.

  26. How to Canonicalize Paths • Goal: Find the absolute name of a file which contains no ".", ".." components nor any repeated path separators (/) or symlinks • Note that race conditions may be possible in unsecured directories • UNIX: • realpath (obsolescent but may be only available function) • Requires buffer allocation ahead of time • Buffer should be of length PATH_MAX • What if PATH_MAX is undefined because a system has no limit on path length? • canonicalize_file_name (new) • Allocates the needed memory

  27. Canonical Names • PHP: • string realpath ( string path) • Windows: • GetFullPathName • Java: • File.getCanonicalPath() or File.getCanonicalFile() S. Bistarelli - Metodologie di Secure Programming

  28. Solutions Without Code • Chroot "jail" • Confine a process to a specific directory • Independent microsphere • self-contained • Derivatives • FreeBSD "jail" • Solaris "zones" • Subdomain (Immunix) • Applies an access control list to file references • No duplication of files • Windows doesn't have equivalent (closest functionality is virtual machines)

  29. Chroot • Chroot changes the filesystem "root". • The applications in a chroot jail can't use files outside the visible root of the filesystem • They are "jailed" down in a subdirectory • Example • chdir("/foo/bar");chroot("/foo/bar");

  30. Chroot Can Fail • Doesn’t work against root • Is service running as root? • If not, is there a vulnerability that yields root access? • Yes -> “Get Out of Jail” • http://www.bpfh.net/simes/computing/chroot-break.html • Important to run with lowers privileges • Special users • FreeBSD "jail" claims to have closed those loopholes

  31. Questions or Comments?

More Related