T09 · Insecure Skill Coding Practices
- Location
scripts/talebook_api.py:80- Finding
Credentials May Be Transmitted in Plaintext to an Unrestricted or Redirected Host
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a coherent Talebook/MyBooks integration, but it sends credentials and files to a user-configured server without enough transport, destination, or confirmation safeguards.
Review before installing. Use this only with a Talebook/MyBooks server you control, preferably over HTTPS; avoid LAN or public HTTP hosts for credentials. Use a least-privileged Talebook account, confirm any upload path or book-push destination yourself, and do not provide paths to sensitive non-book files.
scripts/talebook_api.py:80Credentials May Be Transmitted in Plaintext to an Unrestricted or Redirected Host
The file contains outbound HTTP client functionality to a user-configured host, yet network capability is not covered by declared permissions. In a skill ecosystem this is dangerous because it allows data exfiltration, authenticated server actions, and communication with arbitrary endpoints without transparent permissioning.
The file contains outbound HTTP client functionality to a user-configured host, yet network capability is not covered by declared permissions. In a skill ecosystem this is dangerous because it allows data exfiltration, authenticated server actions, and communication with arbitrary endpoints without transparent permissioning.
The skill supports sending books to external email addresses and LAN-connected reader devices, but the documentation does not clearly warn that book contents and recipient/device identifiers will be transmitted off-agent to external destinations. This can lead to unintended data disclosure, especially if a user asks to send copyrighted or sensitive documents without realizing the transfer leaves the local environment.
The upload feature accepts an absolute local file path and transfers that file into the Talebook/MyBooks service, but the documentation does not clearly state that local data will be copied to a remote service. Without an explicit warning, users may provide sensitive local files under the mistaken assumption the action is purely local metadata management.
The script automatically signs in using credentials from the environment before each tool invocation, without any user-facing disclosure at execution time. In this skill context, that means even seemingly read-only actions trigger credentialed access to a remote service, reducing user awareness and increasing the chance of unintended authenticated operations against an attacker-controlled or misconfigured host.
The book_upload path reads a local file and uploads its contents to a remote server with no in-code warning, confirmation, or restriction beyond existence checking. In an agent environment this is sensitive because a user may not realize a local path will cause direct file exfiltration to the configured server, and TALEBOOK_HOST is externally configurable.
Dynamic getattr() with a non-literal attribute name can access arbitrary object attributes, potentially bypassing access controls.
Returns:
Tool execution result
"""
tool_method = getattr(self, tool_name, None)
if tool_method is None or not callable(tool_method):
available_tools = [
No suspicious patterns detected.