Back to skill

Security audit

Nl Tool

Security checks for vulnerabilities and agentic risk

Overview

This skill is a small line-numbering tool, but its bundled script has an undisclosed no-argument mode that can read a file path from stdin instead of numbering stdin text.

Review before installing. Use only with explicit, intended filenames, and do not rely on the advertised command options unless the script is fixed. The no-argument behavior should be removed or clearly documented because it may reveal contents of a local file named by stdin.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared purpose is a standard line-numbering utility for text content. The code matches that purpose only when a filename argument is supplied. In the no-argument case, instead of numbering lines from stdin, it executes open(sys.stdin.read()), which interprets stdin content as a filename/path and opens that file. This is a materially different behavior involving unintended filesystem access and means the implementation does not accurately represent the declared functionality.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.