T08 · Insecure Dependencies
- Location
SKILL.md:9- Finding
Mutable Upstream Source and Unrestricted npm Build Execution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill appears purpose-aligned for PikaBoard task management, but it needs review because installation runs mutable external Node code and the docs/scripts handle API tokens in plaintext files.
Review before installing. Use a sandbox or low-privilege account for setup, verify the upstream repository revision before running npm install/build, avoid putting the bearer token in TOOLS.md, protect backend/.env with restrictive permissions, and confirm board IDs before allowing agents to create or update tasks.
SKILL.md:9Mutable Upstream Source and Unrestricted npm Build Execution
scripts/setup.sh:37Bearer Token File Created Without Explicit Restrictive Permissions
scripts/setup-agent-board.sh:29Ambiguous Partial Board Matching Can Select an Unrelated Agent Board
The skill is presented as an API interaction utility, but it also directs the agent to clone a repository, install dependencies, build backend/frontend code, create local configuration files, and run a server. This mismatch is dangerous because users and orchestrators may grant or trigger the skill expecting low-risk API calls, while it actually expands to supply-chain, local execution, and secret-handling risks.
The skill explicitly instructs creation of a .env file containing PIKABOARD_TOKEN, and later suggests adding the token to TOOLS.md and exporting it in the shell environment. This increases the chance of credential exposure through plaintext files, repo commits, shell history, logs, or agent-readable workspace contents.
label: "Build frontend"
- id: env
kind: prompt
message: "Create .env with DATABASE_PATH and PIKABOARD_TOKEN"
label: "Configure environment"
---
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
fi
echo "Checking boards on ${PIKABOARD_API}..."
BOARDS_JSON="$(curl -fsS "${AUTH_HEADERS[@]}" "${PIKABOARD_API}/boards")"
BOARD_ID="$(
printf '%s' "${BOARDS_JSON}" | node -e '
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
' "${BOARD_NAME}")"
CREATED_JSON="$(
curl -fsS -X POST "${AUTH_HEADERS[@]}" \
-H "Content-Type: application/json" \
-d "${CREATE_PAYLOAD}" \
"${PIKABOARD_API}/boards"
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
npm run build
cd ..
# Create .env if not exists
if [ ! -f backend/.env ]; then
echo "⚙️ Creating .env..."
cat > backend/.env << EOF
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
npm run build
cd ..
# Create .env if not exists
if [ ! -f backend/.env ]; then
echo "⚙️ Creating .env..."
cat > backend/.env << EOF
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
npm run build
cd ..
# Create .env if not exists
if [ ! -f backend/.env ]; then
echo "⚙️ Creating .env..."
cat > backend/.env << EOF
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
npm run build
cd ..
# Create .env if not exists
if [ ! -f backend/.env ]; then
echo "⚙️ Creating .env..."
cat > backend/.env << EOF
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
npm run build
cd ..
# Create .env if not exists
if [ ! -f backend/.env ]; then
echo "⚙️ Creating .env..."
cat > backend/.env << EOF
The setup instructions tell users to export a sensitive backend token from a local .env file without any guidance on secure handling, masking, rotation, or limiting exposure. This is dangerous because it encourages copying secrets into shell environments and agent context, where they may leak through logs, process listings, command history, or downstream tool use.
The README explicitly instructs the agent to read PIKABOARD_TOKEN from pikaboard/backend/.env, which grants the skill a credential-access step beyond normal task-management operations. Even if intended for local setup, teaching an agent to pull secrets from local files expands its privileges and normalizes unsafe secret handling, increasing the chance of unintended credential exposure or reuse outside the intended API scope.
The skill performs shell-capable actions during installation and setup (git clone, npm install, npm run build, and later npm start) but declares no explicit tool scope or permissions boundary. This can cause an agent or platform to invoke powerful local execution behavior unexpectedly, increasing the chance of unintended code execution from an untrusted repository.
The trigger terms (tasks, board, todo, backlog, sprint) are broad and likely to match ordinary conversation, causing the skill to activate in contexts where the user did not intend task-system operations. Because the skill includes state-changing commands and setup guidance, overbroad triggering can lead to unintended API calls or modifications to persistent task data.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
List tasks:
curl -H "Authorization: Bearer $PIKABOARD_TOKEN" "$PIKABOARD_API/tasks"
Create task:
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
' "${BOARD_NAME}")"
CREATED_JSON="$(
curl -fsS -X POST "${AUTH_HEADERS[@]}" \
-H "Content-Type: application/json" \
-d "${CREATE_PAYLOAD}" \
"${PIKABOARD_API}/boards"
The documentation shows create and update examples that modify persistent task data but does not explicitly warn that these actions are state-changing. In an agent context, lack of mutation warnings can contribute to accidental writes, especially when combined with broad triggers and autonomous execution.
No suspicious patterns detected.