Security Audit
ailabs-393/ai-labs-claude-skills:packages/skills/seo-optimizer
github.com/ailabs-393/ai-labs-claude-skillsTrust Assessment
ailabs-393/ai-labs-claude-skills:packages/skills/seo-optimizer received a trust score of 48/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 3 findings: 1 critical, 1 high, 1 medium, and 0 low severity. Key findings include Command Injection via unsanitized arguments to Python scripts, Arbitrary File Write via `generate_sitemap.py` output_file argument, Excessive File System Read Permissions for Analysis Scripts.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Static Code Analysis layer scored lowest at 48/100, indicating areas for improvement.
Last analyzed on March 14, 2026 (commit 1a12bc7a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings3
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Command Injection via unsanitized arguments to Python scripts The skill's `SKILL.md` instructs the agent to execute Python scripts (`seo_analyzer.py`, `generate_sitemap.py`) using user-provided arguments such as `<directory_or_file>`, `<directory>`, `<base_url>`, and `[output_file]`. If the agent directly substitutes untrusted user input into these command-line arguments without proper sanitization (e.g., escaping shell metacharacters), a malicious user could inject arbitrary shell commands. For example, providing `'; rm -rf /; #'` as a directory argument could lead to critical system compromise. The agent must rigorously sanitize all user-provided input before constructing and executing shell commands. This typically involves using `shlex.quote()` in Python or equivalent functions in other languages to properly escape arguments, or by using `subprocess.run` with `shell=False` and passing arguments as a list. | Static | SKILL.md:30 | |
| HIGH | Arbitrary File Write via `generate_sitemap.py` output_file argument The `scripts/generate_sitemap.py` script accepts an optional `output_file` argument from the command line (`sys.argv[3]`). The script then directly uses this argument to create or overwrite a file: `with open(output_file, 'w', encoding='utf-8') as f:`. If a malicious user provides a path to a sensitive system file (e.g., `/etc/passwd`, `/boot/grub/grub.cfg`) or a web-accessible directory (e.g., `/var/www/html/malicious.xml`), the script will attempt to write the sitemap content to that location, potentially corrupting system files or injecting malicious web content. Implement strict validation for the `output_file` argument. Restrict output files to a designated, non-sensitive directory (e.g., a temporary directory or a user-specific output folder). Prevent absolute paths or paths that traverse outside the intended output directory. The agent should also validate this input before passing it to the script. | Static | scripts/generate_sitemap.py:169 | |
| MEDIUM | Excessive File System Read Permissions for Analysis Scripts Both `scripts/seo_analyzer.py` and `scripts/generate_sitemap.py` use `os.walk(directory)` where `directory` is a user-controlled command-line argument. This allows the scripts to traverse and read files within any directory the agent has access to. While `seo_analyzer.py` specifically targets `.html` files for parsing, `os.walk` still accesses all directories and files. If the agent is prompted to analyze a sensitive directory (e.g., `/etc`, `/home/user`), and sensitive information is present in HTML files or files that could be mistaken for HTML, this could lead to unauthorized information disclosure (data exfiltration). Restrict the `directory` argument to a safe, sandboxed environment or a specific project directory. The agent should validate that the provided directory path does not escape the intended scope (e.g., using `pathlib.Path.is_relative_to()` or similar checks). Consider running these scripts within a containerized environment with limited file system access. | Static | scripts/seo_seo_analyzer.py:10 |
Scan History
Embed Code
[](https://skillshield.io/report/fc82eaaa975478fd)
Powered by SkillShield