T08 · Insecure Dependencies
- Location
scripts/cron.py:1- Finding
Unpinned Third-Party Dependencies Are Automatically Resolved and Executed
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This cron helper is purpose-aligned and low impact, with documentation accuracy and dependency-pinning cautions but no evidence of hidden or harmful behavior.
This skill is reasonable to install for local cron-expression help. Be aware that 6-field cron support is not consistently implemented, and run it in a normal least-privilege environment. For stricter supply-chain control, pin `rich` and `croniter` or use a committed lockfile before automated use.
scripts/cron.py:1Unpinned Third-Party Dependencies Are Automatically Resolved and Executed
The overall purpose mostly aligns: the script explains cron expressions, generates some cron expressions from English phrases, validates them, and shows future run times. However, there is a material mismatch in capability: the description explicitly claims support for both standard 5-field and 6-field cron with seconds, but the code consistently enforces exactly 5 fields in explain and validate, and its metadata/field definitions only cover five fields. The generate logic also emits only 5-field expressions. While croniter may parse more formats in the next command, the skill as implemented does not meaningfully provide the declared 6-field support. Additionally, the natural-language generation is narrow and pattern-based rather than broad conversion, though this is a lesser mismatch. There are no undeclared sensitive behaviors or resource accesses.
The top-level docstring describes the tool as explaining, generating, validating, and previewing cron expressions without noting format restrictions, while the implementation of explain and validate hard-fails on non-5-field input. Given the manifest explicitly mentions 6-field support, this omission creates a behavioral mismatch in the skill's claimed capabilities.
The manifest says the skill works with standard 5-field and 6-field cron expressions, including seconds. However, the explain command rejects anything other than 5 fields, and the validate path does the same, so documented capability is not actually implemented for those operations.
No suspicious patterns detected.