作为一名安全负责人,我刚刚注意到我们的一个生产网络应用程序遭到了一些黑客的攻击。攻击者访问了 .git/objects/ 文件。
我已经修改了 .htaccess 以使 .git 及其内容无法访问。
攻击者可能会获得一些模型文件,其中包括一些数据查询,但没有数据库凭据。我应该担心吗?
作为一名安全负责人,我刚刚注意到我们的一个生产网络应用程序遭到了一些黑客的攻击。攻击者访问了 .git/objects/ 文件。
我已经修改了 .htaccess 以使 .git 及其内容无法访问。
攻击者可能会获得一些模型文件,其中包括一些数据查询,但没有数据库凭据。我应该担心吗?
我应该担心吗?
担心?不,当然不。
你应该对此感到非常害怕并做噩梦。
窃取.git
目录意味着攻击者拥有生产服务器的当前和过去的源,以及自存储库启动以来所有代码的所有历史记录。有了它,他们可以重建您的基础设施,并对代码进行白盒测试。
他们现在正在寻找远程代码执行、文件包含和 SQL 注入。您的开发人员必须检查每个处理用户提供的数据(cookie、参数、URL 查询等)的函数是否存在任何可能的漏洞。
您通过拒绝访问服务器上的 .git 取得了良好的开端,但您的工作才刚刚开始。您的代码现在已为攻击者所知,他们正在检查代码是否存在漏洞。如果任何时候有人在代码上硬编码凭据并提交它,攻击者就会拥有该密码。
你应该做的事情:
准备好应对经过微调的有针对性的攻击。
担心?或许。您的源代码是否充满漏洞?好的。但老实说,在你的源代码泄露之前,你应该担心。
人们认为他们是安全的,因为“没有人会发现我可怕的安全漏洞,因为他们不知道它是如何工作的!”。这是考虑安全性的一种不好的方式。在无法访问源代码的情况下发现了许多安全漏洞。我什至猜测大多数是在没有访问源代码的情况下被发现的。
我曾经发现一个安全漏洞,其中“安全性”将接口隐藏在 iFrame 中,因此您看不到正在传递的 URL。谢天谢地,我在它传到外面世界之前就抓住了它。访问源代码不会帮助找到这一点。发现这是浏览器中“查看源代码”的问题。
实际上,拥有源代码可以加快速度,并使攻击更容易,但缺少源代码远不能保证您的安全。
错误不是通过源代码隐藏的秘密。在某些方面,实际上使用攻击工具通常比阅读源代码中的错误或通过静态分析工具运行它更容易。
所以如果我是你,我会放松,开始做你一开始就应该做的事情。分析您的代码是否存在安全漏洞。开始使用良好的安全实践。从一开始就设计它。如果你在安全论坛上问这个问题(然后透露你的产品刚刚泄露了它的来源),我猜你还没有这样做。这些都是好主意,而且您的代码不会泄露。
没有魔法子弹。当心那些声称可以保护您的糟糕代码的安全产品或声称可以在某一时刻发现您软件中的所有漏洞的昂贵审计。这些东西有它们的位置,并且可能在某些方面有用,但也有大量的蛇油在出售。套用伟大的记者 Hunter S. Thompson 的话说:
IT 安全行业比大多数事情都丑陋。它通常被认为是穿过软件世界中心的某种残忍而浅薄的金钱沟,一条长长的塑料走廊,小偷和皮条客在这里肆无忌惮,好人像狗一样死去,没有充分的理由
现在,亨特在谈论电视,但我一直认为同样的事情也适用于 IT 安全。
不,你不应该非常担心,除非你做了可怕的禁忌,比如把凭证放在你的源代码树中。因此,访问这些文件的一方看到了您的部分源历史记录。大不了。这为他们提供了一个了解您的应用程序如何在内部执行操作的窗口,并可能帮助他们寻找漏洞,但这并不是灾难性的。
对您的应用程序进行安全审查是一个非常好的主意,尤其是您怀疑他们访问的代码部分,以防他们可以利用明显的错误。但你不必惊慌。