Software complexity has increased over the years. One common way to tackle this complexity during development is to encapsulate features into a shared library. This allows developers to reuse already implemented features instead of reimplementing them over and over again. However, not all features provided by a shared library are actually used by an application. As a result, an application using shared libraries loads unused code into memory, which an attacker can use to perform code-reuse and similar types of attacks. The same holds for applications written in a scripting language such as PHP or Ruby: The interpreter typically offers much more functionality than is actually required by the application and hence provides a larger overall attack surface. In this paper, we tackle this problem and propose a first step towards automated application-specific software stacks. We present a compiler extension capable of removing unneeded code from shared libraries and---with the help of domain knowledge---also capable of removing unused functionalities from an interpreter's code base during the compilation process. Our evaluation against a diverse set of real-world applications, among others Nginx, Lighttpd, and the PHP interpreter, removes on average 71.3% of the code in musl-libc, a popular libc implementation. The evaluation on web applications show that a tailored PHP interpreter can mitigate entire vulnerability classes, as is the case for OpenConf. We demonstrate the applicability of our debloating approach by creating an application-specific software stack for a Wordpress web application: we tailor the libc library to the Nginx web server and PHP interpreter, whereas the PHP interpreter is tailored to the Wordpress web application. In this real-world scenario, the code of the libc is decreased by 65.1% in total, thereby reducing the available code for code-reuse attacks.


翻译:多年来,软件的复杂性增加了。 开发过程中处理这种复杂性的一个常见方法就是将功能包含在共享的图书馆中。 这样可以让开发者重新使用已经安装的功能, 而不是一次又一次地重新实施这些功能。 但是, 共享的图书馆所提供的所有功能实际上并非都被应用程序所使用。 结果, 一个使用共享的图书馆的应用程序将未使用的代码装入记忆中, 攻击者也可以在编译过程中将未使用的功能从口译员的代码库中删除。 使用像 PHP 或 Ruby 这样的脚本语言编写的应用程序同样适用: 口译员通常提供比应用程序实际需要的功能要多得多, 从而提供一个更大的总体攻击性表面。 在本文件中, 我们解决这个问题, 并提议向自动应用的应用程序自动应用软件库提供第一个步骤。 因此, 我们提出了一个编译器的编译扩展扩展功能, 也可以在编译员的代码库中删除未使用的功能。 我们用多种格式的版本来评估, 除其他外, Nhinx, Lighttptppric 和 PHP 解释员, 在平均的版本应用中, 将网络代码中, 缩缩缩缩化应用 显示我们的版本的版本的版本的版本。

0
下载
关闭预览

相关内容

Automator是苹果公司为他们的Mac OS X系统开发的一款软件。 只要通过点击拖拽鼠标等操作就可以将一系列动作组合成一个工作流,从而帮助你自动的(可重复的)完成一些复杂的工作。Automator还能横跨很多不同种类的程序,包括:查找器、Safari网络浏览器、iCal、地址簿或者其他的一些程序。它还能和一些第三方的程序一起工作,如微软的Office、Adobe公司的Photoshop或者Pixelmator等。
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
144+阅读 · 2019年10月12日
开源书:PyTorch深度学习起步
专知会员服务
49+阅读 · 2019年10月11日
强化学习最新教程,17页pdf
专知会员服务
168+阅读 · 2019年10月11日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
CCF推荐 | 国际会议信息6条
Call4Papers
9+阅读 · 2019年8月13日
人工智能 | ISAIR 2019诚邀稿件(推荐SCI期刊)
Call4Papers
6+阅读 · 2019年4月1日
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
IEEE | DSC 2019诚邀稿件 (EI检索)
Call4Papers
10+阅读 · 2019年2月25日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
人工智能 | 国际会议截稿信息9条
Call4Papers
4+阅读 · 2018年3月13日
人工智能 | 国际会议/SCI期刊约稿信息9条
Call4Papers
3+阅读 · 2018年1月12日
计算机类 | 国际会议信息7条
Call4Papers
3+阅读 · 2017年11月17日
gan生成图像at 1024² 的 代码 论文
CreateAMind
4+阅读 · 2017年10月31日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Learning in the Frequency Domain
Arxiv
11+阅读 · 2020年3月12日
On Feature Normalization and Data Augmentation
Arxiv
14+阅读 · 2020年2月25日
Deflecting Adversarial Attacks
Arxiv
8+阅读 · 2020年2月18日
The Measure of Intelligence
Arxiv
6+阅读 · 2019年11月5日
AutoML: A Survey of the State-of-the-Art
Arxiv
67+阅读 · 2019年8月14日
Arxiv
8+阅读 · 2018年11月27日
VIP会员
相关资讯
CCF推荐 | 国际会议信息6条
Call4Papers
9+阅读 · 2019年8月13日
人工智能 | ISAIR 2019诚邀稿件(推荐SCI期刊)
Call4Papers
6+阅读 · 2019年4月1日
Call for Participation: Shared Tasks in NLPCC 2019
中国计算机学会
5+阅读 · 2019年3月22日
IEEE | DSC 2019诚邀稿件 (EI检索)
Call4Papers
10+阅读 · 2019年2月25日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
人工智能 | 国际会议截稿信息9条
Call4Papers
4+阅读 · 2018年3月13日
人工智能 | 国际会议/SCI期刊约稿信息9条
Call4Papers
3+阅读 · 2018年1月12日
计算机类 | 国际会议信息7条
Call4Papers
3+阅读 · 2017年11月17日
gan生成图像at 1024² 的 代码 论文
CreateAMind
4+阅读 · 2017年10月31日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
相关论文
Learning in the Frequency Domain
Arxiv
11+阅读 · 2020年3月12日
On Feature Normalization and Data Augmentation
Arxiv
14+阅读 · 2020年2月25日
Deflecting Adversarial Attacks
Arxiv
8+阅读 · 2020年2月18日
The Measure of Intelligence
Arxiv
6+阅读 · 2019年11月5日
AutoML: A Survey of the State-of-the-Art
Arxiv
67+阅读 · 2019年8月14日
Arxiv
8+阅读 · 2018年11月27日
Top
微信扫码咨询专知VIP会员