CVE-2026-104103
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 41 - wyżej niż 41% wszystkich znanych CVE
Streszczenie
Ludwig to framework low-code do budowania modeli LLM i sieci neuronowych. Przed wersją 0.17.8 funkcja `ludwig.datasets.archives.extract_archive()` walidowała nazwy członków tar przed wywołaniem `TarFile.extractall()`, ale nie walidowała dowiązań symbolicznych ani twardych. Spreparowane archiwum mogło utworzyć dowiązanie wychodzące poza katalog ekstrakcji, a następnie zapisać kolejny element przez to dowiązanie, umieszczając treść kontrolowaną przez atakującego w dowolnej ścieżce systemu plików z uprawnieniami procesu ekstrahującego. Ta sama kontrola zawierania używała `os.path.commonprefix`, więc ścieżka sąsiednia dzieląca prefiks znaków z celem również mogła przejść. Ścieżka ładowania zbiorów danych może pobierać i rozpakowywać skonfigurowane adresy URL archiwów, ale wykorzystanie wymaga przetworzenia archiwum ze źródła kontrolowanego lub przejętego przez atakującego na obsługiwanych środowiskach Python 3.12 i 3.13. Python 3.14 nie jest podatny, ponieważ jego domyślny filtr danych tar odrzuca wychodzące dowiązania. Problem naprawiono w wersji 0.17.8.
Ocena ryzyka
Atakujący może zapisać dowolną treść w dowolnym miejscu systemu plików z uprawnieniami procesu przetwarzającego archiwum, co może prowadzić do wykonania kodu lub nadpisania krytycznych plików. Wymaga przetworzenia złośliwego archiwum przez użytkownika.
Rekomendacja
Zaktualizuj Ludwig do wersji 0.17.8 lub nowszej. Unikaj przetwarzania archiwów z niezaufanych źródeł.
Powiązane podatności
- CVE-2026-104736Krytyczne
Wtyczka LearnPress dla WordPressa w wersjach do 4.4.10 włącznie jest podatna na wstrzyknięcie obiektu PHP (PHP Object Injection) poprzez deserializację niezaufanych danych z parametru 'checkout-email' w akcji AJAX podczas finalizacji zamówienia. Wartość przechodzi przez sanitize_text_field(), które nie usuwa składni serializowanego obiektu, jest zapisywana w tabeli sesji LearnPress, a następnie przekazywana do unserialize() bez ograniczenia allowed_classes.
- CVE-2026-110653Krytyczne
Wtyczka LatePoint dla WordPressa w wersjach do 5.7.4 włącznie jest podatna na obejście uwierzytelniania poprzez warunek wyścigu (race condition) w funkcji verifyOTP. Licznik prób weryfikacji OTP jest aktualizowany nieatomowo, bez warunku WHERE attempts < 10 i bez blokady wiersza, co tworzy okno TOCTOU pozwalające równoległym żądaniom obejść limit 10 prób.
- CVE-2026-111823Krytyczne
Mage OSS w wersjach do 0.9.80 (przed commitem 76c4f46) może kontynuować tworzenie sesji po napotkaniu nieznanego dostawcy OAuth. Nieznany dostawca OAuth nie jest prawidłowo odrzucany, co pozwala na utworzenie sesji.
- CVE-2026-96620Krytyczne
Claude Agent SDK to zestaw SDK w języku Python dla Claude Code. W wersjach przed 0.2.121 opcja resume jest przekazywana do Claude CLI jako osobny token bez walidacji, więc wartość zaczynająca się od myślnika jest interpretowana jako niezależna flaga CLI. Atakujący może wstrzyknąć flagę --mcp-config, aby zdefiniować serwer MCP typu stdio, co powoduje wykonanie dowolnych poleceń przy starcie CLI poza kontrolami uprawnień SDK.
- CVE-2026-102608Krytyczne
ZoneMinder to darmowe, otwartoźródłowe oprogramowanie do monitoringu CCTV. W wersjach przed 1.38.3 funkcja downloadEvents() ręcznie otacza wartość Name monitora pojedynczymi cudzysłowami zamiast używać escapeshellarg() przed umieszczeniem jej w poleceniach powłoki, gdy użytkownik z uprawnieniami monitor-create lub monitor-edit zapisze nazwę monitora zawierającą metaznaki powłoki, a użytkownik z uprawnieniem Events View wyeksportuje zdarzenia tego monitora. W tym mechanizmie ataku zapisana nazwa monitora trafia zarówno do polecenia konkatenacji ffmpeg, jak i do polecenia archiwizacji tar lub zip, i wydostaje się z ręcznego cytowania. Dowolne polecenia są wykonywane jako użytkownik serwera WWW.
- CVE-2026-111711Krytyczne
Netcore NR256CN do wersji 1.5.140116 zawiera podatność na przepełnienie stosu przed uwierzytelnieniem w funkcji user_ok() serwera Boa, która kopiuje nazwy użytkowników Basic-auth za pomocą nieograniczonych wywołań strcpy() do 64-bajtowych buforów stosu. Nieuwierzytelnieni atakujący mogą wysłać nazwę użytkownika dłuższą niż 63 bajty do dowolnej chronionej trasy /router/*.cgi, aby zawiesić główny proces Boa lub potencjalnie wykonać kod.
- CVE-2026-111708Krytyczne
WhaTicket Community do commita cf04795 zawiera podatność na obejście uwierzytelniania, która pozwala nieuwierzytelnionym atakującym na samodzielną rejestrację jako administratorzy poprzez POST /auth/signup. Atakujący mogą pominąć pole profile lub ustawić je na admin, uzyskując zarządzanie użytkownikami, ustawieniami oraz dostęp do wszystkich zgłoszeń, kontaktów, wiadomości i połączeń WhatsApp.
- CVE-2026-111704Krytyczne
LangChat do commita 2a6285a zawiera podatność na brak uwierzytelniania, która pozwala nieuwierzytelnionym zdalnym atakującym na dostęp do kontrolerów REST, ponieważ nie zarejestrowano interceptora Sa-Token. Atakujący mogą odpytywać /api/v1/auth/users, aby odczytać hasła w postaci jawnej, uzyskać klucze API dostawców LLM, tworzyć konta superadministratora oraz modyfikować lub usuwać dane.
- CVE-2026-111693Krytyczne
DataBuff ai-apm-web do wersji 0.1.10 zawiera podatność na wbudowane domyślne poświadczenia, która pozwala nieuwierzytelnionym atakującym na uzyskanie dostępu administratora przy użyciu wbudowanego konta admin/Databuff@123. Atakujący mogą wysłać te poświadczenia metodą POST do /webapi/api/v1/auth/login, aby uzyskać token administratora i dostęp do wszystkich chronionych tras /webapi.
- CVE-2026-111692Krytyczne
DataBuff ai-apm-web do wersji 0.1.10 zawiera podatność na obejście uwierzytelniania, która pozwala nieuwierzytelnionym atakującym na fałszowanie tokenów sesji administratora przy użyciu zakodowanego na stałe sekretu HMAC w JwtTokenService. Atakujący mogą podpisać ładunek admin i przyszłą datę wygaśnięcia domyślnym dev-secret, aby uzyskać pełny dostęp administracyjny do chronionych tras /webapi, w tym do API zapytań Doris SQL.
Oryginalny opis (angielski, źródło NVD)
Ludwig is a low-code framework for building custom LLMs, neural networks, and other AI models. Prior to 0.17.8, ludwig.datasets.archives.extract_archive() validated tar member names before calling TarFile.extractall() but did not validate symlink members or hard-link members. A crafted archive could create a link that escaped the extraction directory and then write a later member through that link, placing attacker-controlled content at an arbitrary filesystem path with the extracting process's privileges. The same containment check used os.path.commonprefix, so a sibling path sharing the destination's character prefix could also pass. The dataset-loading path can download and extract configured archive URLs, but exploitation requires a user to process an archive from a source controlled or compromised by the attacker on supported Python 3.12 and 3.13 runtimes. Python 3.14 is not affected because its default tar data filter rejects escaping links. This issue is fixed in version 0.17.8.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

