关于 sast-analysis
用于安全评估前期侦察的代码库分析技能,面向需要先了解项目结构的安全审查者。它梳理技术栈、入口、数据流与信任边界,并将架构概况写入 sast/architecture.md,供后续分析使用。
主要功能
- 01识别语言、框架与依赖
- 02梳理服务边界和数据流
- 03检查入口、认证与外部集成
- 04记录敏感数据及信任边界
适用场景
- 01为后续定向漏洞检测建立架构背景
- 02了解大型代码库中的认证与数据访问路径
- 03整理项目入口、基础设施和依赖情况
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ utkusen/ sast-skills --skill sast-analysis安装后在 Claude Code 中输入/sast-analysis确认已加载。
详细介绍
代码库分析
你正在进行安全评估的第一阶段。目标是深入了解代码库。此阶段不是查找具体漏洞,而是纯粹的侦察。
在项目根目录中创建 sast/ 文件夹(如果尚不存在)。此阶段会在其中生成一个输出文件:
sast/architecture.md — 技术栈、架构、入口点和数据流
阶段 1:技术侦察
探索代码库并识别以下内容:
- 语言:使用的所有编程语言,以及指定的版本
- 框架:Web 框架、ORM 层、模板引擎、任务队列
- 包管理器和依赖项:锁文件、依赖清单(package.json、requirements.txt、go.mod、Gemfile、pom.xml 等)
- 基础设施线索:Dockerfile、docker-compose、Kubernetes 清单、Terraform、CI/CD 配置
- 数据库:SQL、NoSQL、缓存层、消息代理——检查连接字符串、ORM 模型和迁移文件
- 身份验证和授权:身份验证库、中间件、会话配置、OAuth/OIDC 提供方、JWT 使用情况、API 密钥模式
- 外部集成:第三方 API、支付处理服务、电子邮件服务、云 SDK、Webhook 处理程序
- 入口点:HTTP 路由、GraphQL 架构、gRPC 服务定义、CLI 命令、WebSocket 处理程序、定时任务、消息使用者
先阅读依赖清单、项目配置和目录结构。然后深入源代码以确认发现。
阶段 2:架构梳理
根据阶段 1 的结果,构建以下方面的整体模型:
- 服务边界:这是单体还是微服务?各部分如何通信?
- 数据流:用户输入如何进入系统、经过处理、存储并返回?
- 信任边界:系统在哪些位置从可信上下文切换到不可信上下文?(例如:用户输入 -> 后端、后端 -> 数据库、服务 -> 服务、服务器 -> 客户端)
- 权限级别:有哪些角色/权限?如何执行?是否有管理面板?
- 敏感数据清单:个人身份信息、凭据、令牌、财务数据、健康记录——分别存储在哪里,又如何流转?
将阶段 1 和阶段 2 的结果写入 sast/architecture.md。 使用以下格式:
# Architecture: [Project Name]
## Technology Stack
| Category | Details |
|---|---|
| Languages | ... |
| Frameworks | ... |
| Databases | ... |
| Auth mechanism | ... |
| Infrastructure | ... |
| External services | ... |
## Architecture Overview
[Describe the architecture: monolith vs microservices, how components interact,
main modules and their responsibilities]
## Data Flow
[Trace how user input enters the system, gets processed, stored, and returned.
Cover the primary flows (e.g., registration, login, core business actions).]
## Entry Points
| Entry Point | Type | Auth Required | Description |
|---|---|---|---|
| ... | HTTP/GraphQL/WS/etc. | Yes/No | ... |
## Trust Boundaries
[List each trust boundary and what crosses it]
## Sensitive Data Inventory
| Data Type | Where Stored | How Accessed | Protection |
|---|---|---|---|
| ... | ... | ... | ... |
重要提醒
- 不要报告具体漏洞(例如“第 42 行存在 SQL 注入”)。那是后续阶段的工作。
- 探索要全面。阅读实际源代码,而不只是配置文件。查看身份验证中间件如何应用、查询如何构建、文件上传如何处理。
- 如果代码库很大,优先检查安全敏感区域:身份验证、支付、数据访问、文件处理和管理功能。
评论
支持 Markdown