tva
← Insights

多阶段安全审计:加固 Next.js 应用

为什么分阶段进行

单次安全扫描通常会产生一长串问题,按严重性排序——但不能反映修复的相互依赖性。分阶段方法首先修复基础问题,以便后续阶段在更安全的基础上进行测试。

第一阶段:表面漏洞

第一阶段专注于明显的暴露:通过公共 URL 可访问的内部 API 路由、在错误响应中泄露堆栈追踪的端点、以及缺少速率限制的认证端点。

发现的最重要问题:一个用于管理操作的内部 API 路由,只验证认证(用户是否已登录),而没有验证授权(用户是否有权限执行此操作)。

第二阶段:认证边缘情况

第二阶段专注于认证流程中的细微漏洞:Supabase 的行级安全策略中的漏洞——用户可以通过精心构造的查询访问其他用户的数据、会话管理中的竞争条件,以及 OAuth 流程中的 CSRF 保护不足。

第三阶段:基础设施硬化

第三阶段处理基础设施级别的安全:HTTP 安全头(CSP、HSTS、X-Frame-Options)、依赖项漏洞扫描,以及 Docker 容器权限。

在这一阶段发现的最重要问题:三个 Docker 容器以 root 权限运行,在发生容器逃逸时不必要地扩大了攻击面。

回归测试

每次修复都附有一个测试,验证漏洞已关闭,以防止回归。这些测试被集成到 CI 管道中,而不仅仅是在审计期间手动运行。

相关洞见

相关文章