「日记」一次产品代码审计
2018-12-25 22:57:53 Author: mp.weixin.qq.com(查看原文) 阅读量:0 收藏

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签名检查等等

总的来说,这次活挺有意义,下次有时间再详细总结一下。


文章来源: https://mp.weixin.qq.com/s?__biz=MzU4NjY5ODM3Nw==&mid=2247483770&idx=1&sn=6346797f7754ac829fc393ceb41f499b&chksm=fdf61a9cca81938a8ee794a7c3dd58541de383ed2a65bafbef6d581dfee2cba117edabad22fb&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh