T09 · Insecure Skill Coding Practices
- Location
scripts/main.py:48- Finding
Unsafe Fail-Open Chemical Classification Can Produce Hazardous Storage Guidance
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is not malware, but it needs Review because it gives real-world chemical storage advice with unreliable logic and broader agent permissions than its core function needs.
Only install this with tight sandboxing and reduced permissions, and do not rely on its output for real chemical storage decisions. Treat results as a rough draft that must be checked against current SDSs, institutional EHS procedures, and qualified human review, especially for unknowns, mixtures, multi-hazard chemicals, toxics, cyanides, oxidizers, and any compatibility decision.
scripts/main.py:48Unsafe Fail-Open Chemical Classification Can Produce Hazardous Storage Guidance
scripts/main.py:77Broad Group Matching Incorrectly Declares Chemical Pairs Compatible
SKILL.md:4Skill Declares Unnecessary Command Execution and File Modification Permissions
This content may contain harmful instructions that could cause physical harm if followed. CRITICAL: Review carefully before use.
demo_inventory = [
"HCl (concentrated)",
"NaOH pellets",
"Ethanol",
"Hydrogen peroxide",
"Sodium cyanide",
"PBS",
"Acetone"
]
groups = sorter.sort_chemicals(demo_inventory)
This tool produces laboratory chemical storage classifications and compatibility guidance in a safety-critical domain, but it does not warn users that the logic is simplified, incomplete, and unsuitable as the sole basis for storage decisions. Because the classifier relies on substring matching and limited hard-coded groups, it can misclassify hazardous chemicals and create a false sense of safety, potentially leading to dangerous co-storage decisions.
This skill provides chemical classification and storage recommendations in a safety-critical domain, but the cited section lacks a prominent warning not to rely on generated output as the sole basis for handling unknown or incompletely identified chemicals. Overreliance on heuristic classifications in lab storage could cause incompatible storage decisions, leading to toxic release, fire, or other physical harm.
The skill’s Security Checklist and Risk Assessment claim there is no file system access, but the document elsewhere includes file-reading logic (open(file_path, 'r')) and describes generating output files. This mismatch can mislead operators, policy engines, or reviewers into granting broader trust than warranted, increasing the chance of unintended file access in real deployments.
The related-skills section uses Chinese terms '上游' and '下游' alongside English, which introduces a locale-specific presentation choice without any user opt-in or explanation. Under the language policy, skills should avoid imposing a specific language or locale unless it is optional or clearly justified.
The docstring says the function processes a chemical inventory from a text file with one chemical per line, but the implementation also computes hazard statistics and builds an incompatibility report before returning a structured analysis object. While related to the same workflow, the docstring understates what the function actually does.