T09 · Insecure Skill Coding Practices
- Location
scripts/ollama_query.py:19- Finding
Prompts and model responses are transmitted to a non-loopback host over plaintext HTTP
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent Ollama helper, but it defaults to sending user prompts to a specific non-local HTTP endpoint and uses unpinned install commands.
Install only if you trust and intend to use the configured Ollama server. Override OLLAMA_HOST to a localhost or trusted HTTPS endpoint before sending sensitive prompts, and prefer pinned package versions or a reviewed lockfile for installation.
scripts/ollama_query.py:19Prompts and model responses are transmitted to a non-loopback host over plaintext HTTP
SKILL.md:30Installation instructions execute and install unpinned third-party dependencies
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# 尝试加载 .env 文件 (符合项目已有的 python-dotenv 依赖)
try:
from dotenv import load_dotenv
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# 尝试加载 .env 文件 (符合项目已有的 python-dotenv 依赖)
try:
from dotenv import load_dotenv
The skill documents and enables network access, environment-variable use, and external tooling behavior, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates a capability/metadata mismatch that can lead to overbroad execution in host environments, making it harder to enforce least privilege or review what the skill is allowed to do.
The installation instruction uses npx skills without pinning a specific version, which can cause consumers to execute an unexpected or compromised package version at install time. Because npx fetches code dynamically, this expands the supply-chain attack surface and reduces reproducibility.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The script sends the full user-supplied prompt to the configured Ollama host over the network, and the default host is a non-local IP address rather than localhost. In a skill meant for LLM interaction, prompts may contain sensitive user data, so transmitting them to a remote service without explicit disclosure or consent creates a real privacy and data-exposure risk, especially since the default uses plain HTTP.
The skill’s descriptive and instructional text is primarily written in Chinese, with no indication that users can choose another language or locale. Under the policy rule, forcing a specific language without opt-in is a natural-language policy concern.
The command-line interface presents usage text only in Chinese, and other user-visible strings in the file are also Chinese-only. This imposes a specific language on users without offering a language choice or documenting a justified locale restriction.
This code file contains natural-language comments and test descriptions in Chinese, such as the comment on L08 and subsequent Chinese docstrings, with no indication that the skill supports language choice or that the locale restriction is intentional and justified. Under the stated policy, forcing a specific language without user opt-in can be a natural-language policy violation.
No suspicious patterns detected.