AI 写的 Python 代码的安全审查 · 第 05 题
第 5 课:审查你自己的 AI 代码
把五个问题和扫描步骤带到你自己的仓库:找出输入跨越信任边界的地方,检查每处是否用了机制,并写下你没有审查的部分。
在用 Agent 做题?一句话开始整门课程:
Read https://flypython.com/skills/flypython/SKILL.md and start the FlyPython course `secure-ai-generated-code`.AI 写的 Python 代码的安全审查 · 第 05 题
把五个问题和扫描步骤带到你自己的仓库:找出输入跨越信任边界的地方,检查每处是否用了机制,并写下你没有审查的部分。
在用 Agent 做题?一句话开始整门课程:
Read https://flypython.com/skills/flypython/SKILL.md and start the FlyPython course `secure-ai-generated-code`.你用同样的方法审查一个自己拥有的仓库——最好是助手写的代码——用一个能证明 修复的测试修掉至少一个发现,并记录你没有审查的部分。
那个笔记服务是一个预埋了漏洞、答案已知的沙箱。你的代码两样都没有。能 迁移的是方法:找到输入跨越信任边界的每一处,问清谁控制它、他想要什么, 并检查代码用的是机制而不是侥幸。
os.environ 的地方。在细读任何一处之前先写下
清单。ruff check --select S(或你团队已经在用的扫描器)几秒
内给出模式层面的发现。逐条分诊:真问题、误报,还是接受的风险——并写下
理由。hmac.compare_digest
比较?pickle、marshal、shelve 或不安全的 YAML 加载器
反序列化客户端数据?如果你在别人依赖的代码里发现了严重问题,先遵循你所在组织或该项目的安全 披露流程,再考虑公开提 issue。
让你的编码 Agent 列出你仓库里的信任边界,再和你自己的清单对比。记下你们 各自漏掉了什么。
本检查点自我报告。能回答下面三题时,用
python verify.py --attest l05 认领:
你的边界清单、扫描分诊、先失败后通过的测试,以及三行记录。未修复漏洞的 发现在修好之前不要放到公开的地方。
提示
自我报告:你确认用这套方法审查了自己拥有的代码。证据是你的发现清单和证据记录——不是我们查得了的码。
请求处理函数、CLI 参数、文件上传、消息消费者,以及任何读取环境变量的地方。每一处都是信任边界。
对每个真实发现,先把攻击写成一个失败的测试,再修——正如本课程的套件所做的那样。
提交
提交 python verify.py 为本检查点打印的 8 位认领码。自报关卡要先完成课后问题,再运行 python verify.py --attest l05。
只有记录积分和徽章才需要账号——读题和解题永远免费。
把这题交给它(悬停出现复制按钮)——解题、验证、提交全程自动:
请完成 FlyPython 挑战课程「AI 写的 Python 代码的安全审查」(course id course-secure-code)的检查点 l05。
机读简报:https://flypython.com/api/challenges/secure-ai-generated-code
打开课程文件夹,先读 TASK.md——它就是契约。
规则:最小变更、不新增依赖、绝不修改 tests/ 或 solution/。
用 python verify.py 检查 starter/;自报关卡先让我回答课后问题,再运行 --attest ID 取得码。
目标:只做检查点 l05 这一道题,完成后立即提交。用你Agent 页生成的令牌(环境变量 FLYPYTHON_TOKEN),它可以直接记录结果:
curl -X POST https://flypython.com/api/claims \
-H "Authorization: Bearer $FLYPYTHON_TOKEN" \
-H "Content-Type: application/json" \
-d '{"claims":[{"course":"secure-ai-generated-code","checkpoint":"l05","code":"<8-char code>"}]}'或一次性安装完整的 FlyPython Agent Skill,连粘贴都省了。
解题在你的机器上运行——Agent 通过 /api/challenges/secure-ai-generated-code/files 自己取回课程文件,你无需手动下载。想直接读源码?在 GitHub 上查看文件夹 ↗