T01 · Skill Instruction Hijacking
- Location
SKILL.md:66- Finding
Indirect prompt injection through untrusted article HTML
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears purpose-aligned, but it processes untrusted article HTML directly in model prompts and caches fetched content locally, so users should review it before installing.
Install only if you are comfortable giving the skill a wcrss.com API key and having article fetches go to that service. Run it from a private, trusted working directory, clear the cache when needed, and avoid giving the summarizing agent unrelated secrets or powerful tools because article HTML may contain adversarial instructions.
SKILL.md:66Indirect prompt injection through untrusted article HTML
scripts/wechat_rss.py:10Plaintext cache uses a predictable relative path and follows symbolic links
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
url = f"https://api.wcrss.com/sapi/articles?recentDays={recent_days}&num={num}"
headers = {"Authorization": f"Bearer {api_key}"}
try:
response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
data = response.json()
except requests.exceptions.RequestException as e:
The skill invokes Python scripts that read environment variables, perform network access, and likely use local file reads/writes for caching, but the manifest declares no explicit tool scope or permissions. This weakens sandboxing and user/operator awareness, increasing the risk that the skill can access sensitive resources beyond what is clearly disclosed.
The skill states that it reads an API key from WCRSS_API_KEY and calls the third-party wcrss.com API, but it does not clearly disclose what user data, prompts, or derived content may be transmitted externally. Users may unknowingly cause article queries or related data to be sent to a third party without informed consent, creating privacy and compliance risk.
The embedded prompt explicitly requires Chinese output (e.g., '请从以下文章内容中提取关键要点') and the display template is also Chinese-only, but the file does not offer the user a language/locale option. That creates a language policy concern because the skill forces a specific language without user opt-in.
The function docstring and implementation hard-code article timestamps to UTC+8, which imposes a specific locale/timezone behavior on all users. This is a natural-language policy concern because the file does not offer user opt-in or explain that the skill is intentionally region-specific.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
print(f"Using cached data (age: {int(current_time - cache_time)}s)")
return cached_data
url = f"https://api.wcrss.com/sapi/articles?recentDays={recent_days}&num={num}"
headers = {"Authorization": f"Bearer {api_key}"}
try:
response = requests.get(url, headers=headers, timeout=30)