Back to skill

Security audit

Jwdiario

Security checks for vulnerabilities and agentic risk

Overview

The skill’s purpose is simple and mostly coherent, but it ships code that uses shell-based curl despite documenting only safer web fetching.

Review before installing because the skill includes a Node script that invokes a shell command to fetch the page, while its instructions describe using web_fetch. The content source is public and fixed to wol.jw.org/es, but a safer version should remove shell execution or disclose and tightly scope it.

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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (6)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared behavior is limited to retrieving JW daily text via web_fetch, but the analysis reports use of child_process.execSync and curl instead. This mismatch is dangerous because shell-based network access bypasses declared tool restrictions, reduces auditability, and can open the door to arbitrary command execution or broader outbound access than intended.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding

The skill declares only a benign web-fetching purpose, but the analysis indicates shell capability without any explicit tool scoping or permissions declaration. Hidden execution capability increases risk because it can enable unintended command execution paths that are not visible to users or policy controls.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instructions explicitly require always using the Spanish version of the site and prohibit translation. This imposes a fixed language/locale behavior without indicating that the user can choose another language, which matches the language/locale policy violation category.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill invokes a shell command via child_process to fetch remote content, which gives it broader execution capability than its stated purpose of simply retrieving a webpage. Even though the URL is locally constructed from the current date and not directly user-controlled here, using execSync with shell execution unnecessarily expands the attack surface and can enable abuse if the code is later modified or the environment is manipulated.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The comment explicitly states the URL is always in Spanish, and the code forces the /es/ path and es-ES locale formatting. This is a natural-language policy concern because it imposes a specific language without user opt-in or any documented justification that the skill is region-specific.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The implementation does not match the declared design: it uses curl through shell execution instead of the safer, expected web_fetch capability. This discrepancy matters because it bypasses intended platform controls, auditing, and restriction boundaries that may apply to approved fetch mechanisms, making the skill more dangerous than its description suggests.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
main.js:24