T09 · Insecure Skill Coding Practices
- Location
scripts/fetch_emails_json.py:128- Finding
Sensitive ride and email artifacts are created without restrictive filesystem permissions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill handles sensitive ride receipt data, but its access, local processing, persistence, and Gateway use are disclosed and aligned with its stated purpose.
Install only if you are comfortable letting the skill read scoped ride receipt emails from the selected Gmail account and store raw receipt HTML locally. Prefer running it on a single-user machine or inside a private workspace, delete data/ride-insights/emails.json when no longer needed, and review exported CSV files before opening them in spreadsheet software or sharing them.
scripts/fetch_emails_json.py:128Sensitive ride and email artifacts are created without restrictive filesystem permissions
scripts/extract_rides_gateway.py:98Attacker-controlled receipt HTML can indirectly inject instructions into the extraction model
scripts/export_anonymized_rides_csv.py:160Exported CSV fields are not neutralized against spreadsheet formula injection
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
},
method='POST',
)
with urllib.request.urlopen(req, timeout=timeout) as resp:
body = json.loads(resp.read().decode('utf-8'))
for item in body.get('output', []):
if item.get('type') == 'message':
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
last_err = None
for attempt in range(1, retries + 1):
try:
out = subprocess.check_output(cmd, text=True, stderr=subprocess.STDOUT)
return json.loads(out)
except subprocess.CalledProcessError as e:
last_err = e
No suspicious patterns detected.