博客 / 实用指南

安全代码审计还是渗透测试:应该选择哪一种?

根据产品团队需要回答的问题、可用的访问权限以及需要做出的改动,来选择合适的服务。

已完成信息安全方向博士研究生学业已通过校内答辩 · 最终学位论文答辩尚待进行

从要做的决策出发

“我们需要做一次安全检查”是个不错的起点,但作为测试范围还不完整。您是要上线新的权限模型、接手一套现有代码,还是要回应客户的安全评估要求?不同情况对应不同的问题。在选择服务之前,先把这个问题写下来。

对于一个新的授权模块,您可能需要了解代码是否始终如一地执行了产品规则。对于一个正在运行的应用,您可能需要证明一个权限受限的用户实际上能访问到什么。这些目标可以对应相互补充的工作。

什么时候应从源代码入手

安全代码审计检查的是实现及其上下文:信任边界、数据流、权限以及对不可信输入的处理。当问题聚焦于某个特定模块、某次变更或疑似的根本原因时,它最有用。所需的访问权限可能包括相关代码、构建说明和测试。

有价值的结果会指出受影响的位置、解释缺陷成因,并为开发人员提供切实可行的修复和验证方法。自动化 SAST 可以辅助调查,但它的告警仍需要解读和验证。请确认会审计哪些模块,以及结论将如何得到证据支撑。

什么时候应优先关注运行时行为

应用渗透测试通过约定的接口和攻击路径来考察产品。账户、角色、环境和运行限制决定了可以测试哪些内容。它适合用来检查某个对外暴露的流程是否允许非预期的操作,并了解其可观察到的影响。

报告应说明测试范围、经确认的发现、复现步骤和修复优先级。如果能提供源代码,评估质量会更高;渗透测试并不一定只能完全以黑盒方式进行。请在方案中确认所采用的方法。

围绕一个重要问题组合多种方法

对于一次敏感的 API 变更,可以先审计相关的访问控制代码,再用约定的角色实际验证其行为。对于一个原生解析器,可以审查输入和大小的处理,并在可行时考虑定向动态测试或模糊测试。方法应当服务于测试对象和目标。

预算有限时,选择一个范围明确的组件或流程,并保持足够的深度。以书面形式约定交付物、排除项以及任何修复验证。只要简要介绍您的产品、技术栈和审查原因,我就可以帮您确定这样的范围。

参考来源

需要在您自己的产品中检查这个问题吗?

应用渗透测试

想学会自己发现这类漏洞吗?

Web 应用渗透测试课程(一对一)
全部文章

08联系

即将上线处理用户数据的产品?

给我发一份简要需求。我会在三天内回复问题或方案大纲,价格在开始前以书面形式确定。