T09 · Insecure Skill Coding Practices
- Location
SKILL.md:223- Finding
AppleScript Injection Through Unsanitized Calendar Event Fields
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This NBA helper is mostly purpose-aligned, but its calendar example can modify Apple Calendar through unsafe AppleScript without clear consent or input escaping.
Install only in an isolated Python environment, prefer pinned dependency versions, and do not let an agent run the Calendar example unless you explicitly want it to create local calendar events. The calendar code should be rewritten to pass values as data or escape and validate them before any osascript use.
SKILL.md:223AppleScript Injection Through Unsanitized Calendar Event Fields
requirements.txt:3Unbounded and Unhashed Third-Party Dependencies
The calendar example goes beyond a viewing-only assistant by invoking osascript through subprocess.run, which performs local command execution and modifies the user's calendar. Even though the example uses hardcoded values in the sample call, the function is written to accept external inputs (player_name, game_date, matchup, calendar), and directly interpolates them into AppleScript, creating a path to unintended local actions or script injection if reused with untrusted data.
The skill presents calendar modification as a normal example workflow without an explicit warning that it changes user data on the local machine. In an agent setting, this can normalize state-changing behavior and increase the chance that an assistant performs persistent actions without informed consent, which is risky even if the underlying purpose is convenience.
This file presents its top-level description, installation guidance, and runtime prompts exclusively in Chinese. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified, which is not present here.
This markdown file describes direct access to the NBA.com official API and includes many examples that perform live network requests, but it does not warn users that using these endpoints sends request metadata and query parameters to an external service. For markdown files, omissions of warnings about behaviors affecting privacy or system/network activity should be flagged when such external communication is a core documented behavior.
The note says to convert NBA times to local timezone with a Beijing-specific offset, which imposes a particular locale assumption in natural language. This can violate language/locale policy when the skill does not offer a user choice or clarify that the example is region-specific.
The dependency is specified with a lower bound only, which allows future unresolved versions to be installed. This creates supply-chain and reproducibility risk because a later release could introduce a breaking change or a vulnerable version without the skill author explicitly reviewing it.
# NBA Tracker Skill 依赖
nba_api>=1.4.1
pandas>=2.0.0
The pandas dependency is not pinned to a specific version, so installations may resolve to different releases over time. That increases supply-chain risk and makes it harder to ensure that deployed environments avoid vulnerable or untested versions.
# NBA Tracker Skill 依赖
nba_api>=1.4.1
pandas>=2.0.0
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
No suspicious patterns detected.