Back to skill

Security audit

taskleef

Security checks for vulnerabilities and agentic risk

Overview

This Taskleef skill is coherent, but it needs Review because it installs an unpinned external CLI that will use the user's API key and it documents destructive task commands without confirmation guidance.

Install only if you trust the upstream Taskleef CLI source and are comfortable giving it your Taskleef API key. Prefer a pinned release or verified checksum before execution, avoid running setup as root, and require explicit confirmation with exact IDs before delete, project delete, or board clear actions.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:4
Finding
Mutable Remote Executable Is Downloaded and Trusted Without Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:4`; corroborating manual installation instructions at `README.md:39-49` **Vulnerability Type**: Remote payload retrieval and execution through an unpinned external executable **Risk Level**: High ### Vulnerable Code `SKILL.md:4`: ```json metadata: {"clawdbot":{"emoji":"✅","requires":{"bins":["todo","curl","jq"],"env":["TASKLEEF_API_KEY"]},"primaryEnv":"TASKLEEF_API_KEY","homepage":"https://taskleef.com","install":[{"id":"todo-cli","kind":"download","url":"https://raw.githubusercontent.com/Xatter/taskleef/main/taskleef-cli/todo","bins":["todo"],"label":"Install Taskleef CLI (todo)"},{"id":"jq-brew","kind":"brew","formula":"jq","bins":["jq"],"label":"Install jq via Homebrew","os":["darwin"]},{"id":"jq-linux-amd64","kind":"download","url":"https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64","bins":["jq"],"label":"Install jq (Linux x86_64)","os":["linux"]},{"id":"jq-linux-arm64","kind":"download","url":"https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-arm64","bins":["jq"],"label":"Install jq (Linux ARM64)","os":["linux"]}]}} ``` `README.md:39-49`: ```bash **todo CLI:** ```bash # Clone the repository git clone https://github.com/Xatter/taskleef.git cd taskleef/taskleef-cli chmod +x todo # Add to PATH (add to ~/.bashrc or ~/.zshrc) export PATH="$PATH:/path/to/taskleef/taskleef-cli" ``` ``` ### Technical Analysis The automatic installer downloads the `todo` executable directly from the mutable `main` branch of an external GitHub repository. The configuration does not pin the executable to an immutable commit or version and does not provide a checksum or cryptographic signature for integrity verification. Consequently, the effective executable payload can change after this Skill has been audited. The package contains no local source for the downloaded CLI, so its runtime behavior cannot be verified from the audited project. The manual installation instructions h ...[truncated 2271 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Pin the CLI to immutable content** - Reference an immutable release artifact or exact Git commit rather than the `main` branch. - Avoid URLs whose contents can change without changing the Skill metadata. 2. **Verify integrity before execution** - Publish a SHA-256 or stronger digest for every supported artifact. - Configure the installer to reject any artifact whose digest does not exactly match the reviewed value. - Prefer cryptographically signed release artifacts and verify signatures against a pinned, trusted public key. 3. **Vendor or build reviewed source** - Include the reviewed CLI source in the Skill package where feasible. - Use a reproducible build process so the installed binary can be matched to audited source. - Record the upstream version, commit identifier, build procedure, and expected digest. 4. **Apply least privilege** - Run the CLI with only the environment variables, filesystem paths, and network access required for Taskleef operation. - Do not expose unrelated secrets to the CLI process. - Avoid running the Skill or installer as root or another privileged account. 5. **Harden the manual installation documentation** - Replace the unpinned `git clone` procedure with checkout of a reviewed commit or signed tag. - Add explicit checksum or signature-verification commands before `chmod +x` or execution. 6. **Review the external CLI** - Add the pinned `todo` implementation to the audit scope. - Verify credential handling, command construction, TLS behavior, temporary-file handling, and API response parsing before trusting the executable. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
brew install jq

# Ubuntu/Debian
sudo apt-get install jq

# CentOS/RHEL
sudo yum install jq
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
brew install jq

# Ubuntu/Debian
sudo apt-get install jq

# CentOS/RHEL
sudo yum install jq
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Session Persistence

Medium
Category
Rogue Agent
Content
cd taskleef/taskleef-cli
chmod +x todo

# Add to PATH (add to ~/.bashrc or ~/.zshrc)
export PATH="$PATH:/path/to/taskleef/taskleef-cli"
```
Confidence
90% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README explicitly advertises destructive capabilities like completing and deleting todos but does not warn users that the skill can modify or permanently remove Taskleef data. In an agentic context, missing disclosure increases the risk of users invoking the skill without understanding it performs write operations, which can lead to unintended data loss or workflow disruption.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill documents direct deletion commands for todos without any warning, confirmation guidance, or safer alternatives. In an agent setting, users may issue ambiguous requests and the agent could choose a destructive action that permanently removes task data, increasing the risk of unintended data loss.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
Project deletion is a higher-risk destructive operation because it may remove organizational structures and potentially associated task relationships. Without a warning about data loss or a recommendation to confirm intent, an agent could delete the wrong project based on partial title/ID matching, causing broader accidental disruption.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
Clearing a board column is a bulk destructive action that can affect multiple cards at once, making mistakes more damaging than single-item commands. Combined with flexible identifier matching, this increases the chance that an agent or user clears the wrong column and causes significant unintended task loss or workflow disruption.

Static analysis

No suspicious patterns detected.