篡改(Tampering)
完整性(Hash、MAC、数字签名、ACL等)
处理过程篡改
利用输入通道注入恶意代码
校验内容
-
是否所有输入信息在未验证前都默认为恶意数据?是否考虑格式、长度、大小、类型和范围的校验?
-
跨越信任边界的通信消息容易遭受畸形报文攻击。是否对这些消息所定义的所有字段做了校验?产品测试过程中是否对这些消息做了Fuzzing测试?
校验处理策略
-
输入校验是在客户端做的吗?服务端会重新做校验吗?
-
输入校验使用白名单还是黑名单?
-
是否支持集中式输入校验?
具体场景
-
需要传递给数据库的外部输入是否做了输入校验,以防止数据库访问过程中出现SQL注入?
-
是否使用了XML查询技术?如果是,是否进行了Xpath表达式的输入验证?
-
系统是否使用了LDAP技术?如果是,是否进行了LDAP查询的输入验证?
系统升级、备份、恢复过程中篡改系统文件
-
软件、固件等二进制文件是否有机密性要求?
-
软件、固件在
分发
的过程中是否有完整性保护的需求? -
软件、固件在
运行
的过程中有没有完整性保护的需求? -
产品在安装、升级、加载软件/固件的过程中,是否有校验软件/固件发布者的需求?
-
系统是否有安全启动(Secure Boot)的需求?
-
如果使用的是数字签名算法,私钥是如何管理的,用于校验签名的公钥是如何分发的?
-
对设备上的软件升级需要什么样的权限?
-
是否使用弱校验算法?
篡改子处理过程
-
对子处理过程的加载,有没完整性保护的需求?
-
子处理过程有没可以被利用注入恶意代码的通道?
数据存储篡改
获取访问权限
关键文件权限控制不当
-
系统中关键的文件、目录权限是怎么设置的?敏感数据文件的权限时怎么设置的?
-
文件的名称和路径是否来自非信任的输入?
-
在校验数据存储的访问权限时,是否依赖于用户输入的文件路径、URL或者其他字符类输入?
-
如果数据存储在SQL数据库中,有没有防范SQL注入攻击?
处理过程权限提升
绕过完整性校验机制
-
数据存储有没有完整性校验机制?
-
使用Hash值校验存储数据完整性时,Hash值是否与该数据一起存放?
-
是否使用弱校验算法?
构造垃圾数据覆盖存储空间
- 存储空间满是怎么处理的?对于重要的数据是否单独配置了配额,以防止被其他数据覆盖?
数据流篡改
完整性校验缺失
-
跨信任边界的数据传输是否有完整性保护机制?
-
使用Hash值校验软件完整性时,Hash值是否与文件一起分发?
-
是否使用弱校验算法?
重放攻击
-
是否考虑了防护重放攻击?
-
认证过程是否能防御重放攻击?
中间人攻击
- 是否考虑了防护中间人攻击?
- 认证过程能否防御中间人攻击?