Back to skill

Security audit

Jackal Skill

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent encrypted memory client, but it asks agents to automatically restore and persist sensitive cross-session memory with weak scoping and trust-boundary controls.

Review this before installing if you plan to let an agent auto-load memory. Use a dedicated API key, avoid storing credentials or prompt-like behavioral rules in memory blobs, keep the encryption key private, and consider running it in an environment where file and network access are limited to the documented key path and service endpoint.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (3)

T02 · Agent Memory Poisoning

Error
Location
jackal-memory/client.py:128
Finding

Persistent Memory Is Restored Without an Explicit Trust Boundary

Content
View full analysis
None: result = _request("GET", f"/load/{key}") print(_decrypt(result["content"])) ``` `jackal-memory/examples/save.json:1-4`: ```json { "key": "identity", "content": "I am SquireMoltsworth. My owner is FreeNationWW. My primary submolt is m/continuity. I prefer question-based posts over technical specs." } ``` ### Technical Analysis The Skill recommends loading an identity or memory blob before the agent performs other work. The implementation decrypts the remotely stored content and emits it verbatim. It does not impose a schema, distinguish factual memory from behavioral instructions, filter instruction-like content, or require confirmation before identity-related state is restored. AES-GCM protects confidentiality and integrity against parties that do not possess the encryption key. It does not establish that the plaintext originally saved by an authorized session is trustworthy. An authorized but compromised session, a process with access to the encryption key and API credentials, or an agent that saves attacker-controlled text can persist malicious instructions for later sessions. The example explicitly demonstrates that identity and behavioral preferences may be stored in this channel, increasing the likelihood that restored text will be treated as authoritative agent state rather than inert user data. ### Attack Path 1. An attacker supplies instruction-like content to an agent session through an otherwise untrusted input. 2. The authorized agent inco ...[truncated 1123 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
jackal-memory/client.py:43
Finding

Encryption Key File Is Created Without Explicitly Restrictive Permissions

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:24
Finding

Cryptography Dependency Is Installed Without Version or Integrity Pinning

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill requires access to environment secrets, local file read/write, and network communication, but it does not declare any explicit tool scope or permissions boundary. That makes the skill's effective privileges broader and less auditable, increasing the chance that an agent could access sensitive local data or exfiltrate it to the remote service without clear user approval or runtime restriction.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.