Back to skill

Security audit

EasyEDA API Skill

Security checks for vulnerabilities and agentic risk

Overview

This EasyEDA skill is purpose-aligned but opens an unauthenticated local bridge that can run arbitrary EasyEDA code against connected projects.

Use this only if you intentionally want an AI agent to control a running EasyEDA session. Start the bridge only while needed, close it afterward, avoid browsing untrusted sites while it runs, and treat connected EasyEDA projects as accessible to local software until the bridge adds authentication and origin restrictions.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/bridge-server.mjs:124
Finding

Unauthenticated Local Bridge Permits Arbitrary Code Execution in EasyEDA

Content
View full analysis
{ // CORS res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); if (req.method === 'OPTIONS') { res.writeHead(204); res.end(); return; } ``` From `scripts/bridge-server.mjs:198-219`: ```javascript // Execute code on EDA if (req.method === 'POST' && req.url === '/execute') { let body = ''; for await (const chunk of req) body += chunk; try { const payload = JSON.parse(body); const code = payload.code; const windowId = payload.windowId; // optional, uses active window if not specified if (!code || typeof code !== 'string') { res.writeHead(400, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: 'Missing "code" field (string)' })); return; } const result = await executeOnEda(code, windowId); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ success: true, result, windowId: windowId || activeEdaWindowId })); } catch (err) { ``` From `scripts/bridge-server.mjs:228-230`: ```javascript // ─── WebSocket Server ────────────────────────── ...[truncated 5285 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (760)

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger list contains very broad terms such as "EasyEDA", "PCB", "EDA", "schematic", and "circuit board", which can cause the skill to activate in unrelated conversations. Because this skill can start a local bridge and execute code in a running EasyEDA client, accidental activation materially increases the chance of unintended code execution or environment manipulation.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/_quick-reference.md](references/_quick-reference.md) — All method signatures for rapid lookup

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/_quick-reference.md](references/_quick-reference.md) — All method signatures for rapid lookup

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- [references/_quick-reference.md](references/_quick-reference.md) — All method signatures for rapid lookup

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · format/pcb/rule.md (reported line 66)May include surrounding context.

md
10. Future logic support: `["AND", ["NET", "GND"], ["LAYER", 5]]`
4. ruleOrder priority: the smaller the value, the higher the priority. Recommended:
    - `0` component rule
    - `1` footprint rule
    - `2` region rule
    - `3` net-net rule
    - `4` net rule

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · guide/how-to-start-for-ai.md (reported line 95)May include surrounding context.

md
| Symptom | How to handle |
| --- | --- |
| Network timeout / cannot fetch packages (common on mainland China networks) | Edit the `.npmrc` inside the project, uncomment `registry=https://registry.npmmirror.com`, and retry. **Only edit the project-level `.npmrc`; never modify the global npm configuration without consent** |
| On Windows: `...ps1 cannot be loaded because running scripts is disabled on this system` (wording may be localized) | First try `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned` (affects only the current user, no administrator privileges needed); if that still fails, ask the user to run `Set-ExecutionPolicy RemoteSigned` in an administrator PowerShell themselves. The AI must not attempt to elevate privileges on its own |

### 3.4 Configure `extension.json`

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · guide/how-to-start-for-ai.md (reported line 215)May include surrounding context.

md
| Symptom | How to handle |
| --- | --- |
| Network timeout / cannot fetch packages (common on mainland China networks) | Edit the `.npmrc` inside the project, uncomment `registry=https://registry.npmmirror.com`, and retry. **Only edit the project-level `.npmrc`; never modify the global npm configuration without consent** |
| On Windows: `...ps1 cannot be loaded because running scripts is disabled on this system` (wording may be localized) | First try `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned` (affects only the current user, no administrator privileges needed); if that still fails, ask the user to run `Set-ExecutionPolicy RemoteSigned` in an administrator PowerShell themselves. The AI must not attempt to elevate privileges on its own |

### 3.4 Configure `extension.json`

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Board.md (reported line 303)May include surrounding context.

md
## Remarks

If the specified board does not exist, the API will return `false`<!-- -->, indicating that the operation failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Board.md (reported line 303)May include surrounding context.

md
## Remarks

If the specified board does not exist, the API will return `false`<!-- -->, indicating that the operation failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Board.md (reported line 396)May include surrounding context.

md
Promise&lt;[IDMT\_BoardItem](../interfaces/IDMT_BoardItem.md) \| undefined&gt;

Board detailed properties of; if it is `undefined`<!-- -->, the retrieval failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Board.md (reported line 396)May include surrounding context.

md
Promise&lt;[IDMT\_BoardItem](../interfaces/IDMT_BoardItem.md) \| undefined&gt;

Board detailed properties of; if it is `undefined`<!-- -->, the retrieval failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_EditorControl.md (reported line 420)May include surrounding context.

md
</td><td>

Tab ID. Here [IDMT\_SchematicPageItem.uuid](../interfaces/IDMT_SchematicPageItem.md)<!-- -->, [IDMT\_PcbItem.uuid](../interfaces/IDMT_PcbItem.md)<!-- -->, and [IDMT\_PanelItem.uuid](../interfaces/IDMT_PanelItem.md) are supported as input

</td></tr>
</tbody></table>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_EditorControl.md (reported line 830)May include surrounding context.

md
Promise&lt;[IDMT\_EditorSplitScreenItem](../interfaces/IDMT_EditorSplitScreenItem.md) \| undefined&gt;

The editor split screen property tree. If it is `undefined`<!-- -->, the data retrieval failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_EditorControl.md (reported line 830)May include surrounding context.

md
Promise&lt;[IDMT\_EditorSplitScreenItem](../interfaces/IDMT_EditorSplitScreenItem.md) \| undefined&gt;

The editor split screen property tree. If it is `undefined`<!-- -->, the data retrieval failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_EditorControl.md (reported line 1095)May include surrounding context.

md
</td><td>

Document UUID. Here [IDMT\_SchematicItem.uuid](../interfaces/IDMT_SchematicItem.md)<!-- -->, [IDMT\_SchematicPageItem.uuid](../interfaces/IDMT_SchematicPageItem.md)<!-- -->, [IDMT\_PcbItem.uuid](../interfaces/IDMT_PcbItem.md)<!-- -->, and [IDMT\_PanelItem.uuid](../interfaces/IDMT_PanelItem.md) are supported as input

</td></tr>
<tr><td>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_EditorControl.md (reported line 1223)May include surrounding context.

md
Promise&lt;string \| undefined&gt;

Tab ID, if it is `undefined`<!-- -->, then open document failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_EditorControl.md (reported line 1223)May include surrounding context.

md
Promise&lt;string \| undefined&gt;

Tab ID, if it is `undefined`<!-- -->, then open document failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Folder.md (reported line 438)May include surrounding context.

md
Promise&lt;[IDMT\_FolderItem](../interfaces/IDMT_FolderItem.md) \| undefined&gt;

Folder property; if it is `undefined`<!-- -->, the retrieval failed

## Remarks

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Panel.md (reported line 159)May include surrounding context.

md
Promise&lt;string \| undefined&gt;

New panel UUID. If it is `undefined`<!-- -->, the copy failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Panel.md (reported line 159)May include surrounding context.

md
Promise&lt;string \| undefined&gt;

New panel UUID. If it is `undefined`<!-- -->, the copy failed

## Example

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Panel.md (reported line 340)May include surrounding context.

md
Promise&lt;[IDMT\_PanelItem](../interfaces/IDMT_PanelItem.md) \| undefined&gt;

Panel detailed properties of; if it is `undefined`<!-- -->, the retrieval failed

## Remarks

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Panel.md (reported line 340)May include surrounding context.

md
Promise&lt;[IDMT\_PanelItem](../interfaces/IDMT_PanelItem.md) \| undefined&gt;

Panel detailed properties of; if it is `undefined`<!-- -->, the retrieval failed

## Remarks

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Pcb.md (reported line 172)May include surrounding context.

md
Promise&lt;string \| undefined&gt;

New PCB UUID. If it is `undefined`<!-- -->, the copy failed

## Remarks

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Pcb.md (reported line 391)May include surrounding context.

md
Promise&lt;[IDMT\_PcbItem](../interfaces/IDMT_PcbItem.md) \| undefined&gt;

PCB detailed properties of; if it is `undefined`<!-- -->, the retrieval failed

## Remarks

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/classes/DMT_Pcb.md (reported line 391)May include surrounding context.

md
Promise&lt;[IDMT\_PcbItem](../interfaces/IDMT_PcbItem.md) \| undefined&gt;

PCB detailed properties of; if it is `undefined`<!-- -->, the retrieval failed

## Remarks

Static analysis

No suspicious patterns detected.