T09 · Insecure Skill Coding Practices
- Location
SKILL.md:47- Finding
Authentication Credentials Are Retained in Conversation Context
- Content
View full analysis
" BASE_API = "aicraft.51aic.com" def api_post(url, payload, token): data = json.dumps(payload, ensure_ascii=False).encode("utf-8") headers = {"Content-Type": "application/json; charset=utf-8", "Token": token} req = urllib.request.Request(url, data=data, headers=headers) with urllib.request.urlopen(req, timeout=60) as resp: return json.loads(resp.read().decode("utf-8")) ``` The Skill also instructs the Agent to cache a derived payment authorization credential for approximately two hours in the same conversation. ### Technical Analysis A login token and its derived payment authorization value are bearer credentials. Any party that obtains them can potentially act with the privileges associated with the user's account without knowing an additional password. Conversation context is not established as a protected secret store. Depending on the host Agent, it may be included in transcripts, diagnostic logs, model context, tool-call records, observability systems, or persistent conversation storage. The Skill does not require: - ...[truncated 2074 chars]- Remediation
View remediation
