OSC 第 123 期高手问答 -- 漏洞战争:软件漏洞分析精要

开源中国股瞎 发布于 2016/08/08 17:17
阅读 3K+
收藏 8
OSCHINA 本期高手问答(8月8日-8月16日) 我们请来了  @quange(林桠泉)为大家解答关于软件漏洞分析方面的问题。

 

@quange(林桠泉),网络安全从业者,就职于腾讯公司。从事网络安全工作十余年,参与翻译过著作《Exploit编写系列教程》,广受读者好评。

不知道大家是否曾有过这样的经历:
● 无法读懂网上很多软件漏洞分析文章,不理解里面的漏洞成因和漏洞利用技巧。
● 即使读懂某篇软件漏洞分析文章,自己仍无法独立完成相同漏洞的分析。如果文章中所使用的
测试环境与软件版本跟自己使用的不一样,则顿时更不知如何入手。

● 很多软件漏洞分析文章贴出存在漏洞的汇编代码,指出导致漏洞的原因,即“结论式分析”,但如何定位到此段代码并无解释,看完之后,仍不知如何快速定位,缺乏可借鉴的思路。

带着这些问题,相信大家会在此次答疑活动以及《漏洞战争:软件漏洞分析精要》一书中找到想要的答案。

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《漏洞战争:软件漏洞分析精要》一书。

购买链接:http://product.china-pub.com/4971073

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就软件漏洞分析方面问题向 @quange(林桠泉)提问,请直接回帖提问。

加载中
0
博文视点
博文视点
OSC 第 123 期高手问答 -- 漏洞战争:软件漏洞分析精要 


@tinyhare @luv @myw31415926 @Leon温陵 @mahengyang    


恭喜以上五位网友或获得《漏洞战争:软件漏洞分析精要》图书一本 


请私信 @博文视点   告知快递信息(格式:姓名+电话+地址+邮编号码)! 
2
mahengyang
mahengyang

@quange : 经常看到apache漏洞,浏览器漏洞,ssh重大BUG,好像这么多公司数十年来一直相安无事的过来了,虽然的软件依然会充满漏洞,但是并不影响公司的发展,不知道这么想对不对?

quange
quange
肯定有影响的,很多严重漏洞刚曝光的时候,特别是一些可远程代码执行的,都会导致很多厂商服务器被黑。所以漏洞一出现,一线的运维同学就苦逼了,必须加班加点地修复漏洞,像腾讯这种以万计的服务器,一补就是通宵的节奏。总结起来一句话,不是不影响公司发展,而是总有一帮人挡在最前线,帮公司消除或尽可能地降低影响。
0
tinyhare
tinyhare
@quange : 我总是认为一个漏洞在未被发现的情况下应该可能存在于代码的任何位置,甚至根本就不存在,找到之前我们并不能确定。找漏洞是通过看源码,看反汇编代码么?漏洞出现的位置都有一定的特点吗?您是怎样在一个不知是否有漏洞的软件中找漏洞呢?谢谢。
tinyhare
tinyhare
回复 @quange : 谢谢大神,以后要多关注漏洞相关的东西啦!
quange
quange
1、看源码,看反汇编代码,这种方法长期有效; 2、最常用的还是做Fuzzing(模糊测试),也就是通过输入大量畸形数据,然后监控软件是否崩溃,其它领域如Web,或者驱动内核也都是可行的。 3、污点追踪和符号执行的思路,偏于学术,且工程量大产出不一定有保证,有时需要投入人力做二次确认,性价比低一点就是,还也是一种方法。
0
霡霂
霡霂
@quange :小白一个,请问现在很多高危漏洞的发现是不是都是人为构造程序进行攻击测试,发现后再报告?作为腾讯的大牛,腾讯的平台中是否有专门的系统对异常的数据请求和异常的运维数据进行监控,然后根据这些数据分析发现漏洞?我的意思是类似于机器学习或者更智能更精确的bug定位的系统,好像问的有点偏软件测试,还请指教。
霡霂
霡霂
回复 @quange : 谢谢,名字好霸气,我会找相关资料研究一下。
quange
quange
自动化的安全测试与防御系统是企业安全建设不可缺少的部分,测试一个网站或软件,或许你可以人工构造测试,但上千上万个的时候,显然是不可行的。腾讯有自己的安全检测与防御系统,比如“金刚”终端审计系统、“宙斯盾”防DDOS系统、“洋葱”入侵检测系统、“门神”WAF以及WEB扫描器等等。
0
luv
luv
@quange :一层又一层 iptables就已经在最里面的的系统级防火墙了,系统级防火墙前面还有其他硬件防火墙设施,没那么容易攻破的,除非踩点很久了。一次攻击往往需要至少几个月的等待。
quange
quange
攻防本来就是不平等的,其实有时候,防御者在某个角落防备得滴水不落,但攻击者有时压根不从那角落走,只要整个系统有一处“短板”就有可能被入侵,而不是取决于在哪块防御做得更好。
0
luv
luv
@quange :很想知道现在设置的沙盒让shellcode编写越来越困难,而且现在的缓冲区溢出漏洞随着语言的完善慢慢减少了,也不知道从何下手了,现在最多的攻击大部分都采用ddos攻击,真正意义上的二进制漏洞程序越来越少了,很期待作者的这本书,支持
quange
quange
虽然一些内存防御机制的不断完善,使得二进制漏洞利用难度增加不少,但是你看现在那帮搞二进制的不还活得好好的吗,主流软件的exploit还不是照样出。所以其实不是二进制漏洞越来越少了,这个看看四大厂商(microsoft、adobe、apple、Google)的漏洞公告就知道了。
0
luv
luv
@quange :我觉得唯一比较可靠的是自定义从coff二进制格式上扩展出第三种可执行文件格式,pe和elf格式差不多,不过可以在此之上做优化,重新定义的二进制格式在短暂的时间内应该不会那么容易攻破。个人愚见,异想天开,哈哈。
0
luv
luv
@quange :漏洞跟代码量成正比的,代码越多逻辑检查跟不上容易产生漏洞,高内聚低耦合的代码虽然质量高,但是变相的增加了每个模块的复杂度,因为完善的单独模块需要各边界值的效验和所有逻辑判断的准确。所以在高效和安全方面需要权衡一下价值度。一个功能确实可以拆分成2个单独的模块功能,可能导致的结果是调用1次前面的模块,相比后面的调用2次模块,函数出入栈的消耗和时间空间的损耗,虽然可能会更安全,但是从某个角度上降低了性能。有点像微内核和但内核的比较。
0
myw31415926
myw31415926
@quange :您好,现在因为软件模块化程度很高,第三方模块(尤其是开源模块)的在不断丰富,而且编程语言也在不断完善,使得漏洞越来越隐晦,某些有可能都不是程序本身的漏洞。但出了问题,我们第一时间都会怀疑自身,而不是其他模块,导致需要花相当长的时间来查找bug,针对这种情况,有没有比较好的解决办法?另外,受自身工作环境限制,很难在工作中可以锻炼挖掘各种漏洞的能力,有没有针对挖掘漏洞的训练平台?一点个人疑惑,不当之处请见谅,谢谢!
myw31415926
myw31415926
回复 @quange : 非常感谢您的回答和推荐
quange
quange
1、找Bug与漏洞分析都是靠逆向分析的底子,无论是第三方库还是自身程序,都可以通过调试逆向来分析,比如崩溃看下栈回溯,但如果是一些逻辑型的bug,就相对麻烦些,这个得具体情况具体分析,推荐《格蠹汇编》一书。 2、漏洞训练平台可以尝试做一些CTF赛题,参考这里:https://github.com/ctfs,或者https://ctftime.org/writeups,有题目也有解答,可以试试。
0
ByRegan
ByRegan
@quange :请问一下 寻找逻辑漏洞的思路有哪些
quange
quange
人工肉眼为主,偶尔fuzzing 能捡几个
返回顶部
顶部