Back to skill

Security audit

Practical News Monitor

Security checks for vulnerabilities and agentic risk

Overview

This is a small Chinese-language news monitoring helper that fetches configured news sources and saves local JSON summaries, with no evidence of deception, exfiltration, privilege escalation, or hidden persistence.

Before installing, use a virtual environment and pin dependencies if you need reproducible installs. Expect the script to make outbound requests once sources are enabled and to save fetched titles, links, timestamps, and relevance metadata as JSON files under `~/shared_memory/practical_news` unless you change `DATA_DIR`. Review any sources and custom headers you add, especially cookies or authenticated headers.

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
SKILL.md:26
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 26
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

bash
pip3 install requests

Technical Analysis

The installation instruction retrieves requests and its transitive dependencies without version constraints, a lockfile, or cryptographic hash verification. Dependency resolution therefore relies on mutable package-index state and does not guarantee that users install the same reviewed artifacts.

This creates a supply-chain risk: if a resolved package release or configured package index is compromised, installation or subsequent import of the dependency could execute attacker-controlled code. Installing into the system Python environment would also increase the potential effect on other Python applications and could cause incompatible dependency changes.

No evidence was found that the project intentionally installs a malicious or typosquatted package. The vulnerability is the lack of reproducible and integrity-verified dependency installation.

Attack Path

  1. A user follows the documented pip3 install requests command.
  2. pip queries the package index configured in the user's environment and resolves the latest acceptable requests release and transitive dependencies.
  3. A compromised package index, package release, or transitive dependency supplies an attacker-controlled artifact.
  4. The artifact is installed with the permissions of the user running pip.
  5. Malicious package installation logic or imported runtime code executes under that user's account.

Impact Assessment

Successful exploitation could execute arbitrary code with the privileges of the user performing the installation or running the monitor. This could expose files, credentials, and network access available to that account. If the command is run with elevated privileges or in a shared system Python environment, the impact could extend to system ...[truncated 156 chars]

Remediation
View remediation

Remediation Suggestions

  • Pin reviewed direct and transitive dependency versions in a committed requirements or lock file.
  • Record and verify cryptographic hashes using pip --require-hashes.
  • Install dependencies in a dedicated virtual environment rather than the system Python environment.
  • Use only a trusted package index and explicitly configure the approved index URL where appropriate.
  • Add automated dependency vulnerability and integrity checks to the release process.
  • Replace the current instruction with a reproducible workflow such as:
bash
python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install --require-hashes -r requirements.txt

The accompanying requirements.txt should pin every resolved package to an exact reviewed version and include SHA-256 hashes for all permitted artifacts.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest description is written only in Chinese, and the rest of the skill documentation is likewise exclusively Chinese, with no indication that the skill is region-specific or that users may choose another language. This creates a natural-language locale constraint without opt-in or justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs users to run a news monitor that fetches remote content and persists results to local JSON files, but the description does not clearly warn about those behaviors. This can mislead users about privacy, network access, and disk-write side effects, increasing the chance of unintended data exposure or execution in restricted environments.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 69)May include surrounding context.

md
'name': '我的JSON API',
        'config': {
            'enabled': True,
            'url': 'https://api.example.com/news',
            'data_path': 'data.items',
            'title_field': 'title',
            'url_field': 'link',

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The HTTP headers explicitly force Accept-Language to prefer zh-CN and Chinese output, which is a natural-language locale constraint embedded in code. The file does not provide any user opt-in, configuration, or documented justification for enforcing this language preference.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.