Read the docs

JSON boolean and null tool arguments reach dispatch as strings in beam_mcp

Priority LOW 12CWE-704Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
—
Confidentiality · integrity · availability
None · Low · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA.

Summary

ScriptKittyOS beam_mcp from 0.1.0 before 0.10.1 converts MCP tool arguments that are JSON true, false or null into the strings "true", "false" or "nil" (CWE-704). Because a non-empty string is truthy in Elixir, a host that tests a boolean argument can take the wrong branch for false, and a policy layer that allows false but refuses true can be bypassed. The sources describe a remote client that controls the argument, and the practical impact is limited to hosts whose behaviour on false differs from true. The same normalization applies to prompts/get arguments from 0.5.0 onward.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Description from the CNA

Incorrect Type Conversion or Cast vulnerability in BeamMCP.Server in ScriptKittyOS beam_mcp allows an MCP client's JSON true, false and null tool arguments to reach the host's dispatch function as the strings "true", "false" and "nil". After BeamMCP.Schema.validate/2 accepted a value as a boolean, normalize_arguments/2 passed every argument through to_json_value/1, whose atom clause converts true, false and nil to strings. A string is truthy in Elixir, so a host that tests a boolean argument, for example if args.dry_run, takes the opposite branch for false, and a guard such as confirm: false reads as set. The client controls the argument and could send true directly, so the practical impact is limited to hosts whose behaviour on false differs from their behaviour on true, and to any policy layer in front of the server that permits false but refuses true. The same normalisation applies to prompts/get arguments, which exist from 0.5.0. This issue affects beam_mcp: from 0.1.0 before 0.10.1.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00341 27th percentileScored 2026-11-07
Fix Fixed beam_mcp (ScriptKittyOS): 0.10.1

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
ScriptKittyOSbeam_mcp0.1.0 to before 0.10.10.10.1Patch availableCNA
  • beam_mcp VendorScriptKittyOS Affected 0.1.0 to before 0.10.1 Fixed in 0.10.1 Patch available CNA

CPE names CNA · 1

CPEVersionsRoleVendor
cpe:2.3:a:scriptkittyos:beam_mcp:*:*:*:*:*:*:*:*——ScriptKittyOS
  • cpe:2.3:a:scriptkittyos:beam_mcp:*:*:*:*:*:*:*:* Versions — — ·ScriptKittyOS

Remediation

Upgrade ScriptKittyOS beam_mcp to version 0.10.1, which fixes this issue. The sources list no fixed version for other releases of beam_mcp.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

  • Fix · CNA beam_mcp (ScriptKittyOS) Fixed in 0.10.1

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    ScriptKittyOS beam_mcp 0.10.1, 289dbdbad641943b29a3b8d1eb36506cc8cec10a

    2 records Highest priority Priority LOW 2 LOW

    Other records, highest priority first

    • TI-2026-69464 beam_mcp: nested tool argument constraints advertised but not enforcedPriority LOW 24

Timeline

  1. 2026-10-08 Threatist record created from CVE-2026-104634
  2. 2026-10-08 Alias added: GHSA-rcm8-2hxq-3q25

References

  • TI-2026-69464 beam_mcp: nested tool argument constraints advertised but not enforced CVSS 4.0MEDIUM 5.3

Sources