Back to skill

Security audit

news-for-ai

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward AI news-fetching helper with expected network access, but users should note its Chinese-focused source and unpinned Python dependencies.

Install and run this skill only in an isolated Python environment, especially because its dependencies are not pinned. Expect it to contact aibase.cn and return Chinese-oriented AI news/search results. No hidden persistence, credential access, destructive behavior, or unrelated data collection was found.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
requirements.txt:1
Finding

Unpinned Third-Party Dependencies Create Supply-Chain Risk

Content
View full analysis

Vulnerability Details

File Location: requirements.txt, lines 1–3
Vulnerability Type: Unpinned third-party dependencies
Risk Level: Medium

Complete Code Snippet:

text
requests>=2.28.0
beautifulsoup4>=4.11.0
urllib3>=1.26.0

The documented installation command in SKILL.md, line 25, consumes these requirements directly:

bash
pip install -r ${SKILL_DIR}/requirements.txt

Technical Analysis

Every dependency specifies only a minimum version and permits pip to install any later release available from the configured package index. As a result, installations are not reproducible and may introduce code that was never reviewed as part of this Skill audit.

This is a supply-chain weakness rather than evidence that the currently named packages are malicious. Exploitation would require an attacker to compromise an allowed upstream release, the package-distribution infrastructure, or the dependency-resolution environment. Because Python packages can execute code during installation and later when imported, a compromised release could run with the privileges of the user installing or invoking the Skill.

Attack Path

  1. An attacker compromises a future compatible release of one of the declared packages or the package source used by pip.
  2. A user or agent follows the setup instructions and runs pip install -r ${SKILL_DIR}/requirements.txt.
  3. Pip resolves the open-ended requirement to the attacker-controlled or otherwise unreviewed release.
  4. Malicious package code executes during installation or when news_cli.py imports the dependency.
  5. The code operates with the privileges and environmental access of the installing or invoking process.

Impact Assessment

Successful exploitation could permit arbitrary code execution under the affected user's account. The potential scope includes files, credentials, environment variables, and network resources accessible to that account. ...[truncated 154 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace open-ended lower bounds with exact, reviewed versions, for example package==X.Y.Z.
  2. Generate a reproducible lock file that includes all transitive dependencies.
  3. Record package hashes and install with pip install --require-hashes so altered distributions are rejected.
  4. Use a trusted package index and explicitly configure approved index URLs in controlled deployment environments.
  5. Run dependency vulnerability and provenance checks in CI.
  6. Update pinned dependencies through a scheduled review process that includes testing and security review.
  7. Perform installation and execution in an isolated virtual environment or container with minimal filesystem and network privileges.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (11)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes a network-capable CLI to fetch real-time news but does not declare any explicit tool scope such as permissions or allowed-tools. That mismatch weakens least-privilege controls and can cause the agent to grant or assume broader network access than users or the platform expect.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The description contains very broad natural-language triggers such as generic requests for AI updates or looking up a model, which can cause the skill to activate for many common conversations. Overbroad auto-invocation increases the chance of unintended network calls, unnecessary data exposure in user queries, and tool routing conflicts with safer or more appropriate skills.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The natural-language activation guidance strongly emphasizes Chinese phrases and Chinese example queries, but does not state whether outputs, prompts, or behavior adapt to the user's preferred language. This can create an implicit language bias without explicit opt-in or documented locale justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The request headers force accept-language to zh-CN,zh;q=0.9, which imposes a specific language/locale behavior in the skill. There is no option for the user to choose another locale and no documented region-specific justification in the file.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The dependency specification uses a lower-bound version only, which allows installation of newer, unreviewed releases and makes builds non-reproducible. In a network-facing news-fetching skill that relies on HTTP libraries, this increases supply-chain and stability risk because a future vulnerable or incompatible version could be pulled in without notice.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
requests>=2.28.0
beautifulsoup4>=4.11.0
urllib3>=1.26.0

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
89% confidence
Finding

The manifest includes requests without pinning a specific version, while multiple advisories exist for the package. That means the deployed environment could resolve to an affected release, and in a skill that performs outbound web requests this could expose the agent to known client-side HTTP issues such as credential leakage or request-handling flaws.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The package beautifulsoup4 is not pinned to an exact version, so the environment may resolve to different releases over time. This weakens reproducibility and can introduce unexpected vulnerable or breaking versions into a skill that parses untrusted remote content.

Content

Scanner excerpt · requirements.txt (reported line 2)May include surrounding context.

text
requests>=2.28.0
beautifulsoup4>=4.11.0
urllib3>=1.26.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
96% confidence
Finding

Using urllib3 with only a minimum version permits automatic adoption of later versions, including versions that may contain newly disclosed flaws or behavioral changes. Because this skill fetches external content over HTTP, dependency drift in a core transport library meaningfully increases attack surface.

Content

Scanner excerpt · requirements.txt (reported line 3)May include surrounding context.

text
requests>=2.28.0
beautifulsoup4>=4.11.0
urllib3>=1.26.0

Unverifiable Dependency: urllib3 has 16 known advisory(ies) (CVE-2025-66471 (urllib3 streaming API improperly handles highly compressed data); CVE-2024-37891 (urllib3's Proxy-Authorization request header isn't stripped during cross-origin ); CVE-2026-21441 (Decompression-bomb safeguards bypassed when following HTTP redirects (streaming ) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
88% confidence
Finding

urllib3 has known advisories, but the current manifest does not specify an exact version, so there is no assurance that installation will avoid affected releases. Since this skill retrieves remote AI news content, weaknesses in the HTTP stack could be reachable via malicious servers, redirects, or compressed responses.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file contains user-facing natural-language descriptions in Chinese for the schema fields, while the surrounding document headings and structure are in English. Because the file does not offer a language/locale choice or explain that the skill is intentionally Chinese-specific, it may violate the language/locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The Product, Model, and MCP schema tables also use Chinese-only descriptions for field meanings. Without an explicit opt-in or justification for the locale restriction, this continues the same language-policy concern across the rest of the file.

Content

No source excerpt is available for this finding.