Low Risk — Risk Score 18/100
Last scan:2 days ago Rescan
18 /100
authlock
MFA-bound Secret Protection - TOTP-based encryption for sensitive data
AuthLock 是一个合法的 MFA-bound 密码保护工具,功能实现与文档一致,未发现恶意行为,但存在 PIN 存储不安全(base64 而非哈希)等中等安全隐患。
Skill Nameauthlock
Duration41.3s
Enginepi
Safe to install
建议审查 PIN 存储实现,改用哈希存储;建议为 sealed 文件设置更严格的文件权限。

Findings 3 items

Severity Finding Location
Medium
PIN 存储使用弱编码而非哈希
配置文件中 PIN 仅使用 base64 编码存储(config.json 中 pin_hash 字段),未使用 bcrypt/argon2 等密码哈希算法。如果配置文件泄露,攻击者可轻易解码。
config["pin_hash"] = base64.b64encode(pin.encode()).decode()
→ 使用 bcrypt 或 argon2 对 PIN 进行哈希处理后再存储
authlock_cli.py:480
Low
sealed 文件未设置严格权限
保存的 .sealed 加密文件未设置特殊权限(如 0o600),可能允许其他用户读取。
with open(sealed_path, "w") as f: json.dump(sealed, f, indent=2)
→ 创建文件后使用 os.chmod(sealed_path, 0o600) 限制权限
authlock_cli.py:371
Low
环境变量名不一致
文档使用 CLAWAUTH_HOME 而代码实际读取 AUTHLOCK_HOME,可能导致用户配置困惑。
env_home = os.environ.get("AUTHLOCK_HOME")
→ 统一环境变量命名,建议使用文档中声明的名称
authlock_cli.py:67
ResourceDeclaredInferredStatusEvidence
Filesystem READ WRITE ✓ Aligned SKILL.md: seal 命令读写文件,代码在 authlock_cli.py:370 实现
Shell WRITE WRITE ✓ Aligned --exec 功能在 SKILL.md 声明,authlock_cli.py:380 使用 subprocess.run(shell=True)
Environment NONE READ ✓ Aligned 读取 AUTHLOCK_HOME/CLAWAUTH_HOME/OPENCLAW_WORKSPACE 用于路径查找

File Tree

2 files · 29.5 KB · 986 lines
Python 1f · 728L Markdown 1f · 258L
├─ 🐍 authlock_cli.py Python 728L · 21.7 KB
└─ 📝 SKILL.md Markdown 258L · 7.9 KB

Dependencies 3 items

PackageVersionSourceKnown VulnsNotes
cryptography * pip No 无版本锁定,但主流库安全性较高
pyotp * pip No 无版本锁定,TOTP 标准库
qrcode * pip No 无版本锁定,仅用于 QR 码显示

Security Positives

✓ 功能实现与 SKILL.md 文档完全一致,无阴影功能
✓ 无网络请求,不存在数据外泄风险
✓ 无凭证收割行为(不遍历敏感环境变量如 AWS_、AZURE_)
✓ 无远程代码执行(--exec 功能需用户明确指定)
✓ 使用标准加密库(cryptography)实现 AES-256-GCM + PBKDF2
✓ TOTP 验证在解密前执行,符合安全设计