CVE-2026-63373
ŚrednieCVSS 4.2Streszczenie
draw.io przed wersją 30.2.7 pomija porównanie stateToken i cookieToken w obsłudze callbacku OAuth, gdy IS_GAE ma wartość false, co dotyczy samodzielnie hostowanych wdrożeń Docker i WAR. Atakujący może dostarczyć kod autoryzacyjny dla swojej tożsamości w chmurze i nakłonić ofiarę do odwiedzenia adresu URL callbacku, powodując uwierzytelnienie sesji ofiary jako tożsamość atakującego.
Ocena ryzyka
Ofiara może nieświadomie wykonywać operacje w chmurze pod tożsamością atakującego, powodując utratę integralności sesji i błędne przypisanie działań. Powiązanie tożsamości samo w sobie nie daje dostępu do istniejących plików ofiary w chmurze.
Rekomendacja
Zaktualizuj draw.io do wersji 30.2.7 lub nowszej, która naprawia obsługę callbacku OAuth. Rozważ weryfikację konfiguracji integracji z Google Drive, OneDrive, GitHub, GitLab i Dropbox.
Inne podatności w draw.io
Zobacz wszystkie- CVE-2026-76898Wysokie
W draw.io przed wersją 30.3.8 funkcja Utils.sanitizeUrl() sprawdza adresy IPv6 Unique Local Addresses, porównując prefiksy tekstowe fc00:: i fd00::, ale JDK zwraca rozwiniętą postać adresu, przez co zakres fc00::/7, w tym zakres metadanych AWS fd00:ec2::/32, nie jest blokowany. Nieuwierzytelnione żądanie do /embed2.js?fetch= może spowodować pobranie wewnętrznego zasobu IPv6 ULA i odesłanie odpowiedzi do żądającego.
- CVE-2026-63416Niskie
draw.io przed wersją 30.2.7 w pliku ExportProxyServlet.java używa request.getPathInfo() do budowy proxyPath i dołącza go bezpośrednio do EXPORT_URL bez odrzucania segmentów kropkowych ani weryfikacji, że znormalizowany cel pozostaje w skonfigurowanej ścieżce eksportu. Nieuwierzytelnione żądanie z segmentami traversal może trafić do nieprzewidzianych tras wewnętrznego serwera eksportu, a serwlet przekazuje wszystkie nagłówki i treść żądania, umożliwiając wstrzyknięcie dowolnych nagłówków.
- CVE-2026-63334Średnie
draw.io przed wersją 30.2.7 w wdrożeniach z ENABLE_DRAWIO_PROXY=1 jest podatny na server-side request forgery, ponieważ sprawdzenie adresu prywatnego w Utils.sanitizeUrl() używa jednego rozwiązania DNS, a ProxyServlet.java później wywołuje URL.openConnection() i wykonuje drugie rozwiązanie. Nazwa hosta kontrolowana przez atakującego może rozwiązać się na adres publiczny podczas walidacji, a następnie na adres prywatny, link-local lub metadanych chmury przy otwieraniu połączenia.
- CVE-2026-58504Średnie
draw.io przed wersją 30.2.5 umożliwia wykonanie skryptów JavaScript w kontekście aplikacji przez otwarcie spreparowanego pliku .drawio. Luka wykorzystuje brak kodowania HTML w etykietach tekstowych, co pozwala na obejście wcześniejszej poprawki CVE-2026-46642. Atakujący może przejąć dane diagramu, ciasteczka (nie-HttpOnly), a nawet wykonać akcje w imieniu ofiary.
- CVE-2026-46642Średnie
Aplikacja draw.io przed wersją 29.7.12 zawiera podatność, która pozwala na wykonanie dowolnego kodu JavaScript poprzez specjalnie przygotowany plik .drawio. Problem występuje w panelu formatu tekstowego, gdzie surowa etykieta komórki jest przypisywana do elementu bez odpowiedniej sanitizacji.
Oryginalny opis (angielski, źródło NVD)
draw.io is a configurable diagramming and whiteboarding application. Prior to version 30.2.7, the OAuth callback handler in src/main/java/com/mxgraph/online/AbsAuth.java skips comparison of stateToken and cookieToken whenever IS_GAE is false, which affects self-hosted Docker and WAR deployments. An attacker can provide an authorization code for the attacker's cloud-storage identity and induce a victim to visit a callback URL, causing the victim's draw.io session to become authenticated as the attacker identity without a valid state binding. The shared handler affects Google Drive, OneDrive, GitHub, GitLab, and Dropbox integrations. The victim can then unknowingly perform cloud-storage actions under the attacker's identity, causing session integrity loss and misattribution, but the identity binding does not itself grant access to existing victim cloud files. This issue is fixed in version 30.2.7.

