Podatność w API FileUtil.unTar(File, File) w Apache Hadoop polega na braku escapowania nazwy pliku wejściowego przed przekazaniem go do powłoki systemowej, co umożliwia wstrzyknięcie dowolnych poleceń. W kontekście Apache Hadoop 2.x (yarn localization) błąd ten umożliwia zdalne wykonanie kodu (RCE).
▸ Pokaż oryginał (EN)
Apache Hadoop's FileUtil.unTar(File, File) API does not escape the input file name before being passed to the shell. An attacker can inject arbitrary commands. This is only used in Hadoop 3.3 InMemoryAliasMap.completeBootstrapTransfer, which is only ever run by a local user. It has been used in Hadoop 2.x for yarn localization, which does enable remote code execution. It is used in Apache Spark, from the SQL command ADD ARCHIVE. As the ADD ARCHIVE command adds new binaries to the classpath, being able to execute shell scripts does not confer new permissions to the caller. SPARK-38305. "Check existence of file before untarring/zipping", which is included in 3.3.0, 3.1.4, 3.2.2, prevents shell commands being executed, regardless of which version of the hadoop libraries are in use. Users should upgrade to Apache Hadoop 2.10.2, 3.2.4, 3.3.3 or upper (including HADOOP-18136).
Funkcja FileUtil.unTar() przekazuje nazwę pliku bezpośrednio do wywołania powłoki bez jej wcześniejszego sanityzowania ani escapowania. Atakujący może spreparować nazwę pliku zawierającą złośliwe polecenia systemowe, które zostaną wykonane w kontekście procesu Hadoop. W Apache Hadoop 2.x mechanizm yarn localization korzystał z tej funkcji w sposób umożliwiający zdalne wywołanie — stąd możliwość RCE. Podatność jest również obecna w Apache Spark poprzez polecenie SQL ADD ARCHIVE.
Atakujący może wykonać dowolne polecenia systemowe na podatnym serwerze. W scenariuszu Hadoop 2.x (yarn localization) możliwe jest zdalne wykonanie kodu (RCE) bez konieczności posiadania uprawnień lokalnych.
Należy zaktualizować Apache Hadoop do wersji 2.10.2, 3.2.4, 3.3.3 lub nowszej (zawierającej poprawkę HADOOP-18136). W przypadku Apache Spark należy zaktualizować do wersji 3.3.0, 3.1.4 lub 3.2.2, które zawierają poprawkę SPARK-38305 weryfikującą istnienie pliku przed jego rozpakowaniem, co blokuje wykonanie poleceń powłoki niezależnie od wersji bibliotek Hadoop.
Apache Hadoop w wersjach poprzedzających 2.10.2, 3.2.4 oraz 3.3.3. Podatność dotyczy również Apache Spark korzystającego z polecenia SQL ADD ARCHIVE, jednak naprawiona wersja Spark (3.3.0, 3.1.4, 3.2.2) ogranicza możliwość wywołania podatnego kodu niezależnie od użytej wersji bibliotek Hadoop.
Podatność ma ograniczony zasięg w Hadoop 3.3 (dotyczy wyłącznie InMemoryAliasMap.completeBootstrapTransfer uruchamianego przez lokalnego użytkownika). Pełne zdalne wykonanie kodu (RCE) jest możliwe wyłącznie w kontekście Hadoop 2.x z włączonym mechanizmem yarn localization. W Apache Spark dodanie złośliwego archiwum przez ADD ARCHIVE nie nadaje atakującemu dodatkowych uprawnień wykraczających poza istniejące.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HApache Hadoop
APPApache2.0.0 – 2.10.13.0.0 – 3.2.33.3.0 – 3.3.2
Powiązane podatności
Przepełnienie bufora sterty w Apache Hadoop libhdfs (RCE/DoS)
Apache Hadoop: path traversal przez symlink podczas rozpakowywania TAR na Windows
Podatność Auth Bypass w Connect2id Nimbus JOSE+JWT przy parsowaniu JWT
Apache Hadoop YARN NodeManager ujawnia hasło do credential store
Apache Hadoop: słaby 20-bitowy sekret tokenu przy włączonym Kerberos