Back to skill

Security audit

paper-view

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent for using PaperView, but it should be reviewed because it tells agents to open generated HTML that runs remote scripts and embeds API responses directly into executable browser code.

Install only if you are comfortable sending selected chart data or public PDF URLs to PaperView and using its API token. Treat generated HTML as untrusted output: avoid opening it for sensitive datasets unless the template is hardened with safe JSON embedding, pinned dependencies, and integrity checks.

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

Error
Location
SKILL.md:237
Finding

Network-Controlled API Responses Are Inserted into Executable HTML Without Safe Escaping

Content
View full analysis
var chart = echarts.init(document.getElementById('chart')); var option = {{ECHARTS_OPTION_JSON}}; chart.setOption(option); window.addEventListener('resize', function() { chart.resize(); }); ``` The associated instruction states: ```text Replace `{{ECHARTS_OPTION_JSON}}` with the `echarts_option` value from the API response (the JSON object, not stringified). Save as a `.html` file and open: ``` Word-cloud response rendering: ```html ``` The associated instruction states: ```text Replace `{{WORDCLOUD_DATA_JSON}}` with the `data` array from the API response. ``` ### Technical Analysis The Skill directs the agent to insert values returned by a remote API directly into an inline JavaScript block. Although valid JSON is generally valid JavaScript, JSON string escaping does not inherently make a value safe for embedding inside an HTML `script` element. For example, a string property containing a sequence such as `` can terminate the HTML script element regardless of its JavaScript string context. Additional attacker-controlled ...[truncated 2184 chars]
Remediation
View remediation
SAFE_ESCAPED_JSON ``` 5. Alternatively, construct the document through DOM APIs and assign data through JavaScript variables after parsing a separately stored JSON file. 6. Add a restrictive Content Security Policy that blocks unexpected scripts and network destinations. If inline code is necessary, use a nonce or hash rather than allowing all inline scripts. 7. Treat all API response fields as untrusted, including chart titles, labels, series names, keyword values, image URLs, and error messages. 8. Add security tests using values containing ``, HTML tags, event handlers, quotes, backslashes, and Unicode line separators. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:218
Finding

Generated Pages Execute Mutable Third-Party JavaScript from a Public CDN

Content
View full analysis
``` ECharts GL dependency: ```html ``` Word-cloud dependencies: ```html ``` ### Technical Analysis The dependency URLs specify only major versions, such as `echarts@5` and `echarts-gl@2`. These are mutable version ranges rather than immutable, audited releases. A future package update can therefore change the JavaScript executed by previously generated templates. The script elements also omit Subresource Integrity attributes. Consequently, the browser has no cryptographic mechanism to verify that the downloaded files match a version reviewed by the Skill author. Because remote JavaScript executes with the same privileges as the page's own scripts, compromise of the package publisher, package registry, CDN delivery path, or a subsequently selected package release could cause attacker-controlled code to run whenever a generated visualization is opened. ### Attack Path 1. An attacker compromises a relevant package-publishing account, package release, registry, CDN, or distribution process. 2. The mutable major-version URL begins serving modified JavaScript. 3. The user invokes the Skill and follows its ...[truncated 1172 chars]
Remediation
View remediation
``` 4. Prefer bundling reviewed copies of the dependencies locally with the Skill so rendering does not depend on mutable remote code. 5. Maintain a dependency lock file or manifest containing exact versions and hashes. 6. Apply a restrictive Content Security Policy limiting scripts to approved hashes or nonces and restricting network destinations. 7. Establish a dependency-update process that includes vulnerability scanning, provenance verification, and review before changing pinned versions. 8. Avoid making remote dependency execution mandatory when a local or server-generated static image can satisfy the user's request. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (9)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 71)May include surrounding context.

  • Scientific: violin, manhattan, volcano, forest, survival, roc, venn, upset, enrichment, circos, waterfall
bash
curl -X POST \
  -H "Authorization: Bearer $PAPERVIEW_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 176)May include surrounding context.

  • Scientific: violin, manhattan, volcano, forest, survival, roc, venn, upset, enrichment, circos, waterfall
bash
curl -X POST \
  -H "Authorization: Bearer $PAPERVIEW_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{

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 78)May include surrounding context.

"data": "Year,China,USA,Japan\n2018,13608,20544,4971\n2019,14280,21373,5082\n2020,14723,20894,5040\n2021,17734,23315,4941\n2022,17963,25463,4231", "context": "Show GDP trends as a line chart" }'
https://api.ipaperview.com/api/v1/viz/generate/

text

**Response:**

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 133)May include surrounding context.

"data": "Year,China,USA,Japan\n2018,13608,20544,4971\n2019,14280,21373,5082\n2020,14723,20894,5040\n2021,17734,23315,4941\n2022,17963,25463,4231", "context": "Show GDP trends as a line chart" }'
https://api.ipaperview.com/api/v1/viz/generate/

text

**Response:**

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 147)May include surrounding context.

"data": "Year,China,USA,Japan\n2018,13608,20544,4971\n2019,14280,21373,5082\n2020,14723,20894,5040\n2021,17734,23315,4941\n2022,17963,25463,4231", "context": "Show GDP trends as a line chart" }'
https://api.ipaperview.com/api/v1/viz/generate/

text

**Response:**

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 183)May include surrounding context.

"data": "Year,China,USA,Japan\n2018,13608,20544,4971\n2019,14280,21373,5082\n2020,14723,20894,5040\n2021,17734,23315,4941\n2022,17963,25463,4231", "context": "Show GDP trends as a line chart" }'
https://api.ipaperview.com/api/v1/viz/generate/

text

**Response:**

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 126)May include surrounding context.

Example — from text description:

bash
curl -N -X POST \
  -H "Authorization: Bearer $PAPERVIEW_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs creating and opening local HTML files that load remote JavaScript from public CDNs and render untrusted API output directly into the page. This creates a supply-chain and content-rendering risk: compromised CDN assets or maliciously crafted API responses could execute script in the user's browser context without any warning or trust boundary explanation.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

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.

Content

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

md
**Data retention:**
- Submitted text data (CSV/JSON) is processed in memory and **not stored** after the response is returned.
- Generated AI diagram images are uploaded to Upyun CDN and retained for **30 days**, after which they are automatically deleted.
- No user data is sold or shared with third parties.

**Authentication:**

Static analysis

No suspicious patterns detected.