CVE-2026-85725
ŚrednieCVSS 5.9Streszczenie
LightRAG przed wersją 1.5.5 w funkcji verify_password w lightrag/api/passwords.py porównuje hasła AUTH_ACCOUNTS za pomocą operatora ==, co może ujawniać różnice czasowe zależne od długości hasła i pasujących prefiksów. Atakujący sieciowy o niskich opóźnieniach może wielokrotnie odpytywać /login i wykorzystać oracle czasowy do odzyskania hasła znak po znaku. Wdrożenia używające haseł z prefiksem bcrypt nie są dotknięte tą ścieżką porównania.
Ocena ryzyka
Atakujący może odzyskać hasło znak po znaku, co prowadzi do nieautoryzowanego dostępu do chronionych zasobów. Ryzyko dotyczy wdrożeń z hasłami przechowywanymi w postaci jawnej.
Rekomendacja
Zaktualizuj LightRAG do wersji 1.5.5 lub nowszej. Upewnij się, że hasła są przechowywane z prefiksem bcrypt, aby uniknąć podatnej ścieżki porównania.
Inne podatności w LightRAG
Zobacz wszystkie- CVE-2026-86062Średnie
LightRAG przed wersją 1.5.5 renderuje treść odpowiedzi i myślenia za pomocą react-markdown, rehypeRaw i skipHtml=false bez sanityzacji HTML. Atakujący mogący dodać dokument może zapisać surowy HTML, który jest zwracany przez ścieżkę zapytania i renderowany jako aktywna treść, umożliwiając wykonanie dowolnego kodu JavaScript m.in. przez iframe srcdoc. Skrypt działa w origin LightRAG WebUI i może odczytać token API z localStorage oraz wykonywać akcje API w imieniu ofiary.
- CVE-2026-85740Wysokie
LightRAG przed wersją 1.5.5 zawiera podatność w parserze Markdown, która umożliwia pobieranie zasobów z wewnętrznych adresów IPv4 przy użyciu translatorów NAT64, co może prowadzić do nieautoryzowanego dostępu do wewnętrznych zasobów.
- CVE-2026-85709Średnie
LightRAG przed wersją 1.5.5 zwraca surowe teksty wyjątków Pythona z obsługi błędów w document_routes.py, graph_routes.py, query_routes.py, ollama_api.py i lightrag_server.py. Ścieżki detail=str(e), detail=str(exc) i podobne ujawniają klientowi sieciowemu ścieżki systemu plików, host, port, użytkownika i nazwy bazy danych, diagnostykę dostawcy modelu językowego, szczegóły konfiguracji oraz wnętrza bibliotek Pythona. Domyślna konfiguracja bez uwierzytelniania czyni te odpowiedzi dostępnymi bez poświadczeń.
- CVE-2026-85734Krytyczne
LightRAG to narzędzie do szybkiego generowania wspomaganego wyszukiwaniem. Przed wersją 1.5.5 endpoint POST /login w lightrag/api/lightrag_server.py nie nakłada limitu szybkości, blokady konta, opóźnienia ani licznika nieudanych prób uwierzytelnienia. Atakujący w sieci może zgadywać hasła z pełną szybkością żądań, aż znajdzie prawidłowe hasło konta.
- CVE-2026-61808Krytyczne
LightRAG do wersji 1.5.4 włącznie ma serwer API, który wiąże się ze wszystkimi interfejsami sieciowymi z wyłączonym uwierzytelnianiem domyślnie, co pozwala nieuwierzytelnionemu atakującemu sieciowemu na odczyt indeksowanych dokumentów, przesyłanie lub usuwanie dokumentów, modyfikację grafu wiedzy, anulowanie potoków, czyszczenie pamięci podręcznej i zużywanie zasobów LLM.
- CVE-2026-61740Krytyczne
W LightRAG przed wersją 1.5.4, gdy zmienna LIGHTRAG_API_KEY jest ustawiona, ale AUTH_ACCOUNTS nie, ochrona za pomocą X-API-Key może zostać ominięta. System używa zakodowanego na stałe tokena DEFAULT_TOKEN_SECRET, a endpointy /auth-status i /login mogą generować gościnne tokeny JWT, które są akceptowane przed sprawdzeniem klucza API. Zdalny, nieuwierzytelniony atakujący może wywoływać chronione endpointy, w tym do odczytu, przesyłania i usuwania dokumentów, mutacji grafu oraz zapytań.
- CVE-2026-61736Krytyczne
LightRAG w wersji przed 1.5.4 domyślnie konfiguruje CORS z wartością CORS_ORIGINS=* oraz allow_credentials=True, co powoduje, że Starlette CORSMiddleware zezwala na uwierzytelnione żądania z dowolnego źródła. Umożliwia to atakującemu na złośliwej stronie WWW wykonywanie żądań API w imieniu uwierzytelnionego użytkownika.
- CVE-2026-39413Średnie
LightRAG przed wersją 1.4.14 jest podatny na atak polegający na pomyleniu algorytmu JWT, gdzie atakujący może sfałszować tokeny, ustawiając 'alg': 'none' w nagłówku JWT. Funkcja jwt.decode() nie odrzuca jawnie algorytmu 'none', więc sfałszowany token bez podpisu jest akceptowany jako ważny, co prowadzi do nieautoryzowanego dostępu. Podatność została naprawiona w wersji 1.4.14.
Oryginalny opis (angielski, źródło NVD)
LightRAG provides simple and fast retrieval-augmented generation. Prior to 1.5.5, verify_password in lightrag/api/passwords.py compares plaintext AUTH_ACCOUNTS password values with Python's == operator. The comparison can return after the first mismatching byte, creating response-time differences based on password length and matching prefixes. A network attacker with sufficiently low-latency access can repeatedly query the /login endpoint and use the timing oracle to recover a plaintext-configured password character by character. Deployments using bcrypt-prefixed password values are not affected by this comparison path. This issue is fixed in version 1.5.5.

