T09 · Insecure Skill Coding Practices
- Location
SKILL.md:9- Finding
Unvalidated Shell Configuration Is Executed via source
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This PA coordination skill is mostly coherent, but it handles sensitive contacts and owner email/calendar actions with weak scoping and includes an unsafe local config-loading command.
Review before installing. Require explicit approval before any directory write, calendar creation, email send, broadcast, or auth setup; replace shell sourcing with strict config parsing; align the declared contact source; and remove real-looking example contact details.
SKILL.md:9Unvalidated Shell Configuration Is Executed via source
ai-pa/pa-directory.example.json:3Personal Contact Information Is Hardcoded in a Distributed Example File
The manifest says contact data comes from data/pa-directory.json, but the instructions switch the primary source to /opt/ocana/openclaw/workspace/PA_LIST.md and also permit creating/modifying the JSON file. This inconsistency undermines trust boundaries and provenance of sensitive contact data, increasing the chance of reading from or writing to an unreviewed source.
Claiming PA_LIST.md is the primary source while the manifest declares data/pa-directory.json creates a specification mismatch that can defeat user expectations, automated review, and permission scoping. In a skill that handles sensitive contact information, ambiguity about the authoritative source makes data tampering, stale data use, or hidden behavior more likely.
The skill instructs the agent to create or modify a PA directory containing names, phone numbers, owner identities, and emails without any warning, minimization guidance, or approval guardrails. Because this is sensitive contact data, silent creation or editing can lead to privacy exposure, accidental corruption, or insertion of untrusted contact records that affect later communications.
The manifest frames this as a directory/contact coordination skill, but the body also authorizes sending email and creating calendar events on the owner's account. That mismatch expands the skill's effective privileges and can mislead operators or policy layers that rely on the manifest for risk assessment, causing unintended outbound actions or account modifications.
The calendar command performs a state-changing action on the owner's account and may notify attendees, but the skill presents it as a routine step without an explicit user warning or confirmation. In practice this can create unauthorized meetings, leak scheduling details to third parties, or trigger external notifications based on an agent's mistaken interpretation.
The manifest describes the skill primarily as reading a local directory, but the body also authorizes state-changing actions such as editing contact data, sending email as the owner, and creating calendar events. This scope mismatch can mislead users or orchestrators about the skill's real capabilities, increasing the chance it is invoked in contexts where sensitive side effects were not expected.
The invocation guidance is very broad, covering nearly any 'cross-PA task,' which can cause over-triggering of a skill that has access to contacts and can initiate communications or calendar actions. In context, that broad routing surface makes downstream privileged actions more dangerous because ambiguous requests may be handled by this skill without clear boundaries.
The skill includes a command to send email from the owner's account, which is a privileged outbound action not tightly scoped to PA-directory lookup or peer-PA coordination. If invoked loosely under this broad skill, it could be abused to send unauthorized messages, exfiltrate information, or impersonate the owner to external recipients.
The directory update instructions write sensitive personal and business contact information to disk without nearby warnings, access-control guidance, or data-handling constraints. This increases the risk of accidental persistence of unnecessary PII, silent modification of trusted contact data, and downstream misuse by other tools reading the file.
The documentation first frames the directory as a file the skill reads, but later instructs the agent to modify it. Even if the write is operationally useful, the inconsistent description obscures that the skill can alter sensitive contact records, which may lead to accidental data corruption or unauthorized updates.
This example data uses Israeli phone numbers with a +972 country code and presents them as the default format, but the file does not state that the skill is Israel-specific or otherwise limited to that locale. For a reusable example manifest, this can implicitly enforce a locale-specific convention without documented justification or user choice.
No suspicious patterns detected.