otp-challenger

🔐 敏感操作前的双因素认证

支持 TOTP/YubiKey 的双因素认证 Skill,为部署、财务等敏感操作提供企业级身份验证防护,来自可信开源社区。

收藏
1.8k
安装
812
版本
v1.0.6
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

OTP Challenger 是专为 OpenClaw 框架设计的身份验证技能,用于在执行敏感操作前强制要求用户完成双因素认证(2FA)。该技能支持两种验证模式:基于时间的一次性密码(TOTP,6位数字)和 YubiKey 硬件密钥(44位 ModHex 字符)。

使用流程通常如下:当用户尝试执行敏感操作(如 kubectl apply 部署命令、财务转账、PII 数据导出或管理员权限变更)时,系统会拦截该请求并调用 verify.sh 脚本要求输入 OTP 码。脚本自动检测码类型(6位为 TOTP,44位为 YubiKey),验证成功后会在 memory/otp-state.json 中记录验证状态,默认 24 小时内无需重复验证。配套提供的 check-status.sh 可用于查询验证状态,generate-secret.sh 则可生成新的 TOTP 密钥和二维码。

显著优点

该技能在安全性设计上表现突出:首先,输入验证极为严格,用户 ID 限制为字母数字和特定符号(^[a-zA-Z0-9@._-]+$),长度不超过 255 字符,有效防止命令注入攻击。其次,YubiKey 集成遵循安全最佳实践,使用 HTTPS 通信、HMAC-SHA1 签名验证、16 字符随机 Nonce 防重放攻击,并设置 10 秒超时防止挂起。

此外,技能内置完善的防护机制:支持可配置的速率限制(默认 3 次失败后锁定 5 分钟)、文件锁(flock)确保状态文件操作原子性、审计日志记录所有验证事件。TOTP 实现遵循 RFC 6238 标准,支持 ±1 个时间窗口(90 秒)的时钟偏差容忍。状态文件仅存储时间戳而非密钥,降低了信息泄露风险。

潜在缺点与局限性

尽管安全性较高,但该技能存在若干需要注意的限制。最主要的风险来自 OTP_FAILURE_HOOK 功能——这是一个高权限配置项,允许在验证失败时执行任意 shell 命令,若配置不当可能导致严重的安全问题。

其次,技能依赖多个外部系统工具(oathtooljqcurlopenssl),在部分精简环境中可能需要额外安装。状态文件和审计日志默认未加密存储,虽然不含密钥,但在多用户共享环境中可能存在隐私风险。此外,密钥配置(OTP_SECRETYUBIKEY_SECRET_KEY)目前依赖环境变量或 YAML 文件,虽支持 1Password 等密钥管理器引用,但默认方式仍有改进空间。

适合的目标群体

该技能特别适合以下场景:DevOps 团队需要在 CI/CD 流程中为生产环境部署增加人工确认环节;金融科技公司处理转账、支付审批等敏感财务操作;企业 IT 管理员执行用户权限变更、数据导出等管理员操作;以及任何需要符合 SOC 2、ISO 27001 等合规要求,需要在自动化流程中保留强身份验证环节的组织。

使用风险与注意事项

部署该技能时需重点关注配置安全:务必谨慎使用 OTP_FAILURE_HOOK,仅配置来自可信来源的脚本,避免执行未经验证的命令。建议将 OTP_INTERVAL_HOURS 设置为 8-12 小时而非默认 24 小时,在安全性与便利性间取得平衡。生产环境应使用 1Password、Bitwarden 等密钥管理器引用而非明文存储密钥。定期检查审计日志可及时发现暴力破解尝试。此外,确保状态文件目录的文件系统权限严格限制,防止未授权读取验证状态信息。

otp-challenger 内容

docs文件夹
implementation-plans文件夹
2025-01-31-yubikey-support文件夹
plans文件夹
examples文件夹
openclaw文件夹
memory文件夹
tests文件夹
手动下载zip · 45.6 kB
phase_01.mdtext/markdown
请选择文件