NSA Ghidra w wersji do 9.0.4 z włączonym trybem eksperymentalnym umożliwia wykonanie dowolnego kodu poprzez wczytanie spreparowanego pliku XML za pomocą funkcji Read XML Files w module Bit Patterns Explorer. Podatność ma krytyczny poziom zagrożenia (CVSS 9.8) i nie wymaga żadnego uwierzytelnienia ani interakcji ze strony ofiary poza otwarciem pliku.
▸ Pokaż oryginał (EN)
NSA Ghidra through 9.0.4, when experimental mode is enabled, allows arbitrary code execution if the Read XML Files feature of Bit Patterns Explorer is used with a modified XML document. This occurs in Features/BytePatterns/src/main/java/ghidra/bitpatterns/info/FileBitPatternInfoReader.java. An attack could start with an XML document that was originally created by DumpFunctionPatternInfoScript but then directly modified by an attacker (for example, to make a java.lang.Runtime.exec call).
Podatność wynika z niebezpiecznego parsowania XML (CWE-91 — XML Injection) w klasie FileBitPatternInfoReader.java. Pliki XML generowane pierwotnie przez skrypt DumpFunctionPatternInfoScript mogą zostać zmodyfikowane przez atakującego w taki sposób, aby zawierały wywołanie java.lang.Runtime.exec, co skutkuje wykonaniem dowolnego polecenia systemowego. Atak jest możliwy wyłącznie, gdy Ghidra działa w trybie eksperymentalnym, a użytkownik wczyta złośliwy plik XML przez interfejs Bit Patterns Explorer.
Atakujący może doprowadzić do wykonania dowolnego kodu (RCE) na maszynie ofiary z uprawnieniami procesu Ghidra, co w praktyce oznacza pełne przejęcie kontroli nad systemem, kradzież danych oraz możliwość dalszego poruszania się po infrastrukturze.
Należy zaktualizować Ghidrę do wersji zawierającej poprawkę wskazaną w commicie a17728f8c12effa171b17a25ccfb7e7d9528c5d0 w repozytorium projektu. Do czasu aktualizacji zaleca się wyłączenie trybu eksperymentalnego oraz unikanie otwierania plików XML nieznanego lub niezaufanego pochodzenia w module Bit Patterns Explorer.
NSA Ghidra w wersjach do 9.0.4 włącznie, przy włączonym trybie eksperymentalnym (experimental mode).
Dla tej podatności dostępny jest publiczny kod PoC w repozytorium https://github.com/purpleracc00n/CVE-2019-16941. Podatność jest możliwa do wykorzystania wyłącznie przy włączonym trybie eksperymentalnym Ghidry.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HNsa Ghidra
APPNsa≤ 9.0.4
Powiązane podatności
Command injection w NSA Ghidra przez skrypt launch.sh
XXE w NSA Ghidra — odczyt plików i możliwy RCE przy otwieraniu projektu
Ghidra 11.0 before 12.1 contains a SQL injection vulnerability in the changePassword() method of PostgresFunct...
Ghidra before 12.1 contains a command injection vulnerability in URL annotation handling on Windows where cmd....
Ghidra before 12.1 contains an unsafe deserialization vulnerability in client-side Shared-Project RMI connecti...