T09 · Insecure Skill Coding Practices
- Location
SKILL.md:59- Finding
User-Controlled Location Values Can Trigger Shell Command Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This weather skill is purpose-aligned, but its install instructions and command guidance create avoidable local execution and supply-chain risks.
Review this before installing. Prefer installing a pinned, verified release of openmeteo-sh, avoid running sudo make install from an unreviewed checkout, and ensure the agent invokes openmeteo with structured arguments or robust shell escaping rather than interpolating user-provided city names into shell strings.
SKILL.md:59User-Controlled Location Values Can Trigger Shell Command Injection
README.md:42Unpinned Third-Party Installation Paths Can Execute Mutable Upstream Code with Elevated Privileges
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Import the signing key
curl -fsSL https://lstpsche.github.io/apt-repo/pubkey.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/openmeteo-sh.gpg
# Add the repository
echo "deb [signed-by=/usr/share/keyrings/openmeteo-sh.gpg] https://lstpsche.github.io/apt-repo stable main" \
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Import the signing key
curl -fsSL https://lstpsche.github.io/apt-repo/pubkey.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/openmeteo-sh.gpg
# Add the repository
echo "deb [signed-by=/usr/share/keyrings/openmeteo-sh.gpg] https://lstpsche.github.io/apt-repo stable main" \
This is a true risky pattern because it chains network-fetched content directly into a privileged command. In a skill ecosystem, installation docs that normalize curl | sudo ... can make supply-chain compromise more dangerous, since a compromised key distribution endpoint could silently alter trust configuration with root privileges.
# Import the signing key
curl -fsSL https://lstpsche.github.io/apt-repo/pubkey.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/openmeteo-sh.gpg
# Add the repository
echo "deb [signed-by=/usr/share/keyrings/openmeteo-sh.gpg] https://lstpsche.github.io/apt-repo stable main" \
Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.
# Add the repository
echo "deb [signed-by=/usr/share/keyrings/openmeteo-sh.gpg] https://lstpsche.github.io/apt-repo stable main" \
| sudo tee /etc/apt/sources.list.d/openmeteo-sh.list
# Install
sudo apt update
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
- `bash` 3.2+ (pre-installed on macOS and Linux)
- `curl` (pre-installed on macOS and Linux)
- `jq` — install if missing: `brew install jq` (macOS) or `sudo apt install jq` (Debian/Ubuntu)
## Installation
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
- `bash` 3.2+ (pre-installed on macOS and Linux)
- `curl` (pre-installed on macOS and Linux)
- `jq` — install if missing: `brew install jq` (macOS) or `sudo apt install jq` (Debian/Ubuntu)
## Installation
The README instructs users to pipe data fetched over the network directly into a privileged command (curl ... | sudo gpg --dearmor). Even though this is presented as repository setup, chaining unverified remote content into a root-privileged operation increases supply-chain risk if the hosting location, DNS, or transport trust is compromised.
# Import the signing key
curl -fsSL https://lstpsche.github.io/apt-repo/pubkey.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/openmeteo-sh.gpg
# Add the repository
echo "deb [signed-by=/usr/share/keyrings/openmeteo-sh.gpg] https://lstpsche.github.io/apt-repo stable main" \
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
| sudo tee /etc/apt/sources.list.d/openmeteo-sh.list
sudo apt update sudo apt install openmeteo-sh
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
| sudo tee /etc/apt/sources.list.d/openmeteo-sh.list
sudo apt update sudo apt install openmeteo-sh
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
| sudo tee /etc/apt/sources.list.d/openmeteo-sh.list
sudo apt update sudo apt install openmeteo-sh
The manifest description says to use the skill whenever the user asks about weather, temperature, rain, snow, wind, or whether they need an umbrella. Several of these triggers, especially 'temperature' and 'wind', are broad everyday topics and the file does not provide exclusion conditions or tighter scope for when the skill should not activate.
No suspicious patterns detected.