T01 · Skill Instruction Hijacking
- Location
scripts/analyze.py:292- Finding
Indirect prompt injection through untrusted search content
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is coherent, but it saves AI-generated web research for reuse in other workflows without enough validation or overwrite safeguards.
Install only if you are comfortable sending brand names and prompts to Gemini and Google Search, and review generated profiles before using them in other AI workflows. Prefer GEMINI_API_KEY over --api-key, avoid confidential unreleased brands, pin dependencies before production use, and back up or review catalog files before using --auto-save.
scripts/analyze.py:292Indirect prompt injection through untrusted search content
scripts/analyze.py:3Unpinned runtime dependency creates a supply-chain exposure
scripts/analyze.py:381Gemini API key can be exposed through command-line arguments
scripts/analyze.py:350Predictable debug file permits symlink-based file overwrite
The documented behavior does not fully match the actual behavior: it omits explicit disclosure of external network access to Gemini and Google Search, while also claiming list/update capabilities not represented here. Undisclosed network egress is security-relevant because brand names, prompts, and potentially sensitive workflow context may be sent to third-party services without clear user awareness or policy gating.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
def get_api_key(provided_key: str | None) -> str | None:
"""Get API key from argument, env var, or fail."""
if provided_key:
return provided_key
return os.environ.get("GEMINI_API_KEY")
The skill documents capabilities that rely on environment-variable access and writing files, but it declares no explicit tool scope or permissions boundary. That creates a least-privilege failure: an agent or reviewer cannot clearly constrain or audit what the skill is allowed to access, increasing the risk of unintended secret exposure or filesystem modification.
The script sends the user-provided brand name and related research prompts to Google Gemini with Google Search enabled, but it provides no explicit notice or consent flow warning that input data will be transmitted to external Google services. In a creative workflow this can expose confidential client, stealth-brand, or embargoed campaign information to third-party processing, creating a real privacy and data-governance issue even though the behavior appears intended for normal operation.
The skill promotes automatic saving into a fixed catalog path but provides no warning about overwriting existing files or modifying shared brand-profile data. In a multi-workflow environment, this can cause accidental data loss, integrity issues, or poisoning of downstream creative workflows that trust the stored profile.
No suspicious patterns detected.