Back to skill

Security audit

Daily Intel Report

Security checks for vulnerabilities and agentic risk

Overview

This skill openly collects public AI and procurement information and formats it for scheduled Chinese daily reports, with no hidden destructive or credential-stealing behavior found.

Install only if you want a Chinese daily report that fetches public news/procurement data and may send it to Feishu or email. Review recipient configuration before enabling scheduled delivery, and treat procurement items from the HTTP source as untrusted public data that could be inaccurate if intercepted.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/zhejiang_ccgp.py:9
Finding
Unencrypted HTTP Retrieval of Agent-Consumed Procurement Data## Vulnerability Details **File Location**: `scripts/zhejiang_ccgp.py`, lines 9, 31–38, and 90 **Vulnerability Type**: Unencrypted network communication and insufficient response-integrity protection **Risk Level**: Medium ### Vulnerable Code ```python API_URL = "http://www.ccgp-zhejiang.gov.cn/portal/searchHome" ``` ```python req = urllib.request.Request( API_URL, data=payload, headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", "Accept": "application/json", "Content-Type": "application/json", "Referer": "http://www.ccgp-zhejiang.gov.cn/" } ) try: with urllib.request.urlopen(req, timeout=15) as resp: data = json.loads(resp.read().decode()) ``` ```python link = f"http://www.ccgp-zhejiang.gov.cn/site/detail?articleId={article_id}" if article_id else "" ``` ### Technical Analysis The procurement API and generated detail links use plaintext HTTP. HTTP does not provide transport confidentiality, server authentication, or response integrity. A network-positioned attacker can intercept and modify the JSON response before the script parses it. Remote fields such as `title`, `purchaseName`, `districtName`, dates, and `articleId` are accepted without authenticity verification and incorporated into the generated intelligence report. Although the script does not execute response content as code, altered content can be presented to users or passed into subsequent Agent processing. This creates an integrity risk and may expose the Agent to misleading or instruction-like text originating from a manipulated response. The fixed AIBase and IT Home links in `SKILL.md` and `references/data-sources.md` are relevant to the declared news-collection function. They contain no referral parameters, promotional directives, or unrelated traffic-diversion instructions and therefore are not classified as instruction hijacking. ### Attac ...[truncated 1406 chars]
Remediation
## Remediation Suggestions 1. Replace the API URL, detail-link URL, and `Referer` with verified HTTPS equivalents supported by the official service. 2. Reject redirects whose final destination is not HTTPS or whose hostname is outside an explicit allowlist. 3. Retain normal TLS certificate and hostname verification; do not introduce permissive SSL contexts. 4. Validate the response content type, top-level JSON structure, expected field types, identifier format, and reasonable field-length limits before processing. 5. Escape or clearly delimit all fetched values when including them in Agent prompts, and explicitly instruct the Agent that retrieved content is untrusted data rather than executable instructions. 6. Prefer structured data transfer between the script and report generator instead of interpolating untrusted remote text into free-form prompts. 7. If the official endpoint does not support HTTPS, use an authenticated trusted intermediary or another official TLS-protected source and document the residual integrity risk.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill performs network-capable actions such as web fetching external sites and invoking a data-collection script, but it does not declare explicit tool scope or allowed tools. This weakens least-privilege controls and can let a broadly triggered skill access the network without clear policy boundaries or user visibility.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The trigger phrases include broad terms like '早报', 'AI新闻', and '招标信息', which can match ordinary user requests and cause the skill to activate unexpectedly. Because the skill then performs external collection and outbound push behavior, accidental invocation increases the chance of unintended data access or message sending.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill is designed to push compiled content to Feishu DM and email, including scheduled automatic delivery, but it does not prominently warn the user about outbound transmission or require explicit consent at send time. This creates a real risk of unintentional data exfiltration, misdelivery, or sending content derived from user context to external communication channels.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The description says the skill will organize results into a “中文日报”, indicating Chinese output as the default behavior, but it does not offer users a language choice or note that this is optional. This is a natural-language policy concern because it imposes a locale/language preference without explicit opt-in.

Natural-Language Policy Violations

Low
Confidence
93% confidence
Finding
This markdown file presents all instructions and reference content exclusively in Chinese, and there is no indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the language/locale policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Static analysis

No suspicious patterns detected.