Back to skill

Security audit

Recallit

Security checks for vulnerabilities and agentic risk

Overview

The skill is purpose-aligned for making flashcards, but its normal CLI workflow includes unsafe shell-style handling of user answers plus broad persistent installs and source retention.

Review before installing. Use this only if you are comfortable with a global unpinned CLI install and with source documents being saved locally for later study. Avoid sensitive documents or confidential concepts unless you control retention and network use. The publisher should fix the answer command pattern so agents pass user replies as separate process arguments or stdin, not interpolated shell text.

Vulnerability Patterns
  • 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
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:62
Finding

Shell Command Injection Through Unescaped User Answers

Content
View full analysis
"" --topic ``` The same unsafe invocation pattern appears again: ```bash recallit answer "" --topic ``` ### Technical Analysis The Skill directs the agent to insert the user's exact answer into a shell command enclosed only in double quotes. If the command is submitted to a shell, double quotes do not prevent command substitution through constructs such as `$(command)` or backticks. An embedded double quote may also terminate the intended argument and introduce additional shell syntax. The answer is explicitly attacker-controlled and is not escaped, validated, passed through standard input, or supplied through a process API that disables shell parsing. Card and topic identifiers are also represented as interpolated placeholders without documented validation. For example, an answer containing the following could trigger command substitution when the documented command is evaluated by a shell: ```text $(attacker-controlled-command) ``` This is an insecure command-construction pattern even though the stated purpose is merely to pass a quiz answer to the grading CLI. ### Attack Path 1. The agent begins a recall session and presents a card to the user. 2. A malicious user submits an answer containing shell substitution or quote-breaking syntax. 3. The agent follows `SKILL.md` and inserts the exact reply into the documented command. 4. The shell evaluates the injected syntax before or while launching `recallit`. 5. The attacker's command executes with the same operating-system identity and environment as the agent. ### Impact Assessment Successful exploitation can provide arbitrary command execution with the agent's current privileges. T ...[truncated 396 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:39
Finding

Unpinned Global Installation of Third-Party Tooling

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:304
Finding

Unverified Installation of Packs From Mutable Remote Sources

Content
View full analysis
recallit topic add npm: recallit pack share # print the install string + browse URL for a repo-local pack ``` ### Technical Analysis The Skill advertises installation from GitHub references, arbitrary Git URLs, npm specifications, and `.tgz` archives without requiring immutable commit hashes, exact package versions, integrity validation, source review, extraction controls, or a trusted-source allowlist. Branches, tags, generic Git URLs, and unpinned npm specifications may resolve to content that changes after the Skill itself has been reviewed. The project contains only `SKILL.md`; the implementation of the `recallit` CLI is not present, so the audit cannot verify whether remote archives are safely parsed, whether traversal paths are rejected, or whether executable package behavior is disabled. This finding therefore establishes unsafe ingestion of untrusted and mutable remote artifacts. Whether a particular artifact can directly execute code depends on behavior inside the external CLI and package formats, which is not available in the audited project. ### Attack Path 1. An attacker supplies or controls a repository, Git URL, npm specification, or archive accepted by `recallit topic add`. 2. The agent passes the attacker-controlled source to the CLI according to the documented instructions. 3. The CLI downloads and processes content that was not pinned or integrity-verified. 4. Malicious pack data enters local persistent storage. 5. If the external CLI contains unsafe archive extraction, parsing, hooks, or executable-content handling, the artifact may additionally alter files or execute code. ### Impact Assessment At minimum, an attacker can introduce untrusted or misleading study c ...[truncated 443 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 134)May include surrounding context.

md
- **Conversational (default).** Scope briefly, preview ~3 sample cards, let the user steer, confirm, install.
- **Ambient.** The user described intent in prose ("turn this into a deck of just the actionable stuff"). Parse source + filter from their words, echo back what you understood, then proceed as conversational.
- **One-shot.** The user said "just do it" / "no preview". Skip the preview; generate, gate, install ready cards, report. Still never auto-install needs-review or web-grounded cards without asking.

### Step 1 — ingest the source into `.author/source.txt`

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly instructs the agent to copy source material into packs/<id>/.author/source.txt and persist pack files, but it does not warn that user-provided local documents may be retained on disk. In the stated container context, the content may persist across updates via the mounted home directory, which creates a real privacy and data-retention risk for sensitive PDFs, notes, or proprietary files.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

For concept-mode authoring, the skill directs the agent to perform web searches and fetch external pages automatically, but it does not warn the user that their topic or study intent may be disclosed to third-party services. This can leak sensitive interests, internal project names, or confidential research topics outside the local environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill instructs cloning repositories and later installing packs from GitHub, git URLs, npm specs, or .tgz sources without a clear trust boundary or supply-chain warning. Even if the primary action is data ingestion rather than direct execution, pulling untrusted remote content and packages increases exposure to malicious content, dependency confusion, and unsafe install flows through the CLI ecosystem.

Content

No source excerpt is available for this finding.