安全漏洞本质扯谈之决战汇编代码

author:alert7

0x00 前言

当前比较流行也比较有效率的挖掘的漏洞的方法是Fuzzing,当然这也需要花点时间去写Fuzzing程序。然而不是每个东西都有必要去写Fuzzing程序,也不是每个东西都可以去Fuzzing的,所以也还是要继续修炼我们的二进制安全流派内功—“肉眼挖洞神功”。

安全漏洞在源代码层面和汇编代码层面会有不同的表现,想要进阶升级的话,必须清晰的了解每种安全漏洞类型在源代码层面和汇编代码层面都是张什么样的。有些安全漏洞在源代码层面容易发现它,有些安全漏洞则在汇编代码层面比较容易发现它。不管是源代码层面还是汇编代码层面,普通人看代码的时候即使看到有安全漏洞的那些代码的时候,往往是“只见代码,不见漏洞”。修炼“肉眼挖洞神功”的目标是看到那些疑似有问题的代码时候能够警觉,能够识别,并快速判定是否可形成安全漏洞。

早些时候给我们翰海源的小伙伴们讲过《深入安全漏洞-Root Cause of Vulnerabilities》和《决战汇编代码》,希望小伙伴们能够掌握安全漏洞的本质原因以及练就“肉眼挖洞神功”。今天把里面的部分例子跟大伙一起分享下。

0x01 源代码层面

1. Link Attack

*unix 下的 link attack,有意识到吗?

2. Integer Overflow Example in OpenSSH 3.1

发生在真实的 openssh 3.1 ,有漏洞吗?

3. Signed Integer Vulnerability Example

注意整形符号,能被绕过吗?

4. Truncation Vulnerability Example in NFS

整形截断问题?

5. 苹果SSL/TLS 重大安全漏洞的细节

(CVE-2014-1266)多个goto fail造成重大安全隐患。

6. MS-RPC DCOM Buffer Overflow
(冲击波)

冲击波蠕虫只因为一个缓冲区溢出。

7. 有漏洞吗?

8. 有漏洞吗?

提示: 5rOo5oSPc216ZW9m

9. 有漏洞吗?

提示:

10. 有漏洞吗?(Antisniff v1.1 Vulnerability)

tips

11. 还有漏洞吗?(Antisniff v1.1.1 Vulnerability)

12. 还有漏洞吗?(Antisniff v1.1.2 Vulnerability)

0x02 汇编代码层面

接下要在汇编代码堆里磨练下,下面的汇编代码有安全问题吗?都是些什么问题?

1. Safe or vulnerability?

2. Safe or vulnerability?

3. Safe or vulnerability?

4. Safe or vulnerability?

5. Safe or vulnerability?

6. Safe or vulnerability?

7. Safe or vulnerability?

8. Safe or vulnerability?

0x04 最后

汇编代码层面的例子需要想想它们的源代码都是怎么写的才能编译出来这些有安全漏洞的代码。做到源代码层面和汇编代码层面通吃。更要做到从宏观上了解程序世界功能和规则,从微观上了解其实现细节。

上面的例子都不到一百行的汇编代码,都找出问题了吗?决战汇编代码就是需要我们在真实程序世界的上千万行汇编代码中找出那些隐藏的安全漏洞,这个难度会高很多。其中有对抗有编程者的防御措施,需要思考如何打败它,是和程序世界的缔造者们的一次跨时间和空间无声的较量。

以上这些其实是一个引子,需要小伙伴继续深入研究推演和锻炼。推荐学习Mark Down & JohnMcDonald两位大牛的书《The Art of Software Security Assessment-- Identifying andavoiding software vulnerabilities》(某些例子来自该书),希望对小伙伴们有所帮助。

评论

h0FF2015-03-03 18:16:56

虽然看不明白,但是感觉很厉害的样子

_Evil2015-03-03 11:18:54

虽然看不明白,但是感觉很厉害的样子

Knight2015-03-01 02:23:45

求详解。

insight-labs2015-02-28 19:20:41

虽然看不明白,但是感觉很厉害的样子