Podatność w Apache Hadoop pozwala atakującemu na zapisywanie plików poza oczekiwanym katalogiem docelowym podczas rozpakowywania archiwów TAR w systemie Windows. Wynika to z błędu obsługi dowiązań symbolicznych (symlink) i braku ich rozwiązywania przez funkcję getCanonicalPath na Windows, co umożliwia obejście zabezpieczeń path traversal.
▸ Pokaż oryginał (EN)
In Apache Hadoop, The unTar function uses unTarUsingJava function on Windows and the built-in tar utility on Unix and other OSes. As a result, a TAR entry may create a symlink under the expected extraction directory which points to an external directory. A subsequent TAR entry may extract an arbitrary file into the external directory using the symlink name. This however would be caught by the same targetDirPath check on Unix because of the getCanonicalPath call. However on Windows, getCanonicalPath doesn't resolve symbolic links, which bypasses the check. unpackEntries during TAR extraction follows symbolic links which allows writing outside expected base directory on Windows. This was addressed in Apache Hadoop 3.2.3
Funkcja unTar w Apache Hadoop używa mechanizmu unTarUsingJava na systemach Windows. Podczas rozpakowywania archiwum TAR, wpis może utworzyć dowiązanie symboliczne (symlink) wewnątrz oczekiwanego katalogu docelowego, wskazujące na zewnętrzny katalog. Kolejny wpis TAR może następnie wypakować dowolny plik do tego zewnętrznego katalogu, korzystając z nazwy symlinka. Na systemach Unix mechanizm ten jest blokowany przez wywołanie getCanonicalPath, które rozwiązuje dowiązania symboliczne — jednak na Windows getCanonicalPath nie wykonuje tej operacji, co pozwala ominąć zabezpieczenie. Funkcja unpackEntries podąża za dowiązaniami symbolicznymi, umożliwiając zapis poza dozwolonym katalogiem.
Atakujący może zapisać dowolne pliki poza oczekiwanym katalogiem ekstrakcji, co prowadzi do naruszenia integralności systemu plików, a potencjalnie także do wykonania złośliwego kodu lub eskalacji uprawnień poprzez nadpisanie wrażliwych plików.
Należy zaktualizować Apache Hadoop do wersji 3.2.3 lub nowszej. W przypadku braku możliwości natychmiastowej aktualizacji należy ograniczyć możliwość przetwarzania niezaufanych archiwów TAR oraz rozważyć migrację na system operacyjny Unix/Linux, gdzie problem nie występuje z uwagi na prawidłową obsługę symlinków przez getCanonicalPath.
Apache Hadoop działający na systemach Microsoft Windows; podatność została naprawiona w wersji Apache Hadoop 3.2.3
Podatność dotyczy wyłącznie instalacji Apache Hadoop na platformie Microsoft Windows — systemy Unix/Linux nie są podatne ze względu na odmienne zachowanie funkcji getCanonicalPath.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HApache Hadoop
APPApache3.3.13.3.2< 3.2.3Microsoft Windows
OSMicrosoftwszystkie wersje
Powiązane podatności
Atak na łańcuch dostaw DAEMON Tools Lite — trojanizacja instalatorów
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
Path Traversal w Kingsoft WPS Office — ładowanie dowolnej biblioteki Windows
PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit