LightLLM pokazuje klasyczny problem, którego skaner nie rozwiąże samym numerem CVE. W CVE-2026-103040 usługa profilera uruchomiona z --enable_profiling wystawia nieuwierzytelniony serwer RPyC z deserializacją pickle. CVE-2026-103041 dotyczy tego samego wzorca w embed cache wdrożeń multimodalnych. W obu przypadkach „lokalna usługa techniczna” okazuje się interfejsem osiągalnym z sieci.
--enable_profiling → nieuwierzytelniony RPyC z pickle → spreparowany obiekt w kolejce poleceń profilera → RCE na hoście.pickle na wszystkich interfejsach → RCE z prawami usługi.65c174ee (wersje do 1.2.0 podatne). Numer wersji nie powie Ci, czy masz poprawkę.Attack path
Co jest naprawdę podatne
Nie wystarczy znaleźć LightLLM w SBOM. Trzeba ustalić wersję, sposób uruchomienia, obecność profilera (--enable_profiling) lub multimodalnego embed cache, interfejs nasłuchu oraz realną osiągalność portu z innych stref. Instancja z wyłączonym profilerem i wdrożeniem tekstowym może nie uruchamiać żadnej z tych usług. Finding powinien więc mieć postać funkcja + konfiguracja + osiągalność — to oddziela „component present” od rzeczywistej ścieżki ataku. Ten sam wzorzec opisywałem przy SGLang.
Dlaczego CVSS nie wystarcza
Oba CVE mają ocenę krytyczną, ale priorytet środowiskowy zależy od ekspozycji RPyC. Instancja odizolowana sieciowo i instancja osiągalna z sieci użytkowników to dwa zupełnie różne findingi.
Remediation
Najpierw ogranicz ekspozycję usług RPyC (bind na loopback, firewall) i wyłącz zbędne funkcje, zwłaszcza profiler na produkcji. Następnie wdróż poprawkę z commita 65c174ee. Po zmianie zweryfikuj porty nasłuchujące i ścieżki sieciowe zamiast zamykać ticket na podstawie numeru pakietu. Jeśli port był osiągalny z niezaufanej sieci, przejrzyj host lub kontener pod kątem śladów wykonania kodu.
Powiązane na blogu
- SGLang: ZeroMQ + pickle → RCE — ten sam wzorzec w innym silniku inferencji
- MCP Python SDK — infrastruktura AI jako powierzchnia ataku
Źródła
- OSV — CVE-2026-103040 (router profiler RPyC) — osv.dev
- OSV — CVE-2026-103041 (embed cache RPyC) — osv.dev
- VulnCheck — LightLLM through 1.2.0 unauthenticated RCE via embed cache RPyC service — vulncheck.com
Nota redakcyjna: stan informacji 6 października 2026, na podstawie draftu VMRT i publicznych advisory (OSV, VulnCheck). CVE-2026-103040 i CVE-2026-103041 (LightLLM do 1.2.0, CVSS v4 9.3 każdy); poprawka w commicie 65c174ee. Artykuł nie potwierdza aktywnej eksploatacji.