首页
社区
课程
招聘
[转帖]CVE-2018-1040漏洞现形记(6)
发表于: 2019-12-5 09:37 4861

[转帖]CVE-2018-1040漏洞现形记(6)

2019-12-5 09:37
4861

CVE-2018-1040漏洞现形记(6)

11 污染从哪来

        提到污染,很多人都知道,无非是外部输入的参数构成的,如scanf函数的输入。当然,还有一些,如函数的参数输入,特别是操作系统的API函数,被大量外部用户调用,其参数也构成外部输入污染。

        除此之外,从漏洞的判定来看,还有其它的漏洞污染。如整数溢出构成污染、堆溢、栈溢、算术运算污染、污染输入函数的输出等,这些都会构成污染,不过这些构成二次污染。

        显然,污染不一定构成漏洞,特别是初级污染。二次污染则可能。

12 约束条件

        其实,单独谈污染,谈各类溢出,估计很多人都能谈。这是学院派的做法。产品则还要更进一步。crystal不仅找出所有的污染传播对象,还要给出传播的路径、传播的约束条件。没有特定的路径,谈污染传播是耍流氓。没有约束条件,污染的误报可能很高。

        约束条件是什么?如何表示?这个要做符号执行分析了。以前一直以为符号执行很高大上。但是,当我真正将代码的对象特征分析、污染传播做完了之后,发现一切都是水到渠成的。有一个吐血的感想:有很多人没有做过具体的代码分析程序,但拍脑袋想一些程序分析的问题,到处问别人。对懂行的人而言,答非所问,鸡同鸭讲。对同样不懂得人,则还心有戚戚焉,但解决不了问题。最要命得是这类人还非常自信,对别人的解释做选择性的过滤后理解,遇到这样得人要吐血。

        扯远了。符号执行crystal是独立编写得引擎实现的,约束求解用的是别人的。当然,法律是许可的。本来想做过简单的约束求解,但一则麻烦,二则时间不够。再说,产品不是技术秀,没必要。

        现在,所有的函数调用、路径分析、污染传播、各类漏洞执行的约束条件基本都能展示。这得益于代码的对象分析系统的灵巧和完备性;感谢当年老板的严谨和认真。

13 轻舟已过万重山

        在测试时,一直纠结于IDA的各类问题。特别是在几十万行代码的格式化分析时,各类问题层出不穷。每天都在焦虑,每天都在彷徨,每天都在绝望,每天都准备投降----老子不干了。但是,睡一觉后,又找到了一丝火花,于是又再出发。到现在,终于格式化分析没有问题了。近40万行的内核代码,足以覆盖99%的情况吧。至于还有可能的1%,老子真不干了。谁要搞就让那孙子搞吧!不过可能还是老子来搞!

        搞完这个格式化分析之后,最担心的就只有路径爆炸。尽管验证了许多程序;尽管做了许多理论分析和证明;但路径爆炸真的很担心。因为我在内核发现了两个很变态的函数:200-300行代码有近100个跳转指令,也就是两到三个指令就有一个跳转,很好奇这是什么样的源代码写出来的。或者本身就是汇编写的吧。以前见识过路径爆炸,一个1000行的函数,貌似路径遍历到了上亿,好像没有重复。前几天对一个300多行的代码遍历路径,过了一百万。测试前面的十万条路径,双重遍历前面的五万,没有重复!我现在想来都头皮发麻。当然,我在漏洞分析时从应用层面解决了爆炸问题,这得益于某次无聊得培训。

        还有什么问题吗?没有!那就万流归宗吧!

14 万流归宗

        从技术层面来说,crystal现在能检测的有未初始化、堆溢、栈溢、整数溢、除0等。但这些都是没有技术含量的东西。错了,单就是整数溢出,就有很多问题。当然,堆溢、栈溢还有许多不同类型和场景也有问题。我好像看到有个博士专门有毕业论文讨论二进制代码的整数溢出的,向他致敬。他的所有理论成果估计都要为我所用了,哈哈。如果将来有收益,我估计会找到他给点研发补偿。

        还有一本专门讲逆向分析的开源书,上面对循环分析得很好,简短精炼,已为我所用了。

        其实,在我做好了二进制代码的对象分析系统架构之后,现在国内外的二进制代码理论分析成果基本上都可以在crystal上验证应用了。而且是快速的应用上来。记得国防科大有个学院派的老总说,我们不缺理论,也不缺实践,缺的是将理论和实践结合的人。我说我可以,但他舍不得花钱!其实,如果没有扎实的做过平台的基础分析、反复的设计和一线的编程实现,理论永远是理论,和实践差距一直存在。尽管不大,但很难越过。

        下一步,估计要专门找国内外的所有关于二进制代码漏洞挖掘的理论成果,逐一用到crystal上面去。估计这就是我一直想做的事:万流归宗!

        在万流归宗的过程中,如果写博士毕业论文,估计可以写好几篇了。如果发SCI,估计也是杠杠了。不过我老了,没兴趣。有需要的硕士、博士、教授可以来一起切磋,咱免费提供实验平台,还免费帮助编程分析实现。



        (后面如有时间,我们将专门讲权限误用漏洞、对象类型错误漏洞等的检测,敬请关注。)


更多技术,请关注   朗曦科技   公众号

(未完,待续)

2019.12.05

麟朗曦科技  林孟尼


[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 914
活跃值: (2918)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
2
什么系统的40万内核代码呢
2019-12-5 16:35
0
雪    币: 630
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
万剑归宗 什么系统的40万内核代码呢
是二进制的,国人常用的操作系统
2019-12-5 18:40
0
雪    币: 38
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
六篇了,这活儿整挺好。
漏洞还没现形呢,分析明白了吗? 而且到头来连点支撑的数据都没 : -)   测试了哪些系统/软件?能覆盖多少老漏洞?又发现了新漏洞了吗?   
跳出去多看看别人做了啥吧,一股子闭门造车的民科味道。
2019-12-7 17:31
0
雪    币: 630
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ooOOOoomxw 六篇了,这活儿整挺好。 漏洞还没现形呢,分析明白了吗? 而且到头来连点支撑的数据都没 : -) 测试了哪些系统/软件?能覆盖多少老漏洞?又发现了新漏洞了吗? 跳出去多看看别人做了啥吧,一 ...
没这样玩过吧!
不要说30万行二进制代码,随便1M的windows内核程序,能分析有多少路径?多少函数调用?每天路径下的约束条件?函数调用的约束?还有很多东西,估计很多人想不出也不会想到要分析这些问题。
国内外所有的二进制代码分析的有价值的学术论文我都能用哦。
最后于 2019-12-7 21:59 被internetH编辑 ,原因:
2019-12-7 21:33
0
雪    币: 38
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
internetH ooOOOoomxw 六篇了,这活儿整挺好。 漏洞还没现形呢,分析明白了吗? 而且到头来连点支撑的数据都没 : -) 测试了哪些系统/软件?能覆盖多少老 ...
嗯嗯嗯,写了这么多,别人都想不到,别人也没这么玩过,就你想到了。 
talk is cheap  也不用show code,测试数据都没有,横向对比也没有,章口就来谁都会。
期待你第七篇整活儿,keke。
2019-12-9 18:30
0
雪    币: 630
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个没什么好争论的。喜欢的人如获至宝,不喜欢的人如渣。隔行如隔山。

字里行间的思路,可能让人少走半年的弯路,国内还有顶级公司的人在二进制代码分析的黑夜中摸索呢。关键是如果有机会参与到其中。

建议你看看“极光无限”,他们翻译了一篇国外“二进制代码的白盒分析”,好像是这些字样的文章,
2019-12-10 12:46
0
游客
登录 | 注册 方可回帖
返回