by Anhkgg | 2018年12月25日 | 080/100
因为之前一段时间有尝试挖过内核漏洞,对于该类型漏洞各种触发原因确实比较熟悉了。
无非就那么几类:
0. 初级的,没有校验输入null,或者长度
1. 长度校验不够,导致溢出
2. 无符号、有符号混用,造成数据截断,溢出
3. 输入中有offset,控制可溢出
4. 输入中有指针,控制任意地址读写
5. 字符串非0结尾,可溢出
6. 内存是否合法,可读写缺乏校验,或者校验不够,可绕过
7. 某些内容分内存和长度两个字段表示,相互校验不够严谨,长度可控溢出
总结来说,输入结构越复杂漏洞可能越多。
所以在此处产品代码审计中,很快就找到多个漏洞,大多会忽略字符串的处理,然后是长度的校验。
某些漏洞在fuzz时没有跑出来,一个是因为当时协议分析不够,为绕过协议检查,还有缺少某些payload,如绕过不严谨的内存检查。
后面根据这些情况对fuzz进行了增强,后续验证是否有效。
另外也负责这些漏洞的修复,发现其实都是些非常小的问题,但危害却是不小。
以前的产品都缺乏这方面的教育,虽然是安全产品,也却真的不安全。
还是tx、数字之类的更加有战斗经验,自保护确实都非常不错。
对接口调用的防护使用了非常多的手段
1. 文件签名校验
2. 白名单进程
3. 路径检查、dll劫持防护、dll签名检查等等
总的来说,这次活挺有意义,下次有时间再详细总结一下。