system call vulnerabilities in linux storage stack
play

System Call Vulnerabilities in Linux Storage Stack Nima Mohammadi - PowerPoint PPT Presentation

System Call Vulnerabilities in Linux Storage Stack Nima Mohammadi Sepand Haghighi Fall - 2016 Outline Introduction Static Code Analysis Static Analyzer List Kernels Static Analysis Report Conclusion 2 System


  1. System Call Vulnerabilities in Linux Storage Stack Nima Mohammadi Sepand Haghighi Fall - 2016

  2. Outline • Introduction • Static Code Analysis • Static Analyzer List • Kernels • Static Analysis Report • Conclusion 2 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  3. Source Code Analysis • As a developer, source code is the malleable object • Many techniques can be shared between source and binary analysis • Flip side: Improve RE by looking for blind spots in source analysis 3 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  4. Source and Binary Analysis • Binary • Source – Hard to map back to source – Easy to identify location of flaw – CPU dependent – CPU independent – Language indep ? – Language depen. – Environment independent? – 3 rd party utility – Environment independent? – 1 st party only 4 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  5. Tools to find bugs • Static Code Analyzer • Dynamic Runtime Checker • Fuzzer/Test Suits • Tracers to understand code • Tools to understand source 5 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  6. Static and Dynamic Analysis • Dynamic • Static – Very rare to get close to – Complete coverage 100% – false positives – No false positives – Can analyze anytime, – Requires ability to run anywhere program – Precise description of – Precise understanding of problem, unknown impact, possibly unknown impact cause 6 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  7. Static Code Analysis • The source has a lot of knowledge embedded – Extract the good parts, ignore the remainder • Many types of analysis – Different ways to approach the problem – Different goals • Find Defects • Enhance Run time analysis • Gain insight into code 7 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  8. Static Code Analysis 8 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  9. Static Code Analysis 9 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  10. Simulated Execution • Flow sensitive bar() { free(g_p); } baz() { free(g_p); } foo() { if (x) bar(); else baz(); } • Context sensitive if (use_malloc) p = malloc(); /* … */ if (use_malloc) free(p); • How much state to track? – Exponential number of paths – Loops – Heap is unbounded 10 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  11. Static Analyzer List • BLAST • FRAMA-C • Flaw-Finder • Sparse • CppCheck • Smatch 11 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  12. BLAST • B erkeley L azy A bstraction S oftware Verification T ool ( BLAST ) • Written in Ocaml • Stable Version : 2.7.3 , 2014 • automatic abstraction refinement to construct an abstract model that is then model-checked for safety properties 12 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  13. Frama-C • Framework or Modular Analysis of C Programs. • Written in Ocaml • Stable Version : Silicon , 2 Dec 2016 • Run Different Analysis : - Value Analysis - Jessie - Impact Analysis - Slicing - Spare Code 13 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  14. Flaw-Finder • Examine C/C++ Codes • Written in Python • Stable Version : 2014-08-03 • It’s very useful for quickly finding and removing at least some potential security problems before a program is widely released to the public • Flawfinder is specifically designed to be easy to install and use. After installing it, at a command line just type: flawfinder directory_with_source_code 14 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  15. Sparse • Examine Linux Kernels • Written in C • Stable Version : 0.5.0 , 29 Jan 2014 • Open Source , MIT License • Sparse defines the following list of attributes: – Address_space – Bitwise – Force – Context 15 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  16. CPP Check • Static Analysis of C/C++ Codes • Written in C++ • Stable Version : 8 Oct 2016 • General Public GNU Licesne • Some of checks that are supported : – Automatic Variable – Memory Leaks – Resources Leaks – Bounds Checking – Invalid usage of standard library 16 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  17. Smatch • Static Analysis of C Source Code • Written in C Stable Version : 8 Oct 2016 • General Public GNU Licesne • C static analysis tool which developed, and which uses to test the mainline Linux kernel code for security bugs. 17 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  18. Linux Complexity Growing 18 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  19. Filesystems List ext2 Second Extended FileSystem ext4 Fourth Extended Filesystem with extents btfrs B-Tree filesystem hfs Macintosh HFS Filesystem jffs2 The Journalling Flash File System, v2 reiserfs ReiserFS journaled filesystem ubifs UBIFS - UBI File System udf Universal Disk Format Filesystem 19 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  20. Filesystem Analysis Report FS Line of Smatch CppChek Sparse FlawFindr Blast Frama-C Code ext2 6840 3 -- 0 29 -- -- ext4 32754 30 -- 0 103 -- -- btrfs 82450 84 -- 69 191 -- -- hfs 4618 22 -- 0 20 -- -- jffs2 13771 40 -- 6 45 -- -- reiserfs 21742 40 -- 6 159 -- -- ubifs 21988 6 -- 0 63 -- -- udf 8980 26 -- 0 63 -- -- 20 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  21. Conclusion • Linux has a lot of great tools for making kernel development easier • We need them to keep up with the growing complexity • But Still many improvement possible 21 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

  22. Comparison 22 System Call Vulnerabilities in Linux Storage Stack – Nima Mohammadi , Sepand Haghighi

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