T09 · Insecure Skill Coding Practices
- Location
scripts/track17.py:1234- Finding
Webhook signatures are detected but not enforced
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a real 17TRACK parcel-tracking skill, but its optional webhook handling can accept forged updates and it may send local parcel labels to 17TRACK without making that clear.
Install only if you are comfortable giving the skill a 17TRACK API token, storing parcel data in a workspace-local SQLite database, and sending tracking numbers plus carrier parameters to 17TRACK. Avoid public webhook exposure unless the signature-enforcement bug is fixed; prefer polling. Do not put private details in labels unless you also explicitly set a non-sensitive --tag or the label-to-tag behavior is changed.
scripts/track17.py:1234Webhook signatures are detected but not enforced
scripts/track17.py:740Local parcel labels are implicitly disclosed to 17TRACK
The skill requires access to environment variables, local file read/write, and network operations, but those capabilities are not explicitly declared as permissions in the skill metadata. This creates a transparency and policy-enforcement gap: reviewers or runtime controls may underestimate what the skill can access, increasing the chance of over-privileged execution or unsafe deployment.
The webhook processing path retrieves the shared secret but does not require a valid signature before ingesting and applying webhook data. If the inbox or HTTP listener is reachable by an attacker, forged payloads can create packages and overwrite tracking state, causing integrity issues and potentially misleading automation or users.
conn = connect_db(p["db"])
init_db(conn)
secret = args.secret or os.environ.get("TRACK17_WEBHOOK_SECRET")
inbox = p["inbox"]
files = sorted([f for f in inbox.glob("*.json") if f.is_file()])