编译器如何危及应用程序的安全

开发 开发工具
对于编译器如何将人类可读的代码翻译成机器运行的机器码,大多数程序员通常只有大概的概念。

对于编译器如何将人类可读的代码翻译成机器运行的机器码,大多数程序员通常只有大概的概念。在编译过程中,编译器会对代码进行优化,使其能高效的运行。有的时候,编译器在优化上面走的太远了,它甚至移除了本不应该移除的代码,导致应用程序更加脆弱。

MIT人工智能和计算机科学实验室的四位研究人员调查了(PDF) 不稳定优化(optimization-unstable)代码的问题——编译器移除的包含未定义行为的代码。所谓的未定义行为包括了除以0,空指针间接 引用和缓冲溢出等。在某些情况下,编译器完整移除未定义行为代码可能会导致程序出现安全弱点。

研究人员开发了一个静态检查器STACK去识别不稳定的 C/C++代码,他们在测试的系统中发现上百个新bug:Linux内核发现32个bug,Mozilla发现3个,Postgres 9个和Python 5个。STACK扫描了Debian Wheezy软件包仓库8575个含有C/C++代码的软件包,发现其中3471个至少包含一个不稳定的代码。研究人员认为这是一个非常普遍的问题。

原文链接:http://www.solidot.org/story?sid=37035

责任编辑:陈四芳 来源: solidot.org
相关推荐

2009-07-03 06:57:32

2014-02-19 15:38:42

2022-06-22 09:00:00

安全编程语言工具

2013-11-19 15:35:01

2021-07-20 09:44:34

云原生应用程序安全云安全

2017-03-20 18:01:55

编译器汇编

2011-02-13 14:36:35

2013-02-18 16:12:55

2012-05-29 10:04:08

2009-07-21 15:14:32

预编译应用程序ASP.NET

2010-08-12 15:52:34

Flex应用程序

2009-02-27 17:00:25

2018-10-18 17:37:55

2018-09-30 15:58:34

2010-01-14 15:29:44

C++编译器

2023-03-02 09:29:21

Evilgrade模块化框架

2022-02-21 14:41:21

APIWeb安全

2017-11-23 15:09:16

2011-11-03 09:41:35

Android签名安全性

2020-08-25 14:03:20

应用程序屏蔽应用程序内保护网络攻击
点赞
收藏

51CTO技术栈公众号