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::getUser w 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.

  1. 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.

  2. 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/v1 na 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.

  3. 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.

  4. 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.

  5. 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ż

Przypisy

  1. Metoda Users::getUser w API JSON-RPC Leantime nie posiada odpowiednich kontroli autoryzacji. — nvd.nist.gov › CVE 2026 59712 2 3

  2. 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

  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…

  4. 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

  5. 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…

  6. 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