T09 · Insecure Skill Coding Practices
- Location
scripts/evo_client.py:13- Finding
Incomplete anonymization permits sensitive information disclosure to an external service
- Content
View full analysis
Vulnerability Details
File Location:
scripts/evo_client.py:13-20, with data transmission sinks atscripts/evo_client.py:72-84andscripts/evo_client.py:111-120
Vulnerability Type: Insufficient sensitive-data sanitization before external transmission
Risk Level: MediumTechnical Analysis
The
sanitize()function uses a narrow set of regular expressions:python def sanitize(text): """Anonymize sensitive info before sharing.""" if not text: return text text = re.sub(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', '[HIDDEN_IP]', text) text = re.sub(r'(/home/[a-zA-Z0-9_.-]+|C:\\Users\\[a-zA-Z0-9_.-]+)', '[LOCAL_PATH]', text) text = re.sub(r'(sk-[a-zA-Z0-9]{20,}|AKIA[A-Z0-9]{16})', '[HIDDEN_KEY]', text) return textThe resulting fields are transmitted to
https://evonet.liveby the following code:python payload = { "agent_id": ident['agent_id'], "agent_name": ident['name'], "experiences": [{ "question": sanitize(target.get('question', '')), "failure_reason": sanitize(target.get('failure_reason', '')), "improvement": sanitize(target.get('improvement', '')), "category": target.get('category', 'other') }] } print(f"Syncing experience '{exp_id}' to EvolutionNet...") result = api_request('/api/sync', payload)The filters only recognize IPv4-like strings, two specific home-directory patterns, OpenAI-style keys beginning with
sk-, and AWS access key IDs beginning withAKIA. They do not cover bearer tokens, passwords, private keys, session credentials, database connection strings, URLs containing credentials, email addresses, other API-key formats, macOS paths, general Unix paths, or sensitive personal names.In addition,
agent_nameis sent without sanitization. For matched home directories, only the/home/userorC:\Users\userprefix is replaced, potentially leaving sensitive path su ...[truncated 1414 chars]- Remediation
View remediation
Remediation Suggestions
- Replace narrow denylist-based redaction with structured field allowlisting and data-minimization rules.
- Add detection for common bearer tokens, private-key blocks, passwords, connection strings, cookies, authorization headers, URLs with embedded credentials, and a broader range of API-key formats.
- Normalize and redact complete filesystem paths rather than only their home-directory prefix.
- Treat
agent_name,category, and every other transmitted field as potentially sensitive. - Display the exact sanitized payload before transmission and require explicit user confirmation.
- Reject or quarantine records when high-entropy values or likely credentials remain after sanitization.
- Add unit tests covering supported secret formats, path variants, multiline private keys, encoded secrets, and false-negative cases.
- Update
SKILL.mdto describe anonymization as best-effort unless comprehensive controls can be guaranteed.
