T08 · Insecure Dependencies
- Location
SKILL.md:16- Finding
Unpinned Third-Party Dependencies Create a Supply-Chain Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This appears to be a legitimate Gemini image-generation skill, with expected third-party API use and some configuration and dependency hygiene risks to understand before use.
Install only in a dedicated virtual environment, pin or review dependency versions if possible, and do not use prompts, images, URLs, or .env files containing confidential data unless you are comfortable sharing the submitted content with Google services.
SKILL.md:16Unpinned Third-Party Dependencies Create a Supply-Chain Risk
scripts/generate.py:29Overbroad .env Loading Exposes Unrelated Secrets to the Runtime
The script reads environment variables and local .env files to obtain credentials and proxy settings, but the finding indicates this capability is not declared in the skill permissions. In an agent-skill context, undeclared access to environment-sourced secrets is a real security issue because it expands the skill’s effective privileges beyond what users or the platform may expect.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
def load_dotenv():
"""Load environment variables from .env file (script directory first, then parent directory). Does not overwrite existing environment variables."""
script_dir = os.path.dirname(os.path.abspath(__file__))
candidates = [
os.path.join(script_dir, ".env"),
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
def load_dotenv():
"""Load environment variables from .env file (script directory first, then parent directory). Does not overwrite existing environment variables."""
script_dir = os.path.dirname(os.path.abspath(__file__))
candidates = [
os.path.join(script_dir, ".env"),
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"""Load environment variables from .env file (script directory first, then parent directory). Does not overwrite existing environment variables."""
script_dir = os.path.dirname(os.path.abspath(__file__))
candidates = [
os.path.join(script_dir, ".env"),
os.path.join(script_dir, "..", ".env"),
]
for path in candidates:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"""Load environment variables from .env file (script directory first, then parent directory). Does not overwrite existing environment variables."""
script_dir = os.path.dirname(os.path.abspath(__file__))
candidates = [
os.path.join(script_dir, ".env"),
os.path.join(script_dir, "..", ".env"),
]
for path in candidates:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"""Load environment variables from .env file (script directory first, then parent directory). Does not overwrite existing environment variables."""
script_dir = os.path.dirname(os.path.abspath(__file__))
candidates = [
os.path.join(script_dir, ".env"),
os.path.join(script_dir, "..", ".env"),
]
for path in candidates:
The skill metadata and description do not warn users that prompts, reference images, YouTube URLs, and search queries may be transmitted to external Google Gemini and Google Search services. In this skill’s context, that omission is meaningful because the core functionality explicitly encourages uploading local images and supplying external URLs, creating a risk of accidental disclosure of sensitive data to third-party services.
The script transmits user prompts, optional local images, and possibly video/search-derived content to the external Google Gemini API, but it does not present an explicit runtime warning or confirmation about that data leaving the local environment. In a skill context that may process sensitive images or prompts, this creates a meaningful privacy and data-handling risk through unintended disclosure to a third party.
No suspicious patterns detected.