
基因组测序时,DNA分子可能会被打败。 分子可以通过感染试图读取它们的程序来攻击计算机。 这就是华盛顿大学研究人员的想法,他们
在DNA补丁中编码了一个漏洞利用程序 。 他们首次证明了您可以通过DNA远程感染计算机。
左边的照片是一个试管,上面有数千亿个利用合成DNA分子编码的漏洞利用程序副本,在测序和处理后可以感染计算机系统。
在过去的五年中,基因组测序的成本从100,000美元降至不到1,000美元,这刺激了基因组学领域的科学研究和许多商业服务,这些服务可以分析您的基因组以实现不同的目的:构建遗传树,寻找祖先,分析身体能力,易感性各种运动和体育活动,对肠道中相容性微生物的研究等等。 这项科学工作的作者确信,在对基因组进行测序时,对安全性的关注不足:在这一领域,他们尚未遇到直接通过基因组进行攻击的恶意软件。 现在需要考虑这种攻击媒介。
基因组测序已开始在法医学和档案数据存储等应用学科中使用,因此在大规模应用测序之前,应先探讨安全问题。
研究人员编写了一个漏洞利用程序,然后合成了一个DNA序列,经过测序和处理后,生成了一个漏洞利用文件。 当加载到易受攻击的程序中时,此文件将打开一个套接字,以远程控制系统。
这项研究没有实际用途,因为作者没有闯入生物学家使用的特定测序仪程序。 相反,他们自己修改了程序
fqzcomp 4.6版(DNA序列压缩实用程序),从而在其源代码中添加了一个已知漏洞。 但是,这并不与这些程序也存在漏洞这一事实相矛盾。 最重要的是,科学家能够通过生物材料样本证明计算机感染确实是可能的。
要更改
fqzcomp
源代码
fqzcomp
您必须在C ++中添加54行,并删除127行。 该程序的修改版使用简单的两位方案处理DNA:四个核苷酸被编码为两位:A为00,C为01,G为10,T为11。
除了将漏洞利用程序引入程序中并将其转移到两位处理之外,研究人员还禁用了操作系统中众所周知的安全功能,包括ASLR内存随机化系统以及防止堆栈溢出的功能。
该漏洞利用程序本身(在左窗口的插图中显示)大小为94字节,由376个核苷酸编码。 该序列已上载到IDT gBlocks生物分子合成服务。 首次利用漏洞合成DNA的尝试未成功。

有几个问题。 分子中的重复序列过多,不建议用于合成。 在一处有13个连续的T核苷酸,很难合成。 另外,沿整个长度没有足够的GC对增强分子。 最后,该漏洞利用时间太长,无法进行测序。
但是研究人员设法克服了所有困难,他们将漏洞利用长度减少到43个字节并获得了可接受的CG序列数,因为漏洞利用文本主要由小写字母组成(ASCII中的01对应于核苷酸C)。 因此,漏洞利用程序中的端口号从3(ATAT)更改为9(ATGC)。 产生的序列被上载到IDT gBlocks合成服务,合成多达500个碱基对花费89美元。

已经证明了攻击的理论可能性,研究人员研究了用于DNA测序和分析的程序的安全性。 总共研究了13个用C / C ++编写的著名开源生物学程序。 他们的安全性与标准软件进行了比较,后者通常会受到恶意用户的攻击,例如Web服务器和远程Shell。 事实证明,生物程序具有更多潜在危险的函数调用(例如
strcpy
)。

我们设法在三个程序(fastx-toolkit,samtools和SOAPdenovo2)中找到缓冲区溢出。 通过此类错误,您可能会导致程序崩溃。 作者知道此类故障通常会转化为可利用的漏洞,因此就此解决了。
科学工作介绍
(pdf)将于2017年8月17日在第26届
USENIX安全研讨会上举行 。