Luka w oprogramowaniu Leantime otrzymała ocenę 8.1 w skali CVSS (Common Vulnerability Scoring System — skala 0-10 oceniająca powagę luki). Pod identyfikatorem CVE-2026-59712 kryje się błąd autoryzacji, który pozwala każdemu zalogowanemu użytkownikowi na pobranie danych uwierzytelniających wszystkich pozostałych kont w systemie. Leantime to popularne, darmowe narzędzie do zarządzania projektami, co stwarza ryzyko dla wielu organizacji, w tym polskich firm z sektora MŚP, które często sięgają po rozwiązania open-source.
Problem dotyczy metody Users::getUser w API (interfejs programowania aplikacji) systemu 1. Błąd w logice autoryzacji sprawia, że dowolny użytkownik, nawet z najniższymi uprawnieniami, może zażądać i otrzymać pełne dane o dowolnym innym koncie 2. Skutki są natychmiastowe i prowadzą do pełnego przejęcia kontroli nad instancją Leantime.
TL;DR
- Produkt: Leantime, oprogramowanie open-source do zarządzania projektami.
- Wektor: Brak kontroli autoryzacji w metodzie
Users::getUserw API opartym o JSON-RPC 1. - Identyfikator: CVE-2026-59712.
- Skutek: Możliwość pobrania hashy haseł, sekretów TOTP (kody jednorazowe z aplikacji typu Google Authenticator) i tokenów sesji przez dowolnego uwierzytelnionego użytkownika 2.
- Kogo dotyczy: Organizacje korzystające z podatnych wersji Leantime, w tym polskie firmy i zespoły deweloperskie.
- Pierwszy ruch: Natychmiastowa aktualizacja oprogramowania lub zablokowanie dostępu do API do czasu wdrożenia poprawki.
Wektor ataku
Podatność zidentyfikowana jako CVE-2026-59712 ma swoje źródło w mechanizmie API, który Leantime wykorzystuje do komunikacji. W szczególności chodzi o metodę Users::getUser dostępną poprzez interfejs JSON-RPC (protokół zdalnego wywoływania procedur używający formatu JSON) 3. Telemetria wskazuje, że w podatnych wersjach oprogramowania brakuje kluczowego kroku weryfikacji uprawnień przed wykonaniem tej funkcji 1.
Scenariusz ataku jest prosty i skuteczny. Atakujący potrzebuje jedynie dostępu do dowolnego, nawet najmniej uprzywilejowanego konta w systemie Leantime. Po uwierzytelnieniu może wysyłać zapytania do API, wywołując metodę users.getUser i iterując po identyfikatorach użytkowników (np. od 1 do 1000) 4.
System, z powodu braku walidacji, traktuje każde takie zapytanie jako legalne. W odpowiedzi zwraca pełny wiersz danych użytkownika z bazy danych 2. Odpowiedź ta zawiera krytyczne informacje uwierzytelniające:
- Hash hasła: Pozwala na próby łamania hasła metodami offline, bez ryzyka zablokowania konta.
- Sekret TOTP: Umożliwia wygenerowanie poprawnych kodów 2FA (uwierzytelnianie dwuetapowe), co może całkowicie ominąć to zabezpieczenie 5.
- Token sesji: Daje możliwość bezpośredniego przejęcia aktywnej sesji użytkownika bez znajomości hasła 6.
Posiadając te dane, atakujący może przejąć dowolne konto, w tym konto administratora, uzyskując pełną kontrolę nad systemem zarządzania projektami, danymi klientów i wewnętrzną dokumentacją firmy.
Wskaźniki kompromitacji
Ta podatność nie jest związana z konkretnym złośliwym oprogramowaniem, więc nie istnieją klasyczne wskaźniki kompromitacji (IoC — Indicators of Compromise) takie jak hashe plików czy adresy IP serwerów C2 (Command and Control). Jedynym śladem wykorzystania luki mogą być nietypowe wpisy w logach serwera WWW, na którym działa Leantime.
Administratorzy powinni szukać dużej liczby zapytań typu POST kierowanych do punktu końcowego API, pochodzących z jednego adresu IP lub od jednego, nisko uprzywilejowanego użytkownika. Treść takiego zapytania będzie zawierała wywołanie metody users.getUser z różnymi identyfikatorami użytkowników.
Przykładowy wzorzec do wyszukania w logach serwera (np. Nginx, Apache):
POST /api/jsonrpc/v1 HTTP/1.1
Host: leantime.przykladowa-firma.pl
Content-Type: application/json
{"jsonrpc":"2.0","method":"users.getUser","params":{"id":123},"id":1}
Należy zwrócić szczególną uwagę na sekwencyjne zmiany wartości parametru id w kolejnych zapytaniach.
Co zrobić w 24-48h
Rekomendowane podejście zakłada natychmiastową reakcję w celu ograniczenia ryzyka. Poniższe kroki nie zastępują pełnej konsultacji bezpieczeństwa, ale stanowią pierwszą linię obrony.
-
Identyfikacja i aktualizacja: Należy zidentyfikować wszystkie instancje Leantime w infrastrukturze firmy. Priorytetem jest natychmiastowa aktualizacja oprogramowania do najnowszej wersji udostępnionej przez producenta, która zawiera poprawkę dla luki CVE-2026-59712.
-
Ograniczenie dostępu (jeśli aktualizacja jest niemożliwa): W sytuacji, gdy natychmiastowa aktualizacja nie jest możliwa, należy zablokować dostęp do endpointu
/api/jsonrpc/v1na poziomie firewalla aplikacyjnego (WAF) lub konfiguracji serwera WWW. Dostęp powinien być ograniczony wyłącznie do zaufanych adresów IP, jeśli API jest w ogóle wykorzystywane przez inne systemy. -
Rotacja wszystkich poświadczeń: Należy przyjąć, że dane uwierzytelniające mogły zostać skompromitowane. Konieczne jest unieważnienie wszystkich aktywnych sesji, wymuszenie zmiany haseł dla wszystkich użytkowników oraz zresetowanie sekretów 2FA/TOTP, co zmjiusi użytkowników do ponownej konfiguracji uwierzytelniania dwuetapowego.
-
Audyt logów: Należy przeanalizować historyczne logi serwera WWW pod kątem opisanych wyżej wskaźników kompromitacji. Pozwoli to ocenić, czy luka była aktywnie wykorzystywana w przeszłości.
-
Analiza pod kątem RODO: Wyciek hashy haseł i sekretów 2FA stanowi naruszenie ochrony danych osobowych w rozumieniu RODO (Rozporządzenie o Ochronie Danych Osobowych). Jeśli system przetwarzał dane obywateli Unii Europejskiej, incydent może wymagać zgłoszenia do Urzędu Ochrony Danych Osobowych (UODO) w ciągu 72 godzin od jego wykrycia. Rekomendujemy przeprowadzenie wewnętrznej analizy prawnej w tej kwestii.
Źródła
Polecane narzędzia
- NordPass — Bezpieczny menedżer haseł od twórców NordVPN. Szyfrowanie XChaCha20, auto-uzupełnianie i audyt wycieków.
Powyższe linki to linki afiliacyjne — kliknięcie nie zwiększa ceny, a redakcja otrzymuje niewielką prowizję, która finansuje niezależne testy. Polityka afiliacji.
Zobacz też
- Krytyczna luka SQL Injection w GeekyBot (CVE-2026-57679)
- CVE-2026-10184: SQL Injection w systemie danych medycznych
- Krytyczna luka w Aimogen Pro. Eskalacja uprawnień w WordPress
Przypisy
-
Metoda Users::getUser w API JSON-RPC Leantime nie posiada odpowiednich kontroli autoryzacji. — nvd.nist.gov › CVE 2026 59712 ↩ ↩2 ↩3
-
Uwierzytelnieni użytkownicy mogą pobierać pełne wiersze danych uwierzytelniających użytkowników, w tym skróty haseł, sekrety TOTP i tokeny sesji. — nvd.nist.gov › CVE 2026 59712 ↩ ↩2 ↩3
-
Opis luki CVE-2026-59712 wskazuje, że metoda Users::getUser w API JSON-RPC Leantime nie ma odpowiednich kontroli autoryzacji, co pozwala uwierzytelnionym użytkownikom na pobieranie pełnych danych uwierzytelniających, w tym skrótów haseł, sekretów TOTP i tokenów sesji. — vulncheck.com › leantime credential disclosure via unauthenticat… ↩
-
Atakujący mogą wykorzystać tę lukę, wywołując users.getUser z dowolnymi identyfikatorami użytkowników, aby wyliczyć wszystkie konta i uzyskać dane uwierzytelniające do łamania haseł offline, omijania 2FA i przejmowania sesji. — nvd.nist.gov › CVE 2026 59712 ↩
-
Atakujący mogą wykorzystać tę lukę, wywołując users.getUser z dowolnymi identyfikatorami użytkowników, aby wyliczyć wszystkie konta i uzyskać dane uwierzytelniające do łamania haseł offline, omijania 2FA i przejmowania sesji. — vulncheck.com › leantime credential disclosure via unauthenticat… ↩
-
Atakujący mogą wykorzystać tę lukę, wywołując users.getUser z dowolnymi identyfikatorami użytkowników, aby wyliczyć wszystkie konta i uzyskać dane uwierzytelniające do łamania haseł offline, omijania 2FA i przejmowania sesji. — github.com › GHSA hphp fmhr 5fqh ↩
// Komentarze ...
Dodaj komentarz