Back to skill

Security audit

west

Security checks for vulnerabilities and agentic risk

Overview

This skill appears purpose-built for West.cn DNS management, but it can modify or delete live DNS records using sensitive API credentials without clear warnings or confirmation safeguards.

Review carefully before installing. Use only scoped DNS API credentials if West.cn supports them, avoid placing secrets in prompts or logs, confirm every modify/delete action against the intended domain and record, and record current DNS values so you can roll back mistakes.

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 Permit Unreviewed Package Updates

Content
View full analysis
=2.26.0 typing>=3.7.4.3 ``` ### Technical Analysis Both dependencies use open-ended minimum-version constraints. Consequently, future package versions can be installed without review, making installations non-reproducible and exposing the Skill to upstream package compromise, malicious releases, or incompatible updates. The documented Python 3.6+ runtime already includes `typing` in the standard library, so installing its external backport is unnecessary and increases the dependency supply-chain surface. ### Attack Path 1. An attacker compromises an upstream dependency maintainer account, package repository, or configured package index. 2. The attacker publishes a malicious package version that satisfies the `>=` constraint. 3. A user follows the documented installation process and runs `pip install -r requirements.txt`. 4. The package manager selects the malicious version because no exact version or integrity hash is specified. 5. Malicious package code executes during installation or when the dependency is imported at runtime. This path requires compromise or substitution of an upstream package or package index; the repository itself does not contain a malicious dependency. ### Impact Assessment A compromised dependency could execute code with the privileges of the user installing or running the Skill. This may permit access to process data, files, environment variables, network resources, and credentials available to that account, including DNS API credentials supplied to the Skill at runtime. The precise scope is limited by the operating-system privileges and sandbox restrictions applied to the Skill process. ]]>
Remediation
View remediation
``` 2. Generate and commit a lock file containing transitive dependencies. 3. Record package hashes and install with `pip --require-hashes` to prevent substituted artifacts from being accepted. 4. Remove the external `typing` dependency for supported Python versions where it is part of the standard library. 5. Use a trusted package index and disable unexpected fallback indexes. 6. Add automated dependency vulnerability and integrity scanning to the release process. 7. Review and deliberately update pinned dependencies on a controlled schedule. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README describes DNS add/modify/delete capabilities but does not clearly warn users that the skill can make immediate changes to live DNS records, potentially causing service disruption, email outages, or traffic redirection if used incorrectly. In this context, omission of that warning is security-relevant because DNS is high-impact infrastructure and users may underestimate the operational risk of invoking the skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill enables adding, modifying, and deleting DNS records but does not warn users that these operations are security-sensitive and can cause service disruption, traffic hijacking, email delivery failures, or domain takeover conditions if used incorrectly. Because DNS changes directly affect availability and routing for internet services, omission of a destructive-action warning increases the chance of unsafe or unintended use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill requires DNS provider credentials but does not include a privacy or security warning about the sensitivity of the username and API password. Exposure or mishandling of these credentials could give an attacker full control over DNS records, enabling redirection, phishing, interception of services, or denial of service across the affected domain.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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.py (reported line 72)May include surrounding context.

python
def __init__(self, username: str, api_password: str):
        self.username = username
        self.api_password = api_password
        self.base_url = "https://api.west.cn/api/v2/domain/"
    
    def _generate_token(self) -> str:
        """生成身份验证Token(10分钟有效期)"""

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code performs deletion of DNS records, which can immediately disrupt service, but there is no confirmation prompt, visible logging/print warning, or cautionary comment/docstring explaining the destructive impact. In this file, the delete path is exposed as a normal action alongside add/modify without any explicit disclosure that it is irreversible or service-affecting.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
96% confidence
Finding

The dependency specification for requests is unpinned, allowing installation of newer or transitive-compatible versions without review. This weakens reproducibility and can expose the skill to known vulnerable releases or unexpected behavior changes if the environment resolves to an unsafe version.

Content

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

text
requests>=2.26.0
typing>=3.7.4.3

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
94% confidence
Finding

The manifest references requests without pinning to a reviewed safe release, and that package has multiple known advisories across versions. Because the resolved version is unconstrained beyond a minimum, deployments may install an affected release, making the actual risk unverifiable and potentially exposing credential leakage, TLS, or request-handling issues depending on runtime resolution.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
90% confidence
Finding

The typing package is also unpinned, which reduces build reproducibility and permits silent version drift. While this is less likely to be directly exploitable than a network-facing library, unpinned dependencies still create supply-chain and stability risk.

Content

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

text
requests>=2.26.0
typing>=3.7.4.3

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The natural-language metadata and descriptions are entirely in Chinese, and the skill does not indicate any user language choice or opt-in. Under the stated policy, forcing a specific language without offering a choice can be a locale-policy issue unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.