第 6 周——使用 Semgrep 扫描并修复漏洞
作业概述
使用 Semgrep 对 week6/ 中提供的应用程序运行静态分析。对扫描结果进行分类研判,并修复至少 3 个安全问题。在作业报告中,说明 Semgrep 发现了哪些问题以及你是如何修复这些问题的。
了解 Semgrep
Semgrep 是一款开源静态分析工具,可用于搜索代码、发现缺陷,并强制实施安全防护规则和编码标准。
点击此处了解 Semgrep。
按照上述链接中的安装说明进行操作。你可以自行选择使用 **Semgrep 应用安全平台(AppSec Platform)**或 CLI 工具。
扫描任务
扫描对象
- 后端 Python(FastAPI):
week6/backend/ - 前端 JavaScript:
week6/frontend/ - 依赖项:
week6/requirements.txt - 配置/环境文件(用于检测密钥):
week6/中的文件
运行常规安全扫描,并针对密钥和依赖项运行专项扫描。
在作业仓库根目录中运行以下命令,以应用一组精心筛选的 CI 风格规则包,其中同时包含代码规则和密钥规则:
bash
semgrep ci --subdir week6任务
从 Semgrep 发现的问题中任选 3 个,使用你选择的 AI 编程工具进行修复。
展示精确的修改内容并说明缓解措施(例如:参数化 SQL、更安全的 API、更强的加密算法、经过净化的 DOM 写入、受限的 CORS、依赖项升级)。
重要提示:确保修复后应用程序仍能正常运行,且测试仍能通过。
应提交的内容
1. 简要的发现概述
- 总结 Semgrep 报告的问题类别(SAST/密钥/SCA)。
- 说明你选择忽略的所有误报或噪声较大的规则,并解释原因。
2. 三项修复(修复前 → 修复后)
对于每个已修复的问题:
- 文件及行号
- Semgrep 标记的规则/类别
- 简要的风险说明
- 你的修改(简短的代码差异或说明,以及 AI 编程工具的使用情况)
- 此修改为何能够缓解该问题
提示
- 优先采用能解决根本原因的最小化、针对性修改。
- 每次修复后重新运行 Semgrep,以确认该问题已解决且未引入新问题。
- 对于依赖项,如果使用了供应链扫描,请记录升级后的版本,并附上相关安全公告的链接。
提交说明
- 确保已将所有更改推送到远程仓库,以供评分。
- 确保已将 brentju 和 febielin 两人都添加为作业仓库的协作者。
- 通过 Gradescope 提交。