OK Computers + Ring Gates + Net Protocol

Security checks across malware telemetry and agentic risk

Overview

This appears to be a legitimate OK Computers blockchain toolkit, but it needs review because it can perform irreversible onchain actions and includes a loader that runs code from a relay.

Install only if you understand Base blockchain transactions and trust the Bankr API, RPC providers, and okc-relay service. Use a limited wallet/API key, inspect every transaction and signature request before submission, avoid generic signing unless absolutely necessary, do not store private data onchain, and do not use the JSONP loader with untrusted content.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (23)

Intent-Code Divergence

Medium
Confidence
88% confidence
Finding
The README documents a JSONP relay that uses <script> tags to bypass the iframe sandbox and load content from external infrastructure, which undermines the stated isolation model. Even if presented as a feature, this creates a trust-boundary break: untrusted or mutable off-chain content can execute in the page context, enabling code injection, phishing UI, or malicious transaction prompting.

Intent-Code Divergence

Medium
Confidence
99% confidence
Finding
The code explicitly uses a JSONP relay by injecting a remote <script> tag, which executes arbitrary JavaScript from an external origin in the page context. The comment advertising a sandbox bypass is a strong red flag because this defeats normal isolation and gives the relay full control over the DOM and any accessible data.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
This block dynamically creates a script element whose src is built from a remote relay URL, causing arbitrary code from that endpoint to run immediately in the document. Because JSONP is executable code rather than passive data, compromise of the relay, DNS, hosting, or upstream response path becomes full client-side code execution.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The code takes externally sourced content and, when it looks like HTML, calls document.open(), document.write(), and document.close() to replace the entire document. This enables remote HTML/script injection and complete UI takeover, allowing phishing, malicious JavaScript execution, or silent modification of the skill's behavior.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The CLI advertises `build-store <key> <text>`, but the implementation calls `buildStore(key, key, text)`, causing the key to be written into the onchain `text` field while the user-supplied text is stored in the `bytes` field. This mismatch can lead users and downstream tooling to publish unintended data to an immutable onchain store, creating integrity and privacy risks because once submitted the data cannot be easily corrected or removed.

Missing User Warnings

Medium
Confidence
82% confidence
Finding
The README promotes deploy, write, and transaction-submission workflows for onchain content without prominent warnings that these actions are irreversible and may spend funds or alter public state. In an agent skill context, unclear safety framing increases the chance that an automated agent will prepare or submit destructive or costly transactions without explicit user confirmation.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The specification documents a `medina.js deploy <channel> <id>` command that assembles onchain content and writes it to pages, but it does not warn that the source data comes from public blockchain channels and may therefore be attacker-controlled. In this skill context, the protocol is explicitly designed to reconstruct and deploy arbitrary transmitted content such as `text/html`, so omission of a safety warning increases the risk of users publishing untrusted or malicious content to pages without review.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The script automatically submits generated transaction data to an external API and ultimately to a public blockchain, but it provides no explicit consent prompt or strong warning that content will leave the local environment and may become public and irreversible. In an agent skill context, this is more dangerous because execution may be triggered by users who do not realize it performs real networked financial/publication actions.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The page hard-codes a third-party Alchemy RPC endpoint and sends blockchain queries to it whenever the user scans the network or channels. This exposes user activity, queried identifiers, IP address, and usage patterns to an external service without any in-UI disclosure or consent, which is a privacy and data-leakage risk in a monitoring skill.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill performs a network call to a third-party relay and executes the returned code without meaningful disclosure or consent. This increases risk because users and reviewers are not clearly warned that external code will run and potentially bypass expected sandbox restrictions.

External Transmission

Medium
Category
Data Exfiltration
Content
**Or submit using Node.js fetch** (no shell commands):

```javascript
const res = await fetch("https://api.bankr.bot/agent/submit", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.BANKR_API_KEY,
Confidence
87% confidence
Finding
fetch("https://api.bankr.bot/agent/submit", { method: "POST"

External Transmission

Medium
Category
Data Exfiltration
Content
const tx = ok.buildPostMessage("board", "hello from an AI agent!");

// 5. Submit via Bankr direct API
const res = await fetch("https://api.bankr.bot/agent/submit", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.BANKR_API_KEY,
Confidence
87% confidence
Finding
fetch("https://api.bankr.bot/agent/submit", { method: "POST"

External Transmission

Medium
Category
Data Exfiltration
Content
// 2. Submit each via Bankr direct API
for (const tx of txs) {
  const res = await fetch("https://api.bankr.bot/agent/submit", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.BANKR_API_KEY,
Confidence
85% confidence
Finding
fetch("https://api.bankr.bot/agent/submit", { method: "POST"

External Transmission

Medium
Category
Data Exfiltration
Content
**Submit using Bankr's direct API** (recommended — synchronous, instant):

```bash
curl -s -X POST https://api.bankr.bot/agent/submit \
  -H "X-API-Key: $BANKR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"transaction\": $(echo $TX_JSON)}"
Confidence
84% confidence
Finding
curl -s -X POST https://api.bankr.bot/agent/submit \ -H "X-API-Key: $BANKR_API_KEY" \ -H "Content-Type: application/json" \ -d

External Transmission

Medium
Category
Data Exfiltration
Content
### Submit a Transaction
```bash
curl -s -X POST https://api.bankr.bot/agent/submit \
  -H "X-API-Key: $BANKR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"transaction":{"to":"0x...","data":"0x...","value":"0","chainId":8453}}'
Confidence
84% confidence
Finding
curl -s -X POST https://api.bankr.bot/agent/submit \ -H "X-API-Key: $BANKR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"transaction":{"to":"0x...","data":"0x...","value":"0","chainId":

External Transmission

Medium
Category
Data Exfiltration
Content
const tx = np.buildStore("my-page", "my-page", "<h1>Hello from the blockchain</h1>");

// Submit via Bankr direct API
// curl -X POST https://api.bankr.bot/agent/submit -H "X-API-Key: $BANKR_API_KEY" -d '{"transaction": ...}'
```

### Key Encoding (Important)
Confidence
80% confidence
Finding
curl -X POST https://api.bankr.bot/agent/submit -H "X-API-Key: $BANKR_API_KEY" -d

External Transmission

Medium
Category
Data Exfiltration
Content
**Submit using Bankr's direct API** (recommended — synchronous, instant):

```bash
curl -s -X POST https://api.bankr.bot/agent/submit \
  -H "X-API-Key: $BANKR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"transaction\": $(echo $TX_JSON)}"
Confidence
84% confidence
Finding
https://api.bankr.bot/

External Transmission

Medium
Category
Data Exfiltration
Content
**Or submit using Node.js fetch** (no shell commands):

```javascript
const res = await fetch("https://api.bankr.bot/agent/submit", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.BANKR_API_KEY,
Confidence
87% confidence
Finding
https://api.bankr.bot/

External Transmission

Medium
Category
Data Exfiltration
Content
### Submit a Transaction
```bash
curl -s -X POST https://api.bankr.bot/agent/submit \
  -H "X-API-Key: $BANKR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"transaction":{"to":"0x...","data":"0x...","value":"0","chainId":8453}}'
Confidence
84% confidence
Finding
https://api.bankr.bot/

External Transmission

Medium
Category
Data Exfiltration
Content
### Sign Data (for EIP-712, permits, Seaport orders, etc.)
```bash
curl -s -X POST https://api.bankr.bot/agent/sign \
  -H "X-API-Key: $BANKR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"signatureType":"eth_signTypedData_v4","typedData":{...}}'
Confidence
90% confidence
Finding
https://api.bankr.bot/

External Transmission

Medium
Category
Data Exfiltration
Content
const tx = ok.buildPostMessage("board", "hello from an AI agent!");

// 5. Submit via Bankr direct API
const res = await fetch("https://api.bankr.bot/agent/submit", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.BANKR_API_KEY,
Confidence
87% confidence
Finding
https://api.bankr.bot/

External Transmission

Medium
Category
Data Exfiltration
Content
// 2. Submit each via Bankr direct API
for (const tx of txs) {
  const res = await fetch("https://api.bankr.bot/agent/submit", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.BANKR_API_KEY,
Confidence
85% confidence
Finding
https://api.bankr.bot/

External Transmission

Medium
Category
Data Exfiltration
Content
const tx = np.buildStore("my-page", "my-page", "<h1>Hello from the blockchain</h1>");

// Submit via Bankr direct API
// curl -X POST https://api.bankr.bot/agent/submit -H "X-API-Key: $BANKR_API_KEY" -d '{"transaction": ...}'
```

### Key Encoding (Important)
Confidence
80% confidence
Finding
https://api.bankr.bot/

VirusTotal

60/60 vendors flagged this skill as clean.

View on VirusTotal