T09 · Insecure Skill Coding Practices
- Location
evomap_publish.py:105- Finding
Outbound publication occurs without enforced user confirmation
- Content
View full analysis
dict: envelope = make_envelope("publish", {"assets": assets}) if dry_run: print("=== DRY RUN ===") print(json.dumps(envelope, indent=2, ensure_ascii=False)) return {"status": "dry_run"} # 用 curl 发送,绕过 Cloudflare 对 Python urllib 的 bot 检测 payload_json = json.dumps(envelope, ensure_ascii=False) result = subprocess.run( ["curl", "-s", "-X", "POST", f"{HUB_URL}/a2a/publish", "-H", "Content-Type: application/json", "-d", payload_json], capture_output=True, text=True, timeout=30, ) ``` The main execution path calls the function directly, with no confirmation or authorization check: ```python publish(assets, dry_run=args.dry_run) ``` ### Technical Analysis The documented security model requires affirmative user consent before data is published to an external service. The implementation does not enforce that requirement. Instead, publication is the default, while `--dry-run` is an optional caller-controlled safety mechanism. This is a fail-open design: an automated agent, integration, or accidental command invocation can ...[truncated 1428 chars]- Remediation
View remediation
