Vulnerabilities in pkg:gem/kobako

PACKAGE
Advisory Identifier: GHSA-7pwq-q9jf-539h
Advisory Summary

CVE-2026-55107 is a CRITICAL (CVSS 10.0) remote code execution vulnerability (CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')) affecting kobako Sandbox Escape libraries in the RubyGems ecosystem. The issue involves guest eval reaches host rce via method_missing → public_send (any bound service). Remediation is available by upgrading affected packages to version 0.9.1.

1 Known Advisory Record(s)
Package Vulnerability Intelligence

pkg:gem/kobako

1 Known Advisory Record(s)

Vulnerability advisories affecting package pkg:gem/kobako. Select an advisory below to view technical details or fixes.

Advisory ID CVE / NVD Severity Summary
GHSA-7pwq-q9jf-539h CVE-2026-55107 CRITICAL kobako Sandbox Escape: guest eval reaches host RCE via method_missing → public_send (any bound Service)

CVE-2026-55107 at a Glance

CVE Identifier CVE-2026-55107
GHSA Identifier GHSA-7pwq-q9jf-539h
Severity CRITICAL
CVSS v3.1 Base Score 10.0
CWE Classification CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')
Affected Product kobako Sandbox Escape
Package Ecosystem RubyGems
Published Date
Last Updated

Security Impact

CVSS: 10.0

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Changed (S:C)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix CVE-2026-55107

To remediate this vulnerability, upgrade all affected kobako Sandbox Escape dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

kobako fixed: 0.9.1
Upgrade kobako to 0.9.1
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for kobako

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-55107, inspect your project dependencies for kobako Sandbox Escape:

inspect dependencies for kobako

Analyze the terminal output to locate any version of kobako Sandbox Escape in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.9.1), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection'), where the product uses external input with reflection to select which classes or code to use, but it does not sufficiently prevent the input from selecting improper classes or code. In kobako Sandbox Escape, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary A guest mruby script running inside the Kobako sandbox can execute arbitrary Ruby in the host process, fully escaping the sandbox. ### Details A host embeds bound "Service" objects that guest scripts call across the wasm boundary through the transport dispatcher. The dispatcher passed the guest-supplied method name straight to `Object#public_send` on the bound object, with no restriction to the object's own methods: ```ruby target.public_send(method.to_sym, *args, **kwargs, &block) ``` `public_send` can invoke any public method, including Ruby's ambient reflection surface. A guest pivots through the public `send` into otherwise private Kernel methods: a dispatch request with `method = "send"` and `args = [:eval, "<ruby>"]` evaluates to `target.send(:eval, "<ruby>")`, running attacker-controlled Ruby in the host. Any bound Service object is sufficient — no Service-specific behavior is required. ### Proof of Concept A guest call equivalent to: ``` Service.send(:eval, "<arbitrary host ruby>") ``` executes in the host process and can read or modify host state, spawn processes, and so on. ### Impact Complete sandbox escape leading to remote code execution in the host process, defeating the gem's central guarantee of isolating untrusted mruby scripts. Any deployment that runs untrusted or attacker-influenced scripts is affected. All released versions (0.1.0 through 0.9.0) are vulnerable; the dispatcher carried the same unguarded `public_send` sink under three successive names (`registry` → `rpc` → `transport`). ### Patches Fixed in 0.9.1. The dispatcher now rejects any method whose resolved owner is a core/meta module (`BasicObject`, `Kernel`, `Object`, `Module`, `Class`), so only methods the bound object itself defines — or dynamically handles via `method_missing` — remain reachable. The ambient reflection methods (`send`, `__send__`, `public_send`, `instance_eval`, `instance_exec`, `method`, `instance_variable_get`, …) are all owned by those modules and are blocked. ### Workarounds None within the affected versions. Until you can upgrade, do not bind any host Service object into a sandbox that runs untrusted scripts. Upgrade to 0.9.1. ### References - GHSA-7pwq-q9jf-539h - Fix commit: 64f8470 ### Credits Reported and fixed by Ahmed Al Hafoudh.

CVE-2026-55107 Affected kobako Sandbox Escape Versions

1 component(s)
Fixed Versions:
0.9.1
Product / Package Ecosystem Affected Versions Fixed Version
kobako
RubyGems
≥ 0.1.0
< 0.9.1
0.9.1

References

Frequently Asked Questions

What is CVE-2026-55107?
CVE-2026-55107 is a security vulnerability in kobako Sandbox Escape involving guest eval reaches host RCE via method_missing → public_send (any bound Service) under CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection').
Which kobako Sandbox Escape versions are affected?
Affected versions include releases prior to 0.9.1 across affected packages: kobako.
What version fixes CVE-2026-55107?
Upgrading to 0.9.1 (or the latest patched release for your respective branch) resolves the vulnerability.
Is kobako affected?
Yes, kobako is affected in releases prior to 0.9.1. Upgrade your dependency to 0.9.1 or later.
What is the CVSS score of CVE-2026-55107?
CVE-2026-55107 has a CVSS v3.1 base score of 10.0 (CRITICAL) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H.
What CWE is associated with CVE-2026-55107?
CVE-2026-55107 is classified under CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') (The product uses external input with reflection to select which classes or code to use, but it does not sufficiently prevent the input from selecting improper classes or code.).
How can I check RubyGems dependencies for CVE-2026-55107?
Run the dependency tree command: 'inspect dependencies for kobako'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-7pwq-q9jf-539h",
  "modified" : "2026-08-18T20:09:59Z",
  "published" : "2026-08-18T20:09:59Z",
  "aliases" : [ "CVE-2026-55107" ],
  "summary" : "kobako Sandbox Escape: guest eval reaches host RCE via method_missing → public_send (any bound Service)",
  "details" : "### Summary\nA guest mruby script running inside the Kobako sandbox can execute arbitrary\nRuby in the host process, fully escaping the sandbox.\n\n### Details\nA host embeds bound \"Service\" objects that guest scripts call across the wasm\nboundary through the transport dispatcher. The dispatcher passed the\nguest-supplied method name straight to `Object#public_send` on the bound\nobject, with no restriction to the object's own methods:\n\n```ruby\ntarget.public_send(method.to_sym, *args, **kwargs, &block)\n```\n\n`public_send` can invoke any public method, including Ruby's ambient\nreflection surface. A guest pivots through the public `send` into otherwise\nprivate Kernel methods: a dispatch request with `method = \"send\"` and\n`args = [:eval, \"<ruby>\"]` evaluates to `target.send(:eval, \"<ruby>\")`,\nrunning attacker-controlled Ruby in the host. Any bound Service object is\nsufficient — no Service-specific behavior is required.\n\n### Proof of Concept\nA guest call equivalent to:\n\n```\nService.send(:eval, \"<arbitrary host ruby>\")\n```\n\nexecutes in the host process and can read or modify host state, spawn\nprocesses, and so on.\n\n### Impact\nComplete sandbox escape leading to remote code execution in the host process,\ndefeating the gem's central guarantee of isolating untrusted mruby scripts.\nAny deployment that runs untrusted or attacker-influenced scripts is affected.\nAll released versions (0.1.0 through 0.9.0) are vulnerable; the dispatcher\ncarried the same unguarded `public_send` sink under three successive names\n(`registry` → `rpc` → `transport`).\n\n### Patches\nFixed in 0.9.1. The dispatcher now rejects any method whose resolved owner is\na core/meta module (`BasicObject`, `Kernel`, `Object`, `Module`, `Class`), so\nonly methods the bound object itself defines — or dynamically handles via\n`method_missing` — remain reachable. The ambient reflection methods (`send`,\n`__send__`, `public_send`, `instance_eval`, `instance_exec`, `method`,\n`instance_variable_get`, …) are all owned by those modules and are blocked.\n\n### Workarounds\nNone within the affected versions. Until you can upgrade, do not bind any\nhost Service object into a sandbox that runs untrusted scripts. Upgrade to\n0.9.1.\n\n### References\n- GHSA-7pwq-q9jf-539h\n- Fix commit: 64f8470\n\n### Credits\nReported and fixed by Ahmed Al Hafoudh.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "RubyGems",
      "name" : "kobako"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0.1.0"
      }, {
        "fixed" : "0.9.1"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 0.9.0"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/elct9620/kobako/security/advisories/GHSA-7pwq-q9jf-539h"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/elct9620/kobako/commit/64f84700c81f44902bed9211318d5362f44987b3"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/elct9620/kobako"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-470", "CWE-94" ],
    "severity" : "CRITICAL",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-08-18T20:09:59Z",
    "nvd_published_at" : null
  }
}