Abstract
Today's software programs are bloating and have become extremely complex. As there is typically no internal isolation among modules in a program, a vulnerability can be exploited to corrupt the memory and take control of the whole program. Program modularization is thus a promising security mechanism that splits a complex program into smaller modules, so that memory-access instructions can be constrained from corrupting irrelevant modules. A general approach to realizing program modularization is dependence analysis which determines if an instruction is independent of specific code or data; and if so, it can be modularized. Unfortunately, dependence analysis in complex programs is generally considered infeasible, due to problems in data-flow analysis, such as unknown indirect-call targets, pointer aliasing, and path explosion. As a result, we have not seen practical automated program modularization built on dependence analysis.This paper presents a breakthrough - Type-based dependence analysis for Program Modularization (TyPM). Its goal is to determine which modules in a program can never pass a type of object (including references) to a memory-access instruction; therefore, objects of this type that are created by these modules can never be valid targets of the instruction. The idea is to employ a type-based analysis to first determine which types of data flows can take place between two modules, and then transitively resolve all dependent modules of a memory-access instruction, with respect to the specific type. Such an approach avoids the data-flow analysis and can be practical. We develop two important security applications based on TyPM: refining indirect-call targets and protecting critical data structures. We extensively evaluate TyPM with various system software, including an OS kernel, a hypervisor, UEFI firmware, and a browser. Results show that on average TyPM additionally refines indirect-call targets produced by the state of the art by 31%-91%. TyPM can also remove 99.9% of modules for memory-write instructions to prevent them from corrupting critical data structures in the Linux kernel.
Original language | English (US) |
---|---|
Title of host publication | Proceedings - 44th IEEE Symposium on Security and Privacy, SP 2023 |
Publisher | Institute of Electrical and Electronics Engineers Inc. |
Pages | 1256-1270 |
Number of pages | 15 |
ISBN (Electronic) | 9781665493369 |
DOIs | |
State | Published - 2023 |
Event | 44th IEEE Symposium on Security and Privacy, SP 2023 - Hybrid, San Francisco, United States Duration: May 22 2023 → May 25 2023 |
Publication series
Name | Proceedings - IEEE Symposium on Security and Privacy |
---|---|
Volume | 2023-May |
ISSN (Print) | 1081-6011 |
Conference
Conference | 44th IEEE Symposium on Security and Privacy, SP 2023 |
---|---|
Country/Territory | United States |
City | Hybrid, San Francisco |
Period | 5/22/23 → 5/25/23 |
Bibliographical note
Publisher Copyright:© 2023 IEEE.
Keywords
- CFI
- Modularization
- dependence-analysis
- indirect-call
- isolation
- type-analysis