Ditemukan oleh X41 D-Sec selama audit keamanan vLLM yang didanai OSTIF, kerentanan ini berakar dari kelalaian sederhana namun mendalam: Starlette merekonstruksi objek request.url dari header Host yang dikendalikan penyerang tanpa memvalidasinya terlebih dahulu. Karena mesin routing framework mendistribusikan permintaan berdasarkan path HTTP mentah, tetapi middleware otorisasi sering membaca request.url.path dari URL yang telah direkonstruksi, sebuah inkonsistensi muncul dan membuka lubang keamanan yang besar .
Logika rekonstruksi URL Starlette menciptakan ketidakcocokan berbahaya antara path yang di-routing dan path yang diotorisasi. Ketika permintaan HTTP tiba, router secara tepat mengidentifikasi endpoint target dari baris permintaan mentah. Namun, ketika aplikasi kemudian memeriksa request.url untuk memutuskan apakah pengguna memiliki otorisasi, Starlette membangun ulang URL itu dengan menggabungkan header Host dengan path permintaan dan mengurai ulang hasilnya .
Seorang penyerang dapat mengeksploitasi ini dengan mengirim permintaan ke endpoint yang dilindungi seperti /admin/secure dengan header Host yang telah diracuni secara cermat, misalnya:
Host: legitimate.com/health?x=
Router akan mengarahkan permintaan dengan benar ke handler /admin/secure—tetapi ketika middleware otorisasi memeriksa request.url.path, ia akan melihat /health. Jika middleware tersebut menggunakan daftar izin yang mempercayai /health sebagai endpoint health-check publik, penyerang akan lolos. Pemeriksaan otorisasi dilewati secara diam-diam; tanpa token, tanpa kata sandi, tanpa interaksi pengguna .
Advisory X41 D-Sec mengonfirmasi kesederhanaan yang mengejutkan: "Cukup dengan menyisipkan satu karakter ke header HTTP Host sudah cukup untuk mengelabui server" . Karakter spesifik yang memicu kebingungan termasuk garis miring (/), tanda tanya (?), dan simbol pagar (#)—pembatas URL standar yang tidak pernah divalidasi oleh Starlette .
Jangkauan kerentanan ini sangat mengejutkan. Starlette adalah mesin tersembunyi di balik hampir setiap alat orkestrasi dan penyajian AI berbasis Python utama, diunduh sekitar 325 juta kali per minggu . Semua proyek turunan yang mengonsumsi Starlette sebelum versi 1.0.1 akan terpengaruh:
Versi yang terpengaruh mencakup Starlette >= 0.8.3 hingga < 1.0.1, yang berarti sistem yang telah menjalankan rilis stabil selama bertahun-tahun semuanya berpotensi rentan .
Peringkat keparahan resmi untuk CVE-2026-48710 telah memicu ketidaksepakatan signifikan dalam komunitas keamanan:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N memperlakukan dampak pada kerahasiaan dan integritas sebagai "Low" (Rendah), membatasi ruang lingkup ke "Unchanged" (Tidak Berubah), dan melaporkan tidak ada dampak ketersediaan .CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N dari para penemu menggeser ruang lingkup ke "Changed" (Berubah) dengan dampak tambahan "High" pada kerahasiaan dan integritas, lebih tepat menggambarkan eskalasi hak istimewa lintas-batas yang terjadi dalam arsitektur agen AI .Tiga faktor mendasari argumen peneliti bahwa skor 6.5 sangat rendah:
SC:H/SI:H dari CVSS v4.0 .Starlette versi 1.0.1, dirilis pada 22 Mei 2026, berisi tambalan definitif. Perbaikan ini dilacak dalam GitHub Security Advisory GHSA-86qp-5c8j-p5mr dan advisory X41 X41-2026-002 .
Tambalan menerapkan dua perlindungan inti:
Host sekarang divalidasi berdasarkan tata bahasa yang ditentukan dalam RFC 9112 §3.2 dan RFC 3986 §3.2.2 sebelum digunakan untuk membangun request.url .scope["server"]—tuple koneksi server yang sebenarnya—bukan nilai yang diberikan oleh penyerang. Hasilnya, request.url.path secara konsisten mencerminkan path yang di-routing sebenarnya .Proyek FastAPI telah mengonfirmasi bahwa perbaikan tersebut efektif dan merekomendasikan untuk segera meningkatkan starlette ke >=1.0.1 .
Memperbarui paket Starlette adalah langkah pertama yang esensial, tetapi pertahanan yang komprehensif memerlukan beberapa lapisan:
Segera tambal. Di setiap lingkungan virtual, citra kontainer, dan pipeline penerapan yang menjalankan infrastruktur AI, jalankan:
pip install --upgrade starlette
Mulai ulang semua layanan yang terpengaruh. Ini berlaku untuk instalasi Starlette langsung serta instans FastAPI, vLLM, LiteLLM, dan server MCP .
Audit dan kunci dependensi. FastAPI dan framework lain mungkin tidak secara otomatis menegakkan versi minimum Starlette. Secara eksplisit minta starlette>=1.0.1 di requirements.txt, pyproject.toml, poetry.lock, atau file kunci setara. Jalankan pip list | grep starlette di semua lingkungan untuk mengidentifikasi instalasi yang kedaluwarsa .
Pindai setiap komponen di tumpukan AI. Setiap layanan Python yang menyajikan HTTP—aplikasi FastAPI kustom, endpoint inferensi LLM, pesawat orkestrasi agen, panel evaluasi model, dan proxy yang kompatibel dengan OpenAI—mungkin menyematkan versi Starlette yang rentan. Lakukan audit infrastruktur penuh .
Perkuat reverse proxy dan WAF. Konfigurasikan nginx, Envoy, HAProxy, Cloudflare, atau AWS ALB untuk menolak atau membersihkan header Host yang cacat sebelum meneruskan lalu lintas ke aplikasi Python. Ini memberikan pertahanan berlapis yang memblokir eksploitasi bahkan jika penambalan aplikasi tertunda .
Tulis ulang pemeriksaan keamanan path agar tidak bergantung pada request.url.path. Akar masalahnya adalah ketidakcocokan antara path routing dan request.url.path. Di mana pun memungkinkan, alihkan middleware otorisasi untuk menggunakan request.scope["path"], yang berasal dari cakupan ASGI mentah dan tidak dapat diracuni oleh header Host . X41 D-Sec merekomendasikan untuk sepenuhnya menghindari otorisasi berbasis path demi mekanisme otentikasi intrinsik endpoint .
Uji keterpaparan. Sebuah pemindai online telah dirilis untuk membantu organisasi memverifikasi apakah server mereka rentan . Dikombinasikan dengan pengujian penetrasi menyeluruh terhadap batasan otentikasi, ini dapat mengungkap permukaan serangan yang terlewatkan.
Untuk penerapan berbasis Debian, CVE-2026-48710 dilacak di Debian Security Tracker dengan tingkat keparahan "important," dan rilis titik starlette yang ditambal tersedia untuk suite yang terpengaruh . Terapkan transaksi apt korektif dari repositori bullseye-security atau yang setara, dan muat ulang file unit systemd yang terpengaruh .