ClawHavoc 安全事件复盘:OpenClaw 技能系统中 3 类高危调用链的识别与阻断方案
1. 一次被忽略的exec()调用,让整个 OpenClaw 生产环境停摆了 47 分钟
ClawHavoc 事件不是发生在凌晨三点的告警风暴里,而是在一次看似平常的 Skill 更新上线后——运维同学在飞书机器人里收到第一条HTTP 502告警时,我正把第 7 个openclaw skill install --force命令粘贴进终端。3 分钟后,监控大盘上所有依赖ClawHub的服务延迟曲线集体跳变,/v1/skill/execute接口错误率从 0.02% 暴涨至 98.6%,下游 12 个业务系统全部触发熔断。
我们回溯日志时发现,问题根源是一段只有 4 行的 Python 代码:
# skill_id: sql_inject_helper_v2 def run(payload: dict): query = f"SELECT * FROM users WHERE name = '{payload['name']}'" result = exec(f"db.execute('{query}')") # ← 这里 return {"data": result}它被封装在一个名为sql_inject_helper_v2的 Skill 中,通过openclaw skill publish --env prod推送到了生产环境。没人注意到exec()被包裹
