Code Specialization through Dynamic Feature Observation

Code Specialization through Dynamic Feature Observation
复制标题

通过动态特征观察进行代码专业化

DOI:
10.1145/3422337.3447844
复制
发表时间:
2021
期刊:
Proceedings of the Eleventh ACM Conference on Data and Application Security and Privacy
影响因子:
--
通讯作者:
Payer, Mathias
Payer, Mathias
中科院分区:
--
文献类型:
--
作者:
Biswas, Priyam;Burow, Nathan;Payer, Mathias

文献摘要

参考文献

被引文献

相似文献

Modern software (both programs and libraries) provides large amounts of functionality, vastly exceeding what is needed for a single given task. This additional functionality results in an increased attack surface: first, an attacker can use bugs in the unnecessary functionality to compromise the software, and second, defenses such as control-flow integrity (CFI) rely on conservative analyses that gradually lose precision with growing code size.Removing unnecessary functionality is challenging as the debloating mechanism must remove as much code as possible, while keeping code required for the program to function. Unfortunately, most software does not come with a formal description of the functionality that it provides, or even a mapping between functionality and code. We therefore require a mechanism that-given a set of representable inputs and configuration parameters-automatically infers the underlying functionality, and discovers all reachable code corresponding to this functionality.We propose Ancile, a code specialization technique that leverages fuzzing (based on user provided seeds) to discover the code necessary to perform the functionality required by the user. From this, we remove all unnecessary code and tailor indirect control-flow transfers to the minimum necessary for each location, vastly reducing the attack surface. We evaluate Ancile using real-world software known to have a large attack surface, including image libraries and network daemons like nginx. For example, our evaluation shows that Ancile can remove up to 93.66% of indirect call transfer targets and up to 78% of functions in libtiff's tiffcrop utility, while still maintaining its original functionality.
Modern software (both programs and libraries) provides large amounts of functionality, vastly exceeding what is needed for a single given task. This additional functionality results in an increased attack surface: first, an attacker can use bugs in the unnecessary functionality to compromise the software, and second, defenses such as control-flow integrity (CFI) rely on conservative analyses that gradually lose precision with growing code size.Removing unnecessary functionality is challenging as the debloating mechanism must remove as much code as possible, while keeping code required for the program to function. Unfortunately, most software does not come with a formal description of the functionality that it provides, or even a mapping between functionality and code. We therefore require a mechanism that-given a set of representable inputs and configuration parameters-automatically infers the underlying functionality, and discovers all reachable code corresponding to this functionality.We propose Ancile, a code specialization technique that leverages fuzzing (based on user provided seeds) to discover the code necessary to perform the functionality required by the user. From this, we remove all unnecessary code and tailor indirect control-flow transfers to the minimum necessary for each location, vastly reducing the attack surface. We evaluate Ancile using real-world software known to have a large attack surface, including image libraries and network daemons like nginx. For example, our evaluation shows that Ancile can remove up to 93.66% of indirect call transfer targets and up to 78% of functions in libtiff's tiffcrop utility, while still maintaining its original functionality.
DOI: 10.1145/2568225.2568296
发表时间: 2014-05
期刊: Proceedings of the 36th International Conference on Software Engineering
影响因子: --
作者:
Dohyeong Kim;Nick Sumner;X. Zhang;Dongyan Xu;H. Agrawal
通讯作者: Dohyeong Kim;Nick Sumner;X. Zhang;Dongyan Xu;H. Agrawal
DOI: 10.1145/3037697.3037716
发表时间: 2017-04
期刊: Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems
影响因子: --
作者:
Xinyang Ge;Weidong Cui;T. Jaeger
通讯作者: Xinyang Ge;Weidong Cui;T. Jaeger
DOI: 10.1145/3106237.3106271
发表时间: 2017-08
期刊: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering
影响因子: --
作者:
Vaibhav Rastogi;Drew Davidson;Lorenzo De Carli;S. Jha;P. Mcdaniel
通讯作者: Vaibhav Rastogi;Drew Davidson;Lorenzo De Carli;S. Jha;P. Mcdaniel
DOI: 10.1145/3359789.3359823
发表时间: 2019-12
期刊: Proceedings of the 35th Annual Computer Security Applications Conference
影响因子: --
作者:
Ioannis Agadakos;Di Jin;David Williams-King;V. Kemerlis;G. Portokalidis
通讯作者: Ioannis Agadakos;Di Jin;David Williams-King;V. Kemerlis;G. Portokalidis
DOI: 10.1145/3243734.3243739
发表时间: 2018-05
期刊: Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security
影响因子: --
作者:
Kyriakos K. Ispoglou;Bader Albassam;T. Jaeger;Mathias Payer
通讯作者: Kyriakos K. Ispoglou;Bader Albassam;T. Jaeger;Mathias Payer