T09 · Insecure Skill Coding Practices
- Location
scripts/iserv.py:266- Finding
Credentials may be transmitted over plaintext HTTP or to a redirected origin
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This IServ skill is useful but needs Review because it handles live school-platform credentials, remote messaging and file mutation, and has verified unsafe URL and filename handling that can expose credentials or overwrite local files.
Install only if you trust the IServ instance and are comfortable giving the skill account-level access to mail, messenger, files, and exercises. Use an HTTPS ISERV_BASE_URL, avoid running destructive commands unless you personally verify the target, and treat downloads or exercise submissions as risky until same-origin checks and safe filename handling are added.
scripts/iserv.py:266Credentials may be transmitted over plaintext HTTP or to a redirected origin
scripts/iserv.py:1225Server-controlled exercise form actions can exfiltrate selected local files
scripts/iserv.py:603Server-controlled download filenames permit writes outside the requested directory
The skill metadata and module docstring frame this as a data-access client, but the implementation includes active capabilities to send mail and messenger messages, upload/rename/delete files, create folders, and submit exercises. In an agent setting, this scope expansion is dangerous because a caller expecting read-only behavior could unintentionally trigger remote state changes or data exfiltration through the same credentialed session.
The top-level docstring states the goal is read access, but the code implements multiple write-side operations such as mail_send, mail_reply, messenger_send, files_upload, files_mkdir, files_rename, files_delete, and exercise_submit. This mismatch can mislead integrators, policy engines, or users into granting credentials to a tool that can alter remote data and communicate outward.
Claiming a read-access goal while embedding extensive write functionality creates a deceptive trust boundary for downstream agents and users. In practice, this can bypass least-privilege assumptions and allow an agent to send messages, upload files, or delete data when the operator believed the tool was informational only.
The skill includes outbound communication primitives via messenger_send and mail_send/mail_reply, which can transmit arbitrary text to external recipients using the user's authenticated account. In a data-rich school-platform client, these commands materially increase exfiltration risk because an agent can read mail/messages/files and then relay sensitive content outward.
except Exception as e:
last = e
continue
raise RuntimeError(f"Could not send message to chat_id={chat_id}. Last error: {last}")
# ----------------------
# Exercises (Aufgaben)
The skill performs sensitive operations using both environment variables and outbound network access, but it does not declare any explicit tool scope or permission boundaries. In an agent ecosystem, this increases the chance of overbroad execution, making it easier for the skill to access secrets and send them to arbitrary IServ endpoints or attacker-controlled URLs if misconfigured.
The files_rename implementation can move or rename remote content with no confirmation or validation of overwrite/conflict conditions. An agent error could disrupt coursework or stored files by relocating or replacing expected paths under the authenticated user's account.
The files_delete path performs destructive remote deletion immediately, trying multiple endpoints and HTTP methods, without any confirmation, dry-run, or safety interlock. In an agent workflow, a prompt misunderstanding or adversarial instruction could cause irreversible loss of user files on the IServ instance.
exercise_submit uploads a local file and posts a submission form directly to the remote service without any user-facing warning, confirmation, or content review. In an agent environment, this can leak unintended local files or prematurely submit incorrect work under the user's identity.
The skill instructs users to provide credentials through environment variables but does not warn about common exposure paths such as shell history, process inspection, CI logs, crash dumps, or accidental debug output. Because this skill handles live login credentials for a school platform, missing handling guidance can lead to credential leakage and account compromise.
The example --comment "Abgabe" hardcodes a German-language message in the skill documentation. This can be a locale/language policy issue because it presents one language as the default without opt-in or indicating that users may choose their preferred language.
No suspicious patterns detected.