只要人类正在写软件,就会对恶意黑客进行编码错误。单个bug可以向攻击者打开门删除文件,复制信用卡号或执行政治恶作剧。
一个名为Shuffler的新程序试图通过允许程序在运行时不断争取其代码,从而有效地关闭攻击窗口的攻击,以抢占这种攻击。该技术在本月在Usenix讨论会上在Savannah的操作系统和设计(OSDI)的一项研究中描述了该技术。
“Shuffler几乎不可能将一个错误变成一个功能攻击,捍卫软件开发人员,从他们的错误中捍卫软件开发人员,”哥伦比亚工程研究生David Williams-King,David Williams-King。“如果代码不断变化,攻击者无法弄清楚程序的布局。”
即使在反复调试之后,软件通常也会在每1000行代码中包含多达50个错误,每个错误都是潜在的攻击途径。尽管安全防御不断发展,但攻击者很快就能找到新的方法。
在2000年代初,计算机操作系统采用称为地址空间布局随机化或ASLR的安全功能。该技术在程序启动时重新排列内存,使黑客更难找到并重用现有代码接管机器。但是,一旦程序已经运行,黑客很快就会发现他们可以利用内存泄露错误来抓取代码片段。
shuffle是为了避免后一种代码重用攻击而开发的。它将ASLR的代码打乱方法发挥到了极致,每20到50毫秒随机化一小块代码,给潜在的攻击者强加了严格的期限。到目前为止,将运行代码作为一种安全措施在技术上被认为是不切实际的,因为现有的解决方案需要专门的硬件或软件。
在上面的演示中,“#”表示在内存中运行一个典型的web服务器。当服务器切换到使用Shuffler运行时,#每50毫秒移动一次。打乱的web服务器在演示的最后提供web页面。
“当服务器返回攻击者需要的信息时,它已经是无效的了——shuffler已经将各自的代码片段重新定位到不同的内存位置,”该研究的合著者、布朗大学计算机科学教授Vasileios Kemerlis说。
为了便于用户使用,Shuffler与它所保护的代码一起运行,无需修改程序编译器或计算机操作系统。它甚至将自己随机化,以防止自己代码中可能出现的错误。
研究人员表示,Shuffler分别在MIT林肯实验室和佛罗里达州立大学开发的TASR和Remix比类似的连续随机化软件更快地运行并需要更少的系统变化。
作为其他研究人员试图和突破沙狐子的邀请,威廉姆斯国王目前正在以他的个人网站运行该软件。(他可以检查代码正在洗牌,是否有人通过审查程序的日志来攻击该网站)。
在计算繁忙的工作负载上,Shuffler平均减慢了15%的节目,但在更大的尺度上 - 在12个CPU内核上运行的Web服务器,例如 - 性能下降可忽略不计,但是,在研究人员说。
这种通用性意味着软件发布者和安全意识强的个人都可能是潜在的最终用户。威廉姆斯-金说:“这是第一个试图成为人们可以使用的严肃防御系统。”
Shuffler在公开之后需要最后的改进。研究人员表示,他们希望让他们更容易在他们尚未测试的软件上使用。他们还希望提高Shuffler捍卫利用服务器崩溃的能力。
“有数十亿行易受攻击的代码,”该研究的资深作者、哥伦比亚工程学院(Columbia Engineering)计算机科学教授、数据科学研究所(Data science Institute)成员杨俊峰(Junfeng Yang)说。“与其用更安全的语言找到每个漏洞或重写所有数十亿行代码,Shuffler让我们立即建立一个更强大的防御。”
提交:行业监管




