CVE-2026-63416
NiskieCVSS 3.7Streszczenie
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.
Ocena ryzyka
W zależności od konfiguracji usługi eksportu atakujący może uzyskać dostęp do endpointów administracyjnych, debugowania, zdrowia lub konfiguracji oraz wywołać niezamierzone akcje wewnętrzne. Podatność nie wymaga uwierzytelnienia, co zwiększa ryzyko.
Rekomendacja
Zaktualizuj draw.io do wersji 30.2.7 lub nowszej, która naprawia ten problem. Do czasu aktualizacji rozważ ograniczenie dostępu do serwletu eksportu i segmentację sieci wewnętrznej.
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-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-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, src/main/java/com/mxgraph/online/ExportProxyServlet.java uses request.getPathInfo() to build a proxyPath and appends it directly to EXPORT_URL without rejecting dot segments or confirming that the normalized destination remains under the configured export path. An unauthenticated request containing traversal segments can therefore address unintended routes on the internal export server, and the servlet forwards all request headers and the request body to that destination, allowing arbitrary header injection. Depending on the export service configuration, exploitation can expose administration, debugging, health, or configuration endpoints and can permit unintended internal actions. This issue is fixed in version 30.2.7.

