扫描报告
20 /100
todo
Manage todo lists in PostgreSQL. Per-agent lists, optional categories, priorities, due dates.
This is a legitimate PostgreSQL-backed todo management CLI with filesystem access for .env loading and file migration that is not declared in SKILL.md.
可以安装
Add explicit filesystem:READ and filesystem:WRITE declarations to SKILL.md for the .env loading and migrate features. Consider pinning psycopg2-binary to a specific version.
安全发现 4 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 低危 | Undeclared .env file reading 文档欺骗 | scripts/todo_cli.py:53 |
| 低危 | Undeclared filesystem write/delete via migrate 文档欺骗 | scripts/todo_cli.py:619 |
| 低危 | Workspace path derived from environment or home directory 敏感访问 | scripts/todo_cli.py:596 |
| 提示 | Unpinned psycopg2-binary dependency 供应链 | SKILL.md:1 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | NONE | READ | ✗ 越权 | scripts/todo_cli.py:53 — reads .env file from disk |
| 文件系统 | NONE | WRITE | ✗ 越权 | scripts/todo_cli.py:619 — fpath.unlink() deletes source file after migrate |
| 数据库 | READ | WRITE | ✓ 一致 | todo_cli.py — SELECT, INSERT, UPDATE, DELETE on todo tables; required for todo m… |
| 网络访问 | NONE | NONE | — | No outbound network calls; only local PostgreSQL connection via psycopg2 |
| 命令执行 | NONE | NONE | — | No subprocess, os.system, or shell command execution found |
| 环境变量 | NONE | READ | ✓ 一致 | os.environ.get(...) for TODO_DB_* vars — documented and necessary for DB connect… |
目录结构
6 文件 · 50.5 KB · 1494 行 Python 1f · 1023L
Markdown 4f · 466L
JSON 1f · 5L
├─
▾
references
│ ├─
cli.md
Markdown
│ └─
schema.md
Markdown
├─
▾
scripts
│ └─
todo_cli.py
Python
├─
_meta.json
JSON
├─
CHANGELOG.md
Markdown
└─
SKILL.md
Markdown
依赖分析 1 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
psycopg2-binary | * | pip | 否 | Version not pinned — any version will be installed |
安全亮点
✓ No obfuscation: no base64, eval(), or anti-analysis patterns detected
✓ No credential exfiltration: database password is used only for local PostgreSQL connection
✓ No remote code execution: no subprocess, os.system, or shell commands
✓ No network exfiltration: no outbound HTTP/WebSocket/C2 calls
✓ SQL injection mitigated via parameterized queries (psycopg2 %s placeholders)
✓ Cross-agent access is logged to todo_access_log table
✓ File deletion in migrate is workspace-scoped (fpath.relative_to(workspace) check prevents path traversal)
✓ No sensitive hardcoded secrets or embedded credentials
✓ Well-structured code with clear separation of concerns