Back to skill

Security audit

brand-sentinel

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed public web-search helper, but it ignores the brand value in its core searches and ships an embedded API application key while using a local token service.

Review before installing. This skill sends search queries to AutoGLM using a local token service, and its current brand argument is misleading unless each keyword already includes the brand name. The embedded application key should be rotated and moved out of source before broad distribution.

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/sentinel.py:41
Finding

Hard-Coded Application Credential in Source Code

Content
View full analysis
dict: timestamp = str(int(time.time())) sign = hashlib.md5(f"{APP_ID}&{timestamp}&{APP_KEY}".encode()).hexdigest() ``` ### Technical Analysis The application identifier and application key used to sign AutoGLM API requests are embedded directly in distributable source code. Any party with access to the Skill package can recover these values without requiring elevated local privileges. The application key is incorporated into an unsalted MD5 digest with a predictable application identifier and timestamp. MD5 is not appropriate for modern cryptographic authentication, and this construction is not a standard message authentication code. Although changing the signing algorithm may depend on the API provider's protocol, embedding the signing key in source code removes its confidentiality entirely. The bearer token retrieved from the local token service is separate from this application key. Therefore, the exposed key alone does not demonstrate complete account compromise; successful unauthorized API use may also require a valid bearer token or an API-side authentication weakness. ### Attack Path 1. An attacker downloads or otherwise obtains a copy of the Skill package. 2. The attacker opens `scripts/sentinel.py` and extracts `APP_ID` and `APP_KEY`. 3. The attacker reproduces the signing operation using a current Unix timestamp. 4. The attacker obtains a valid bearer token through an independent compromise, their own authorized environment, or another weakness outside the audited project. 5. The attacker submits signed requests to the fixed AutoGLM search endpoint using the exposed application identity. 6. If server-side controls d ...[truncated 855 chars]
Remediation
View remediation
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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared behavior says the skill performs brand-public-opinion search and filtering, but the documentation also reveals access to an undeclared local token service and use of a third-party search API for authentication-backed requests. This mismatch is dangerous because hidden authentication flows and external communications can bypass operator expectations, expose local credentials or tokens, and make it harder to assess trust boundaries.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file-level documentation and interface promise brand-aware monitoring, yet the implementation does not use the brand parameter anywhere in the search logic. In a security or risk-monitoring pipeline, this mismatch is dangerous because downstream agents may trust the output as scoped to a brand when it is not, causing systematic misclassification and potentially harmful business actions.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The tool advertises brand-specific monitoring, but the search queries are built only from keyword values and never include the provided brand. This can return unrelated negative content and misattribute it to the target brand, creating a data-integrity failure that can drive incorrect risk decisions, false alerts, or reputational harm.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill documentation declares no explicit tool scope or permission boundaries, yet it clearly describes capabilities requiring file access and outbound network access, plus interaction with a local token service. This creates a least-privilege and transparency problem: an agent or reviewer cannot reliably understand or constrain what the skill is allowed to do, increasing the chance of unintended data access or network use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The natural-language description, parameter examples, workflow example, and notes are all presented exclusively in Chinese, which effectively imposes a language requirement on users. The file does not state that the skill is China-region-specific or provide any opt-in/alternative language option, so this is a locale/language policy concern.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

This JSON manifest-like file defines only a list of keywords without any explanation of when they should trigger the skill, when they should not, or what context is required. Several entries are generic topical phrases about Tesla incidents or complaints, which could overlap with ordinary discussion and lead to unintended activation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The module description, usage instructions, output descriptions, and user-facing CLI/help text are all in Chinese, which effectively forces a specific language on users. There is no opt-in, alternate locale, or documentation indicating that the tool is intentionally limited to a Chinese-speaking or region-specific context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script sends queries derived from user-provided keywords to an external web-search API, but the surrounding docstring and CLI help do not disclose that these inputs will be transmitted over the network to a third-party service. Although there is stderr progress output, it does not clearly warn users about the data-sharing behavior before execution.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.