Back to skill

Security audit

Intelligent Budget Tracker

Security checks for vulnerabilities and agentic risk

Overview

This money-tracking skill is mostly coherent, but it handles sensitive financial data and sends broad spending data to a third-party AI API without enough scoping or privacy controls.

Install only if you are comfortable with financial records being stored locally and, for natural-language parsing or AI insights, sent to SkillBoss API Hub. Prefer using a restricted data path, avoid entering sensitive notes or account identifiers, review what data is passed to generateInsights(), and pin or verify the npm package version before use.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:145
Finding

Unminimized Transmission of Sensitive Financial Data to a Third-Party API

Content
View full analysis
{ const response = await fetch('https://api.skillboss.com/v1/pilot', { method: 'POST', headers: { 'Authorization': `Bearer ${SKILLBOSS_API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ type: 'chat', inputs: { messages: [ { role: 'user', content: `Analyze this spending data and provide 3-5 actionable insights: ${JSON.stringify(spendingData)}` } ] }, prefer: 'balanced' }) }); const result = await response.json(); const text = result.result.choices[0].message.content; return text.split('\n').filter((line: string) => line.trim()); } ``` ### Technical Analysis The documented implementation serializes the entire caller-supplied `spendingData` object and sends it to `https://api.skillboss.com/v1/pilot`. Depending on the supplied object, this may disclose transaction amounts, income, dates, merchants, categories, behavioral patterns, and free-text descriptions. The external transmission is related to the declared AI-insight functionality and uses HTTPS, so it is not covert exfiltration. However, the implementation does not demonstrate: - Explicit user consent immediately before transmission. - An allowlist limiting which financial fields may leave the system. - Redaction of merchant names, notes, identifiers, or account-related information. - Aggregation of records before transmission. - Payload-size or schema restrictions. - A warning describing third-party processing and data retention. - A local-only alternative for generating basi ...[truncated 2105 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:14
Finding

Unpinned and Unverifiable Third-Party Package Installation

Content
View full analysis
Remediation
View remediation
`. 2. Publish and link the corresponding source repository and immutable release tag. 3. Provide a lockfile and registry integrity metadata so installations are reproducible. 4. Document the expected npm registry, package scope, and verified publisher identity. 5. Review the package and its transitive dependencies before recommending installation. 6. Use automated dependency monitoring and promptly respond to maintainer, registry, or package-integrity incidents. 7. Where operationally feasible, install with lifecycle scripts disabled, such as through `npm install --ignore-scripts`, after confirming that the package does not legitimately require them. 8. Run installation and execution under a minimally privileged account without unnecessary access to secrets or unrelated files. 9. Prefer an implementation included directly in the audited repository so documented behavior can be verified against the shipped code. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (7)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation explicitly describes sending spending and budgeting data to an external AI API for natural-language parsing and insights, but it does not prominently warn users that sensitive financial records may leave the local environment. In a money-tracking skill, transaction categories, merchants, dates, and amounts are highly sensitive, so omission of a clear privacy notice increases the risk of unintentional disclosure.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

The documented implementation performs an outbound network request to a third-party API, creating an external data transmission path from a financial tracking tool. External transmission is especially sensitive in this context because the surrounding code indicates that spending data is included in the request body, so users need strong disclosure and controls.

Content

Scanner excerpt · SKILL.md (reported line 150)May include surrounding context.

md
const SKILLBOSS_API_KEY = process.env.SKILLBOSS_API_KEY;

async function generateInsightsFromData(spendingData: object): Promise<string[]> {
  const response = await fetch('https://api.skillboss.com/v1/pilot', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${SKILLBOSS_API_KEY}`,

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

The documented implementation performs an outbound network request to a third-party API, creating an external data transmission path from a financial tracking tool. External transmission is especially sensitive in this context because the surrounding code indicates that spending data is included in the request body, so users need strong disclosure and controls.

Content

Scanner excerpt · SKILL.md (reported line 150)May include surrounding context.

md
const SKILLBOSS_API_KEY = process.env.SKILLBOSS_API_KEY;

async function generateInsightsFromData(spendingData: object): Promise<string[]> {
  const response = await fetch('https://api.skillboss.com/v1/pilot', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${SKILLBOSS_API_KEY}`,

Ssd 3

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The example prompt embeds serialized spending data directly into a natural-language request sent to an external AI service. Because this skill handles highly sensitive financial information, transmitting full spending datasets can expose personal habits, merchants, income/expense patterns, and other private details to a third party beyond the local trust boundary.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 261)May include surrounding context.

md
| Variable | Description |
|----------|-------------|
| `SKILLBOSS_API_KEY` | SkillBoss API Hub key,用于自然语言解析和 AI 智能洞察(`https://api.skillboss.com/v1/pilot`) |
| `CLAWHUB_DATA_PATH` | 可选,自定义数据存储路径 |

---

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The file is primarily written in English, but this section header switches to Chinese with no indication that multilingual output is intentional or user-selectable. This can violate language consistency expectations and may reduce usability for users who did not opt into a different language.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill documents local storage locations, export, and backup behavior for financial records without warning that these files may contain sensitive personal finance history. Users or downstream agents may assume ephemeral processing, but the library persists data on disk and can create backups, increasing exposure if the host is shared, compromised, or improperly permissioned.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.