Back to skill

Security audit

RedNote Research

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent, but it needs review because it can turn private screenshots, chat text, or comments into public search queries without a clear redaction or consent step.

Install only if you are comfortable with a research assistant using public search and, if you choose, an authenticated browser session for RedNote. Before providing screenshots, chat logs, copied comments, subtitles, or OCR text, crop or redact personal identifiers and ask the agent to show proposed search terms before running them externally.

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/recovery_query_builder.py:76
Finding

Unredacted User-Provided Content May Be Disclosed Through Public Search Queries

Content
View full analysis
List[str]: text_pool = " ".join([entity, title, snippet, extracted_text, *context]) tokens = extract_tokens(text_pool) hashtags = extract_hashtags(text_pool) quotes = quote_candidates(title, snippet or extracted_text, max_quotes=4) dates = extract_dates(text_pool) strong_tokens = [t for t in tokens if len(t) >= 2][:12] context_terms = dedupe(context + hashtags + dates)[:8] queries = [] if entity: queries.extend([ f'{entity} 小红书', f'site:xiaohongshu.com {entity}', f'site:www.xiaohongshu.com {entity}', ]) for quote in quotes: queries.append(quote) if entity: queries.append(f'{entity} {quote}') queries.append(f'site:xiaohongshu.com {quote}') for token in strong_tokens[:8]: if entity and token.casefold() != entity.casefold(): queries.append(f'{entity} {token}') queries.append(f'{entity} 小红书 {token}') if not entity or token.casefold() != entity.casefold(): queries.append(token) for term in context_terms: if entity: queries.append(f'{entity} {ter ...[truncated 5225 chars]
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

A second description-behavior mismatch exists at the same location: the skill claims evidence recovery and community-intelligence execution across posts, comments, screenshots, video, and audio, yet the artifact only instructs how such work should be done. In a security-sensitive or compliance-sensitive workflow, this creates a dangerous gap between claimed and real observability, enabling overclaiming and unverified conclusions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

A second description-behavior mismatch exists at the same location: the skill claims evidence recovery and community-intelligence execution across posts, comments, screenshots, video, and audio, yet the artifact only instructs how such work should be done. In a security-sensitive or compliance-sensitive workflow, this creates a dangerous gap between claimed and real observability, enabling overclaiming and unverified conclusions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The query modifiers, family terms, and generated query variants are all fixed in Chinese, and the CLI/output path does not provide any opt-in or alternative locale selection. This can violate language/locale policy because the skill effectively forces a specific language for all users rather than documenting a justified region-only scope or allowing user choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The invocation examples are entirely in Chinese and centered on Chinese-language query patterns, which can function as a de facto language preference in the skill's natural-language description. The file does not explicitly offer the user a language/output choice or state that other languages are equally supported.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.