本文是关于如何查找代码漏洞文章系列的第一篇。从宏观来看,过程是这个样子:
找到潜藏危险的功能
找到从你控制的输入到这个危险功能的路径
修正会导致程序出问题的输入
我们将从第一部分开始:如何找到潜藏危险的功能。以我的经验,80%的错误都藏在大约20%的代码中。具体来说,这个比例更接近90/10。由于我们通常需要彻底理解代码才能发现罕见的漏洞,因此找出需要重点关注的那20%就变得至关重要。我使用的一种方法是关注“坏词(bad words)”的群集。
我将通过一个简短的故事告诉大家。最近在一次红队行动中,我浏览一个巨大的terraform仓库时看到一行看起来很正常的代码:
driver.raw_exec.enable = 1
这个时候,我甚至都没有在尝试寻找漏洞,但是看到这行代码后,我就停下来弄清楚它在做什么。原来,它正在配置Hashicorp一个名为Nomad的作业调度程序。作为一名尽责的红队队员,我立刻查询了Nomad文档。在那里,我发现了一个不祥警告:
这让你可以无隔离地运行作业;出于安全原因,默认情况下将其禁用。
我马上精神了,迅速做出一个最简单的Nomad作业。几分钟后,我就有了对该集群的root访问权限和一大堆凭证。这次行动马上就可以完成了。
Comments