T01 · Skill Instruction Hijacking
- Location
lib/reporter.js:227- Finding
Mandatory Third-Party Branding and External Links in Generated Reports
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly does what it claims, but it asks for more authority than it needs and handles sensitive financial exports with unsafe persistent output and parsing risks.
Review before installing in environments with sensitive SAP exports. Use it only in a sandboxed workspace with limited filesystem access, remove shell permission if possible, avoid opening generated CSVs from untrusted source data until formula-neutralization is fixed, and verify dependency updates or compensating size/time limits for spreadsheet parsing.
lib/reporter.js:227Mandatory Third-Party Branding and External Links in Generated Reports
lib/exporter.js:14Spreadsheet Formula Injection in Flagged CSV Exports
skill.json:34Unnecessary Shell Permission Violates Least Privilege
lib/xlsx-lite.js:20Unbounded Synchronous XLSX Decompression Enables Denial of Service
index.js:85Predictable Output Paths Permit File Overwrite and Symlink Redirection
brace-expansion 1.1.12 is flagged with multiple DoS advisories affecting expansion parsing. Although it appears only as a transitive devDependency here, vulnerable globbing/parsing logic can still be exercised during local tooling or CI runs, causing hangs or memory exhaustion if attacker-controlled patterns are processed.
flatted 3.3.4 is reported vulnerable to prototype pollution and unbounded recursion during parse revival. In this lockfile it is only present as a transitive devDependency, which lowers exposure, but a vulnerable parser in tooling can still be abused in development or CI contexts if attacker-controlled serialized input is processed.
js-yaml 4.1.1 has multiple CPU consumption advisories related to merge-key and mapping resolution. Here it is a transitive devDependency of eslint tooling rather than application runtime code, which reduces but does not eliminate risk because malicious YAML config processed in CI or local lint workflows could trigger denial of service.
xlsx 0.18.5 is a direct runtime dependency with known prototype pollution and ReDoS issues. In the context of a journal-auditing skill that likely ingests user-supplied spreadsheet files, this is especially relevant because crafted XLSX content could cause process slowdown, denial of service, or unsafe object mutation during parsing.
xlsx 0.18.5 is affected by known issues including prototype pollution and regular-expression denial of service. This is especially relevant here because the skill is explicitly designed to ingest spreadsheet-based journal entry exports; a malicious or crafted workbook from an untrusted source could crash processing, hang the audit workflow, or corrupt application logic through polluted objects.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
## Unacceptable Behavior
- Harassment, personal attacks, or discrimination.
- Sharing private information without consent.
- Disruptive or off-topic behavior.
## Enforcement
The trigger phrase 'review postings' is broad enough to match ordinary accounting requests that may not specifically intend to invoke this skill. That can cause unintended activation, especially in enterprise environments where users commonly discuss reviewing postings in routine workflows.
The phrase 'flag anomalies' is highly generic and lacks any SAP, journal, or finance-specific constraint. Because many unrelated tasks may ask to 'flag anomalies,' this creates a higher risk of accidental invocation and misrouting of user requests to the skill.
The skill writes audit artifacts derived from SAP journal data directly to disk in the same directory as the uploaded file, creating audit_memo.md and flagged_entries.csv without explicit user consent or any retention/cleanup controls. Because SAP FI/CO exports commonly contain sensitive financial and user activity data, these files can persist on shared hosts, agent workspaces, or backup systems and be exposed to other users or processes.
The manifest trigger list includes generic phrases such as "audit journal," "check journal entries," "review postings," and "flag anomalies" without narrowing context or exclusion conditions. In a manifest file, these broad activators can cause unintended invocation because they are not specific to this exact skill or usage boundary.
csv-parse 5.6.0 is a direct runtime dependency and is reported vulnerable to prototype manipulation via a columns-related parsing path. Because this skill appears to process CSV input, untrusted spreadsheet data could potentially trigger object-shape corruption or downstream logic issues if unsafe parsing options are used.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
},
"homepage": "https://github.com/dda-oo/sap-journal-auditor#readme",
"dependencies": {
"csv-parse": "^5.5.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
The allowed csv-parse version includes a release with a reported prototype replacement issue reachable via the columns path. In a skill that audits SAP journal exports from CSV files, parsing attacker-controlled or untrusted CSV input could let malformed data tamper with object behavior, potentially causing logic corruption or unsafe downstream handling.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"homepage": "https://github.com/dda-oo/sap-journal-auditor#readme",
"dependencies": {
"csv-parse": "^5.5.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"eslint": "^8.0.0"
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"xlsx": "^0.18.5"
},
"devDependencies": {
"eslint": "^8.0.0"
},
"engines": {
"node": ">=16.0.0"