Bu sayfa bir çeviridir. Esas alınan metin İngilizce sürümdür. İngilizcesini okuyun
litellm · mcp · cve-2026-42271 · kev · llm-abuse · honeypot-detection · sandbox-evasion
66 Saniyede LiteLLM MCP Keşfi: Honeypot Testi Yapan Betik Tabanlı Bir İstemci
CVE-2026-42271, LiteLLM'in MCP test uç noktalarında bulunan bir komut enjeksiyonu zafiyetidir (1.74.2 ile 1.83.6 arası, CVSS 8.7, 8 Haziran 2026'dan bu yana CISA KEV listesinde) ve 6 Eylül'de bir istemci, bir Kinryū Labs tuzak sisteminde LiteLLM'in MCP araç yüzeyini kötüye kullandı: 66 saniyede 42 betik tabanlı kabuk komutu, ardından sunucunun honeypot olup olmadığına dair yedi kontrol, sonra sessizlik.
Yazan Davis Zheng·
TLP:CLEAR. Kamuya açık yayım için onaylanmıştır. Kinryū Labs honeypot sensör ağı tarafından kaydedilmiştir. Aşağıdaki göstergeler etkisizleştirilmiştir.
Yönetici özeti
- 42MCP araçları üzerinden gönderilen kabuk komutu
- 66 snilk komuttan sonuncusuna
- 7son 20 saniyedeki honeypot kontrolü
- 1bu etkinliğin kaynağı, 5 ile 12 Eylül arası
CVE-2026-42271, LiteLLM’in MCP test uç noktalarında bulunan bir komut enjeksiyonu zafiyetidir (1.74.2 ile 1.83.6 arası, CVSS 8.7, 8 Haziran 2026’dan bu yana CISA KEV listesinde) ve 6 Eylül’de bir istemci, bir Kinryū Labs LiteLLM tuzak sisteminde LiteLLM’in MCP araç yüzeyini kötüye kullandı. Bir Hong Kong VPS adresinden tuzak sistemin MCP araçlarını listeledi, ardından 66 saniye içinde bu araçlar üzerinden 42 kabuk komutu gönderdi: kimim, bir konteyner içinde miyim, root’un SSH anahtarları okunabilir mi, bu hangi ağ. Son 20 saniyeyi sunucunun gerçek olup olmadığını denetlemekle geçirdi; bir işaret dosyası, bir saat okuması, /dev/urandom üzerinden bir çekme ve zamanlanmış üç uyku komutu kullandı, sonra durdu; 12 Eylül’e kadar bu kaynaktan başka hiçbir şey gelmedi. Port 4000 erişilebilir durumdayken 1.83.7 altında bir LiteLLM çalıştırıyorsanız sürümü yükseltin; Tespit bölümünde istek biçimi için bir kural ve honeypot testi için bir kural yer alıyor.
İstekler /mcp üzerindeki tools/call adresine gitti. Danışma belgesi zafiyeti, bu istemcinin dokunmadığı /mcp-rest/test/* uç noktalarında tanımlıyor; bu nedenle etkinliği söz konusu CVE olarak değil, LiteLLM’in MCP araç yüzeyinin kötüye kullanımı olarak tanımlıyoruz.
Temel değerlendirmeler
- Bu, tek bir hedefe yönelik betik tabanlı bir oturumdu. İstemci 66 saniyede 42 araç çağrısı gönderdi; komutlar arasında 130 ila 250 ms, kümeler arasında 9 ila 26 saniye duraklamalarla, 37 farklı komut kullanarak. Tek bir adresten geldi, bir kez uğradı ve 5 ile 12 Eylül arasında bu etkinliğin tek kaynağıydı. Orta güven.
- Keşiften sonra istemci yedi honeypot kontrolü yürüttü ve ardından durdu. 01:28:21 ile 01:28:41 arasında stderr yönlendirmesini, kabuk sarmalayıcı işlemesini, hata yollarını, dosya sistemi durumunu, saati, entropiyi ve uyku zamanlamasını test etti. Son komut sleep 8'di ve 12 Eylül'e kadar bu adresten başka hiçbir şey gelmedi. Orta güven.
- Keşif, sunucudan çıkış yolu arıyordu. Root hesabının özel anahtar dizinini iki kez listeledi, /proc/1/cgroup ve /proc/1/cmdline dosyalarını okudu ve ağ adreslerini numaralandırdı. Bir kavram kanıtı denetimi bunların hiçbirine ihtiyaç duymaz. Orta güven.
- Hiçbir proxy anahtarı sunulmadı. Bu adresten gelen hiçbir /mcp isteği proxy anahtarı sunmadı; bu da Starlette Host başlığı atlatma zafiyeti CVE-2026-48710 ile oluşan kimlik doğrulamasız zincirle uyumludur. İsteklerin bu atlatmayı kullandığı bir çıkarımdır. Düşük güven.
Zaman çizelgesi
- 01:24:44 UTCİlk temas: TCP/4000 üzerinde /mcp adresine HTTP POST, Mozilla/5.0, MCP araç yüzeyi numaralandırması.
- 01:25:46 UTCİkinci numaralandırma yoklaması, aynı istemci profili.
- 01:27:30 UTCİstemci, yeni bir HTTP istemci parmak iziyle curl/8.20.0'a geçiyor ve araç yüzeyini yeniden numaralandırıyor.
- 01:27:35 UTCİlk komut enjeksiyonu: 'id' komutuyla bash aracı; hemen ardından /etc/hostname dosyasının read_file ile okunması.
- 01:27:44 UTCBileşik keşif tek satırı: hostname; uname -a; root anahtar dizininin listelenmesi; cat /proc/1/cgroup.
- 01:27:55 UTCİkinci bileşik: pwd; whoami; /proc/1/cgroup; ip a | grep inet; ls /.
- 01:28:21 UTCTuzak tespitine geçiş: stderr yönlendirmesi, sh -c ve bash -c sarmalayıcı işlemesi, ls -la /etc/passwd.
- 01:28:31 UTCHata yolu ve durum saklama testleri: var olmayan bir yol ve dosya, /tmp/marker_uniq_93817 üzerinde touch ardından cat.
- 01:28:32 UTCSaat ve entropi testleri: date +%s, head -c 50 /dev/urandom | base64.
- 01:28:41 UTCZamanlama testleri sleep 0 / 5 / 8, ardından oturum sona eriyor. 12 Eylül'e kadar bu adresten başka etkinlik yok.
Oturum, sırasıyla
01:27:35 id
01:27:44 hostname; uname -a | cut -c1-120; ls -la [root key directory] 2>&1 | head -5; cat /proc/1/cgroup 2>/dev/null | head -3
01:27:55 pwd; whoami; cat /proc/1/cgroup | head -2; ip a | grep inet | head -3; ls / | head -15
01:28:21 echo hi 1>&2
01:28:32 date +%s
01:28:32 head -c 50 /dev/urandom | base64
01:28:41 sleep 8
Keşif doğrudan root’un anahtarlarına ve konteyner sınırına yöneliyor
İstemci ilk üç dakika içinde iki farklı kimlik sundu. 01:24:44’ten itibaren Mozilla/5.0 kullanıcı aracısı altında iki araç yüzeyi numaralandırma yoklaması gönderdi. Üç dakikadan biraz kısa bir süre sonra, buna karşılık gelen farklı bir HTTP istemci parmak iziyle curl/8.20.0’a geçti ve tools/call üzerinden araç çağırmaya başladı.
Önce kimlik kontrollerini, id, hostname komutlarını, ardından /etc/hostname üzerinde read_file çağrısını, sonra da yukarıdaki oturumda gösterilen iki bileşik tek satırı çalıştırdı.
Betik, root hesabının özel anahtar dizinini iki kez listeledi ve ip a | grep inet komutunu çalıştırdı. Bir kavram kanıtı denetimi anahtar dizini listelemelerine ya da ağ numaralandırmasına ihtiyaç duymaz; bu nedenle bu keşfi, proxy sunucusundan başka sistemlere geçiş hazırlığı olarak okuyoruz. /proc/1/cgroup ve /proc/1/cmdline okumaları, kabuğun bir konteyner içinde olup olmadığını belirler.
01:28:21’de istemci sunucu hakkında soru sormayı bırakıp onu test etmeye başlıyor
Yirmi saniye boyunca istemci, gerçek bir sunucuyla konuşup konuşmadığını test etti. stderr’in kendi kanalından dönüp dönmediğini görmek için echo hi 1>&2; kabuk çağrısının nasıl işlendiğini denetlemek için sh -c ve bash -c sarmalayıcılarını; hata yolu sadakati için kasıtlı olarak var olmayan yollara karşı ls ve cat; dosya sisteminin çağrılar arasında durum saklayıp saklamadığını görmek için /tmp içinde aynı işaret dosyasına touch ve ardından cat; saatin ilerlemesi için date +%s; entropi için head -c 50 /dev/urandom | base64; ve zamanlama sadakati için sleep 0, sleep 5 ve sleep 8 çalıştırdı.
Son komut 01:28:41’de sleep 8’di. 12 Eylül’e kadar bu adresten başka hiçbir şey gelmedi. Neden durduğu bilinmiyor. Bunu, bir honeypot testinin ardından durma kararı olarak okumayı destekleyen şey, olayların sırasıdır; orta güven düzeyinde.
LLM proxy uç noktalarına güvenmeden önce onları honeypot açısından test eden bir operatör burada yeni değil: keyHunter raporumuz doğrulayıcısı bunları tanımak üzere kurulmuş bir örneği anlatıyor. İkisini birbirine bağlayan bir göstergemiz yok.
Atıf
Zamanlama bir şeyi kesinleştiriyor: bu bir betikti. 66 saniyede kırk iki çağrı, kümeler hâlinde gönderilmiş, bir küme içinde komutlar arasında 130 ila 250 ms ve kümeler arasında 9 ila 26 saniye duraklamalarla; bu, sömüren, anahtarları ve konteyner sınırını arayan, sunucunun parmak izini çıkaran ve çıkan bir araç setidir. Bu, hedefli bir operatörün araç setine ya da yanma önleyici bir ön filtreye sahip bir red-team çerçevesine uyar. Tek bir sabit yükü tekrar oynatan ve defalarca geri dönen sıradan kitlesel sömürüye uymaz; bu istemci 37 komut dizesini değiştirdi, bir kez uğradı ve 5 ile 12 Eylül arasında bu etkinliğin tek kaynağıydı. Bir güvenlik araştırması taraması tamamen dışlanmış değil, çünkü sadakat testleri honeypot tespiti araştırmalarının da çalışma biçimidir; ancak kaynak ticari bir Hong Kong VPS aralığı, istemci herhangi bir araştırma kimliği bildirmiyor ve oturum root’un anahtar dizinini listeleyip /etc/passwd dosyasını okudu; saygın taramalar bunu yapmaz.
Atfı daha ileri götürmüyoruz. Adres, ticari barındırma olan AS140227 (Hong Kong Communications International, 177.4.0[.]0/20) içinde yer alıyor. VirusTotal, herhangi bir satıcı adlandırması olmaksızın iki zararlı ve iki şüpheli motor kararı gösteriyor ve zafiyet, kamuya açık kavram kanıtı koduyla birlikte KEV listesinde; dolayısıyla yetenek, failin kim olduğu hakkında bir şey söylemiyor.
İhlal göstergeleri
Aşağıdaki tek ağ göstergesi etkisizleştirilmiştir; parmak izleri ve yollar gözlemlendiği biçimde verilmiştir.
Ağ
| Gösterge | Bağlam |
|---|---|
177.4.12[.]11 | 5 ile 12 Eylül arasında bu etkinliğin tek kaynağı; her istek TCP/4000 üzerinde /mcp adresine gitti; AS140227, Hong Kong |
Sunucu artefaktları
| Gösterge | Bağlam |
|---|---|
/tmp/marker_uniq_<digits> | Honeypot testi tarafından yazılıp sonra geri okunan işaret dosyası; bu oturumda sonek 93817’ydi, dolayısıyla deseni avlayın |
Davranışsal
| Gösterge | Bağlam |
|---|---|
po11nn050000_6e4c6fcb1a9b | curl/8.20.0 komut aşamasının JA4H tarzı HTTP istemci parmak izi |
po11nn070000_39fa8e08ab4c | İlk Mozilla/5.0 numaralandırma aşamasının JA4H tarzı HTTP istemci parmak izi |
Tespit
Sigma
Bir LiteLLM proxy’sine kabuk komutu taşıyan MCP tools/call (aday).
title: MCP tools/call Carrying A Shell Command To A LiteLLM Proxy
id: 5b0f6c1e-2f0a-4d0e-9a53-6b1d0f7a42c1
status: experimental
description: POST to a LiteLLM MCP endpoint whose JSON body invokes a tool with a command argument. Needs request-body logging at the reverse proxy; the body field name is a placeholder for whatever your proxy calls it. Any hit on LiteLLM below 1.83.7 should be treated as exploitation.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-42271
logsource:
category: webserver
detection:
selection_request:
cs-method: POST
cs-uri-stem:
- /mcp
- /mcp-rest/test/connection
- /mcp-rest/test/tools/list
selection_call:
request_body|contains: '"method": "tools/call"'
selection_command:
request_body|re: '"(command|args)"\s*:'
condition: all of selection_*
falsepositives:
- An MCP shell tool you expose on purpose to trusted clients
level: high
Bir LLM proxy süreci tarafından başlatılan honeypot sadakat kontrolleri (aday).
title: Honeypot Fidelity Checks Spawned By An LLM Proxy Process
id: 0c9a7e52-8d1b-4a38-b0f4-3e5f2a9d7c10
status: experimental
description: A proxy process spawning the checks a client uses to decide whether the host is emulated. Seen immediately before the client abandoned the session. Works from ordinary process telemetry on the proxy host.
logsource:
product: linux
category: process_creation
detection:
selection_parent:
ParentImage|endswith:
- /python
- /python3
- /litellm
selection_checks:
CommandLine|contains:
- /dev/urandom
- date +%s
- /proc/1/cgroup
- marker_uniq_
condition: selection_parent and selection_checks
falsepositives:
- Container entrypoint or health-check scripts that read /proc/1/cgroup
level: high
Tespit mantığı
- Tek kaynaktan sadakat testi dizisi (davranışsal, aday). Tek bir kaynaktan 120 saniye içinde, /dev/urandom, ‘date +%s’, ‘^sleep [0-9]+$’, ‘echo .* 1>&2’, ’^(sh|bash) -c ’ ile eşleşen ve aynı /tmp yolunda touch ardından cat yapan farklı komutları sayın. Üç veya daha fazla kategori, bir istemcinin hedefin gerçek olup olmadığına karar verdiği anlamına gelir; tam oturum kaydını saklayın.
- LiteLLM varsayılan portunda /mcp adresine kimlik doğrulamasız POST (ağ, aday). Hedef port 4000, yöntem POST, yol /mcp, yetkilendirme başlığı yok. Bunu curl aşaması parmak izi po11nn050000_6e4c6fcb1a9b ile eşleştirin.
Giderme
- LiteLLM’i 1.83.7 veya sonrasına yükseltin; düzeltme, MCP test uç noktalarına bir komut izin listesi ve bir PROXY_ADMIN rol denetimi ekliyor.
- Yükseltme hemen mümkün değilse, ters proxy üzerinde POST /mcp-rest/test/connection ve POST /mcp-rest/test/tools/list isteklerini engelleyin ve TCP/4000’i internete açmayın.
- Aynı yığında Starlette Host başlığı atlatma zafiyeti CVE-2026-48710’u yamalayın. Zincirlendiğinde ikisi, kimlik doğrulamasız uzaktan kod çalıştırma sağlar.
- Proxy’nin çağıracak şekilde yapılandırıldığı her MCP sunucusunun envanterini çıkarın ve ikinci dereceden enjeksiyon açısından command ve args değerlerini inceleyin.
- Proxy süreç ortamından veya bağlanmış kimlik bilgisi dosyalarından erişilebilen tüm sağlayıcı API anahtarlarını, LITELLM_MASTER_KEY değerlerini ve sanal anahtarları döndürün.
- Sunucularda /tmp/marker_uniq_
dosyalarını ve id, whoami, uname, getent komutlarını ya da root hesabının anahtar dizinini listeleyen proxy süreç alt süreçlerini avlayın.
MITRE ATT&CK eşlemesi
| Taktik | Teknik | Gözlenen |
|---|---|---|
| İlk erişim | T1190 Exploit Public-Facing Application | TCP/4000 üzerinde açıkta olan bir LLM proxy’sine karşı 42 MCP tools/call çağrısı, MCP araç yüzeyinin kötüye kullanılması. |
| Yürütme | T1059.004 Command and Scripting Interpreter: Unix Shell | sh -c ve bash -c sarmalayıcıları dâhil kabuk tek satırlarıyla sürülen MCP bash aracı. |
| Keşif | T1082 System Information Discovery | uname -a, cat /etc/os-release, uname -r, hostname -f, ls -la /, cat /proc/1/cmdline. |
| Keşif | T1033 System Owner/User Discovery | id, id -u, whoami, getent passwd root, cat /etc/passwd | head -3. |
| Kimlik bilgisi erişimi | T1552.004 Unsecured Credentials: Private Keys | İlk keşif kümesinde root hesabının özel anahtar dizininin iki kez listelenmesi. |
| Savunma atlatma | T1497 Virtualization/Sandbox Evasion | /proc/1/cgroup konteyner denetimi, ardından son 20 saniyedeki yedi kontrollük test dizisi. |
| Toplama | T1005 Data from Local System | /etc/hostname üzerinde çağrılan MCP read_file aracı. |
Kaynaklar
- NVD: CVE-2026-42271
- CISA Bilinen Sömürülen Zafiyetler kataloğu
- Kinryū Labs: keyHunter, kendi araç setini sızdıran bir LLM proxy anahtar operasyonu
Yöntem ve analist notları
Bu rapor, sensör telemetrisinden okunan, kamuya açık tehdit istihbaratı akışları ve zenginleştirme sorgularıyla karşılaştırılan 1 kaynak adres ve 10 zamanlı gözleme dayanıyor; 6 Eylül 2026 tarihli etkinliği ve 5 ile 12 Eylül arasındaki pivotları kapsıyor. Etkinlik keşif aşamasında durdu: oturum sona ermeden önce hiçbir yük indirme, kalıcılık veya dışarı doğru C2 girişimi olmadı.
Hâlâ açık olanlar:
- 177.4.12[.]11 adresinin 6 Eylül’den önce ne yaptığı.
- Operatörün durduktan sonra nereye gittiği.
- İşaret soneki 93817 araçta sabit mi, yoksa her oturumda mı üretiliyor?
- Test dizisi, yayımlanmış herhangi bir sömürü aracı ya da honeypot tespit aracıyla eşleşiyor mu?
- Bir proxy anahtarı gerekli miydi, yoksa istek Host başlığı atlatma zafiyeti CVE-2026-48710 üzerinden mi geçti?
Sorular veya düzeltmeler: contact@kinryu.sh.