automatic placement of authorization hooks in the linux
play

Automatic Placement of Authorization Hooks in the Linux Security - PowerPoint PPT Presentation

Automatic Placement of Authorization Hooks in the Linux Security Modules Framework Vinod Ganapathy vg@cs.wisc.edu University of Wisconsin, Madison Joint work with Trent Jaeger Somesh Jha tjaeger@cse.psu.edu jha@cs.wisc.edu Pennsylvania


  1. Automatic Placement of Authorization Hooks in the Linux Security Modules Framework Vinod Ganapathy vg@cs.wisc.edu University of Wisconsin, Madison Joint work with Trent Jaeger Somesh Jha tjaeger@cse.psu.edu jha@cs.wisc.edu Pennsylvania State University University of Wisconsin, Madison

  2. Context of this talk � Authorization policies and their enforcement � Three concepts: � Subjects (e.g., users, processes) � Objects (e.g., system resources) � Security-sensitive operations on objects. � Authorization policy: � A set of triples: (Subject, Object, Operation) � Key question: How to ensure that the authorization policy is enforced? 2 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  3. Enforcing authorization policies � Reference monitor consults the policy. � Application queries monitor at appropriate locations. Can I perform operation OP? Reference Monitor Application to Policy be secured Yes/No (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) 3 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  4. Linux security modules framework � Framework for authorization policy enforcement. � Uses a reference monitor-based architecture. � Integrated into Linux-2.6 Linux Kernel Reference Monitor Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) 4 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  5. Linux security modules framework � Reference monitor calls ( hooks ) placed appropriately in the Linux kernel. � Each hook is an authorization query. Linux Kernel Reference Monitor Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) Hooks 5 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  6. Linux security modules framework � Authorization query of the form: (subj., obj., oper.)? � Kernel performs operation only if query succeeds. Linux Kernel Reference (subj., obj., oper.)? Monitor Yes/No Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) 6 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  7. Example Virtual File System Code for Directory Removal int vfs_rmdir(inode *dir, dentry *dentry) { … err = security_inode_rmdir(dir,dentry); if (!err) { dir->i_op->rmdir(dir,dentry); } } Linux Kernel Reference (subj., obj., oper.)? Monitor Yes/No Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) 7 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  8. Example Virtual File System Code for Directory Removal int vfs_rmdir(inode *dir, dentry *dentry) { … err = security_inode_rmdir(dir,dentry); if (!err) { dir->i_op->rmdir(dir,dentry); } } Linux Kernel Reference (subj., obj., oper.)? Monitor Yes/No Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) 8 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  9. Example Virtual File System Code for Directory Removal int vfs_rmdir(inode *dir, dentry *dentry) { … err = security_inode_rmdir(dir,dentry); if (!err) { dir->i_op->rmdir(dir,dentry); } } Linux Kernel Reference (subj., obj., oper.)? Monitor Yes/No Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) 9 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  10. Example Virtual File System Code for Directory Removal int vfs_rmdir(inode *dir, dentry *dentry) { … err = security_inode_rmdir(dir,dentry); if (!err) { dir->i_op->rmdir(dir,dentry); } } Linux Kernel Reference (subj., obj., oper.)? Monitor Yes/No Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) 10 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  11. Example Virtual File System Code for Directory Removal int vfs_rmdir(inode *dir, dentry *dentry) { … err = security_inode_rmdir(dir,dentry); if (!err) { dir->i_op->rmdir(dir,dentry); } } Linux Kernel Reference (subj., obj., oper.)? Monitor Yes/No Policy (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) Key: Hooks must achieve complete mediation. 11 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  12. Hook placement is crucial � Must achieve complete mediation. � Security-sensitive operations must be mediated by a hook that authorizes the operation. � Current practice: � Hooks placed manually in the kernel. � Takes a long time: approx. 2 years for Linux security modules framework. � Can this achieve complete mediation? � Prior work has found bugs in hook placement. [Zhang et al., USENIX Security 2002, Jaeger et al., ACM CCS 2002] 12 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  13. Main message of this talk Static analysis can largely autom ate authorization hook placem ent and achieve com plete m ediation 13 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  14. Main message of this talk Static analysis can largely autom ate authorization hook placem ent and achieve com plete m ediation Reduces turnaround tim e of Linux Security Modules-like projects 14 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  15. Main message of this talk Static analysis can largely autom ate authorization hook placem ent and achieve com plete m ediation Towards correctness by construction 15 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  16. Key intuition: Matchmaking � Each kernel function performs an operation. � Each hook authorizes an operation. � Match kernel functions with appropriate hooks. Linux Kernel Reference op1,op2 Monitor op1,op2 op3 Policy (subj.,obj.,oper.) op3 (subj.,obj.,oper.) (subj.,obj.,oper.) (subj.,obj.,oper.) op1,op2,op3 (subj.,obj.,oper.) 16 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  17. Tool for Authorization Hook Placement � Input: � A set of security-sensitive operations. � Source code of reference monitor hooks. � Source code of the Linux kernel, without hooks placed. � Output: � Linux kernel with hooks placed. 17 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  18. Tool for Authorization Hook Placement TAHOE Hook code Linux kernel + hooks. Linux kernel, no hooks. 18 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  19. Tool for Authorization Hook Placement TAHOE Operations Hook authorized Hook code analysis Hook Join Placer Linux kernel + hooks. Kernel Operations analysis perform ed Linux kernel, no hooks. 19 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  20. Security-sensitive operations � We use the set of operations from the LSM implementation of SELinux. � Comprehensive set of operations on resources: � FILE_READ � DIR_READ � FILE_WRITE � DIR_WRITE � SOCKET_RECV_MESG � SOCKET_LISTEN � … (504 such operations) 20 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  21. TAHOE Authorization hook analysis � Analyze source code of hooks and: � Recover the operations authorized. � Conditions under which they are authorized. � Example: int selinux_inode_permission(struct *inode, int mask) { op = 0; // s = info about process requesting operation if (mask & MAY_EXEC) op |= DIR_SEARCH; if (mask & MAY_WRITE) op |= DIR_WRITE; if (mask & MAY_READ) op |= DIR_READ; Query_Policy(s, inode, op); } 21 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  22. TAHOE Authorization hook analysis int selinux_inode_permission(struct *inode, int mask) { op = 0; // s = info about process requesting operation if (mask & MAY_EXEC) op |= DIR_SEARCH; if (mask & MAY_WRITE) op |= DIR_WRITE; if (mask & MAY_READ) op |= DIR_READ; Query_Policy(s, inode, op); } � Flow-and-context-sensitive static analysis: � DIR_READ authorized if ` mask & MAY_READ’ � DIR_WRITE authorized if ` mask & MAY_WRITE’ � DIR_SEARCH authorized if ` mask & MAY_EXEC’ 22 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

  23. TAHOE Linux kernel analysis � Analyze Linux kernel to determine the security-sensitive operations performed by each function. � More challenging than hook analysis. � Example: Virtual File System Code for Directory Removal int vfs_rmdir (struct inode *dir, struct dentry *dentry) { ... dir->i_op->rmdir(dir, dentry); ... } Points to physical file system code 23 CCS 2005 Automatic Placement of Authorization Hooks in the Linux Security Modules Framework

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