本节书摘来自华章计算机《威胁建模:设计和交付更安全的软件》一书中的第3章,第3.3节,作者:[美] 亚当·斯塔克 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.3 篡改威胁
篡改就是修改内容,典型的情景是修改磁盘上、网络上或者内存里的内容,还可以修改电子数据表里的数据(Excel表或者其他编辑程序)、改变二进制数据或者磁盘上配置文件,也可以修改类似磁盘上的数据库这样复杂的数据结构。在网络上,可以添加、修改或者移除数据包。有时添加数据包比修改动态的数据包更容易,而程序安全处理额外的数据副本,是非常不好的。表3-3中给出了更多的篡改示例。
https://yqfile.alicdn.com/289b53bb2b7259a8f4042f43b206a24ba861b393.png
" >
3.3.1 篡改文件
攻击者能修改任何他们有写入权限的文件。当你的代码必须依赖于那些别人有写权限的文件时,就存在文件被恶意修改的可能性。虽然文件篡改最明显的是在本地磁盘上,不过,如果文件可以允许远程共享,就像网上的大部分JavaScript,就会有很多篡改的实现方法。攻击者可通过破坏别人的网站来破坏你的安全性,可以(因为可怜特权、假冒或者权限提升)修改你的文件,还可以修改链接或者重定向,因为链接经常不在完整性检查范围内。如果在你所能控制的(例如服务器)和不能控制的对象(例如网络浏览器)之间有高速缓存时,篡改攻击会有一些微妙的变种。例如,“缓存污染攻击”利用缓存中较弱的安全控制策略,向web缓存中插入数据(OWASP,2009)。
3.3.2 篡改内存
如果攻击者与你有同样的权限,他就能修改代码。那么一切防御手段都没有多大用处。如果你的API句柄通过按引用方式(这是为了速度而经常选择的一种方式)处理数据,那么攻击者可以在你执行安全检查之后修改数据。
3.3.3 篡改网络
网络篡改是指能够将网络数据引到攻击者机器中,然后转发一些完好的数据和一些被修改的数据,篡改方式多种多样。不过,并不需要直接把数据带给你,WiFi和蓝牙的出现,使得越来越多的数据流可以通过空气传输。很多网络协议在最初设计时是需要有特殊的硬件设备才能创建或者读取数据包,对硬件的特殊需求可防止篡改(通常是假冒攻击)。软件无线电(Software-Defined Radio,SDR)的出现悄然改变了对特殊硬件的需求。如今很容易买到物美价廉的SDR单元,对其编程后可篡改无线协议。