Security Audit
dkyazzentwatwa/chatgpt-skills:model-comparison-tool
github.com/dkyazzentwatwa/chatgpt-skillsTrust Assessment
dkyazzentwatwa/chatgpt-skills:model-comparison-tool received a trust score of 57/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 6 findings: 0 critical, 1 high, 4 medium, and 0 low severity. Key findings include Unpinned Python dependency version, Arbitrary File Read via User-Supplied Path, Unpinned or Loosely Pinned Dependencies.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. All layers scored 70 or above, reflecting consistent security practices.
Last analyzed on February 24, 2026 (commit d4bad335). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings6
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| HIGH | Arbitrary File Read via User-Supplied Path The script uses `pandas.read_csv()` with a file path directly provided by the user via the `--data` command-line argument. This allows a malicious actor to specify an arbitrary file path on the system (e.g., `/etc/passwd`, `~/.ssh/id_rsa`, or other sensitive data files). If the skill's execution environment has read access to these files, their contents could be loaded into a DataFrame and potentially exfiltrated through the script's output (e.g., `print_results`). Implement strict validation and sanitization of user-provided file paths. Restrict file access to a designated, isolated directory (e.g., a temporary sandbox). Do not allow arbitrary file paths. If possible, only accept file content directly or use a secure file upload mechanism that stores files in a controlled location with unique, non-guessable names. | Static | scripts/model_comparison_tool.py:109 | |
| MEDIUM | Unpinned Python dependency version Requirement 'scikit-learn>=1.3.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | model-comparison-tool/scripts/requirements.txt:1 | |
| MEDIUM | Unpinned Python dependency version Requirement 'pandas>=2.0.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | model-comparison-tool/scripts/requirements.txt:2 | |
| MEDIUM | Unpinned Python dependency version Requirement 'numpy>=1.24.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | model-comparison-tool/scripts/requirements.txt:3 | |
| MEDIUM | Unpinned Python dependency version Requirement 'matplotlib>=3.7.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | model-comparison-tool/scripts/requirements.txt:4 | |
| INFO | Unpinned or Loosely Pinned Dependencies The `requirements.txt` file specifies minimum versions for dependencies (e.g., `scikit-learn>=1.3.0`) rather than exact versions. While this allows for minor updates, it introduces a potential supply chain risk where future versions of these libraries could introduce breaking changes, vulnerabilities, or unexpected behavior without explicit review. Exact pinning (`==`) ensures deterministic builds. Pin all dependencies to exact versions (e.g., `scikit-learn==1.3.0`) to ensure deterministic builds and prevent unexpected changes from upstream packages. Use a dependency management tool (e.g., `pip-compile` from `pip-tools`) to manage and update dependencies securely. | Static | scripts/requirements.txt:1 |
Scan History
Embed Code
[](https://skillshield.io/report/35e63104864110ff)
Powered by SkillShield