Kerentanan  ·  2026-08-26

Chainlit MCP endpoint unauthenticated command injection and SSRF (SPL-2026-001/002)

KerentananHigh dampakGlobalCVE-2026-45018
Chainlit's MCP stdio transport hanya memvalidasi nama executable dari string perintah yang disuplai oleh pemanggil, bukan argumennya, dan menganggap allowlist yang tidak disetel sebagai permit-all, memungkinkan penyerang jaringan yang tidak terautentikasi mencapai OS command injection (CWE-78) melalui POST /mcp. Kelemahan pendamping (CVE-2026-45019, CVSS 7.2) mempengaruhi transports SSE/streamable-HTTP dengan SSRF karena endpoint yang sama menerima URL MCP upstream pilihan penyerang tanpa memvalidasi terhadap alamat loopback/internal.
Ini adalah pre-auth RCE yang tidak terautentikasi (CVSS 9.8) dalam framework aplikasi AI yang populer kapan pun fitur MCP — semakin menjadi cara default untuk menghubungkan agen LLM ke tools — diaktifkan. Penyerang tanpa kredensial dapat memperoleh eksekusi shell dengan privilege proses Chainlit, yang biasanya juga menyimpan kunci API penyedia LLM dan akses ke sumber data backend.
validate_mcp_command() dalam backend/chainlit/mcp.py hanya memeriksa nama executable dalam string fullCommand yang disuplai penyerang terhadap config.features.mcp.stdio.allowed_executables, kemudian meneruskan argumen sisa tanpa diperiksa ke StdioServerParameters. Jika allowed_executables tidak disetel (default), ini mengizinkan setiap executable daripada tidak ada, memungkinkan pemanggil yang tidak terautentikasi mengirimkan perintah seperti executable yang diizinkan dikombinasikan dengan flag yang mengeksekusi perintah shell arbitrer.
Chainlit (framework conversational-AI Python) 2.4.0rc0 – 2.11.x
Upgrade ke Chainlit 2.12.0; atur secara eksplisit dan batasi features.mcp.stdio.allowed_executables; nonaktifkan MCP jika tidak diperlukan; lihat security advisory Chainlit sendiri.
Chainlit security advisoryIONIX Threat Center — CVE-2026-45018
Lihat di umpan langsung Jelajahi temuan keamanan dan tata kelola AI terkait — diperbarui setiap pagi.
Buka umpan →