CVE-2026-63334
ŚrednieCVSS 6.8Streszczenie
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.
Ocena ryzyka
Udane wykorzystanie może zwrócić metadane instancji chmury lub odpowiedzi z wewnętrznych usług HTTP przez proxy. Ryzyko dotyczy poufności danych wewnętrznych i infrastruktury chmurowej.
Rekomendacja
Zaktualizuj draw.io do wersji 30.2.7 lub nowszej, która naprawia podatność SSRF. Rozważ wyłączenie ENABLE_DRAWIO_PROXY, jeśli nie jest wymagane, i ograniczenie dostępu do metadanych chmury.
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-63373Średnie
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.
- 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, deployments with ENABLE_DRAWIO_PROXY=1 are vulnerable to server-side request forgery because src/main/java/com/mxgraph/online/Utils.java performs the private-address check in Utils.sanitizeUrl() using one DNS resolution, while src/main/java/com/mxgraph/online/ProxyServlet.java later calls URL.openConnection() and performs a second resolution. An attacker-controlled hostname can resolve to a public address during validation and then to a private, link-local, or cloud metadata address when the connection is opened. Successful exploitation can return cloud instance metadata or responses from internal HTTP services through the proxy. This issue is fixed in version 30.2.7.

