Back to skill

Security audit

Chat Search

Security checks for vulnerabilities and agentic risk

Overview

The skill clearly aims to search Feishu and Telegram chat history, but its broad automatic triggers and under-scoped handling of private message content warrant review before installation.

Install only if you intend agents to search private Feishu/Telegram chat history. Narrow activation to explicit chat-history requests, require confirmation before showing messages, choose the source or corpus before searching, bind Qdrant to local-only access if possible, and pin reviewed Docker and Python dependency versions.

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:48
Finding

Unpinned Third-Party Dependencies

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 48-53
Vulnerability Type: Mutable, unpinned third-party dependencies
Risk Level: Medium

Vulnerable code:

bash
# Qdrant
docker run -d --name qdrant -p 6333:6333 qdrant/qdrant

# Python FastEmbed
pip install fastembed

Technical Analysis

The installation instructions retrieve both Qdrant and FastEmbed without specifying immutable versions. The Docker command implicitly uses the mutable latest tag, while pip install fastembed resolves whichever package version and transitive dependencies are current at installation time.

Consequently, the artifacts executed by users can differ from those reviewed during this audit. Python package installation may execute package build or installation logic, and the downloaded container runs locally with the host port 6333 published. If an upstream release, registry account, package, image, or transitive dependency is compromised, malicious code could be delivered through these documented installation commands.

No evidence was found that the currently named packages are malicious. The vulnerability is the absence of version, digest, and integrity controls.

Attack Path

  1. An attacker compromises an upstream package release, container image, publisher account, registry, or transitive dependency.
  2. The malicious artifact is published under the dependency name referenced by the documentation.
  3. A user follows the installation instructions after the mutable artifact has changed.
  4. Docker pulls and runs the altered Qdrant image, or pip downloads and installs the altered Python package or dependency.
  5. Attacker-controlled code executes with the privileges of the Docker daemon/container configuration or the user running pip.
  6. The malicious component may access data made available to the search stack, including indexed or processed chat records, subject to its runtime permissions and environ ...[truncated 761 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin FastEmbed and all transitive Python dependencies to reviewed exact versions.
  • Use a lock file with cryptographic hashes and install with hash verification, such as pip install --require-hashes -r requirements.txt.
  • Pin the Qdrant image to a reviewed release and immutable SHA-256 digest, for example qdrant/qdrant:<version>@sha256:<digest>.
  • Retrieve dependencies only from explicitly trusted package indexes and container registries.
  • Add automated dependency and container-image vulnerability scanning to the release process.
  • Define a controlled update procedure that reviews release notes, verifies signatures or provenance where available, refreshes hashes and digests, and tests updates before distribution.
  • Run the container and Python environment with least privilege and restrict access to chat records, credentials, host files, and network destinations.
  • Avoid unnecessarily exposing Qdrant beyond the required interface; bind the published port to loopback when only local access is needed.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger phrases are broad everyday Chinese search terms such as '搜索', '查找', and '找一下', which can cause the skill to activate during ordinary conversation without clear user intent to search private chat archives. In this context, unintended activation is risky because the skill searches Feishu and Telegram history, potentially surfacing sensitive past messages.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill is designed to search Feishu and Telegram chat history and display message content, yet it provides no privacy warning or consent language about exposing potentially sensitive personal or business communications. This is especially dangerous because semantic search can retrieve unexpected but related private messages, increasing the likelihood of disclosure beyond what the user anticipated.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill states that it automatically triggers on listed phrases but does not define boundaries for which corpus will be searched, whether a confirmation step exists, or how ambiguous requests are handled. Because the data source is private chat history, ambiguous auto-triggering increases the chance of exposing sensitive content from unrelated conversations or platforms.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The description, triggers, and usage instructions are effectively limited to Chinese, and no alternative language option or explicit locale justification is provided. This can constitute a language/locale policy issue if the skill is expected to serve a broader user base without forcing a specific language.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.