Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
spark-proxyuser-classpath — Apache Spark 4.2.0 — высокий — удалённый — остаточные привилегии — proxy-user defaultExtraClassPath | Kitploit
Инструменты/GitHubGitHub/abraxas/spark-proxyuser-classpath
Повышение привилегийБезопасность контейнеровАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеБезопасность облачных средСтатьи и ИсследованияRed Teaming

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
abraxas/spark-proxyuser-classpath

spark-proxyuser-classpath

Apache Spark 4.2.0 — высокий — удалённый — остаточные привилегии — proxy-user defaultExtraClassPath

Репозиторий
147 дней назадЕщё не проверено

Abraxas Labs - spark-proxyuser-classpath

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  spark-proxyuser-classpath

Разбор: https://abraxaslabs.tech/research/spark-proxyuser-classpath

spark-proxyuser-classpath

Класс: Остаточная привилегия (остаток CVE-2023-22946 / SPARK-41958) Доступ: Удалённый

Apache Spark 4.2.0 (32f72996) — Apache Software Foundation

CVE-2023-22946 / SPARK-41958 по-прежнему по умолчанию устанавливает spark.submit.proxyUser.allowCustomClasspathInClusterMode в false и по-прежнему выполняет childClasspath.clear() при отправке в кластер с --proxy-user. Это публичный путь YARN --jars. Затем в Spark 4.0 был добавлен spark.driver.defaultExtraClassPath. Лаунчер всегда добавляет этот ключ в начало JVM -cp команды spark-submit, в том числе в режиме кластера. SPARK-41958 его никогда не видит.

Арендатор в стиле Livy по-прежнему может загрузить подготовленный jar внутри JVM spark-submit шлюза. Hadoop UserGroupInformation.doAs не меняет этот Unix UID.

IDCVE пока нет
КлассОстаточная привилегия (остаток CVE-2023-22946 / SPARK-41958)
ДоступУдалённый (отправка задания --proxy-user в стиле Livy через шлюз)
CWECWE-269, CWE-427
CVSSВысокий: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ПродуктApache Spark
ЗатронутоApache Spark 4.2.0 (32f7299601108917fb01920a54e084595b7b3bf8)
Аутентификацияаутентифицированный арендатор шлюза в стиле Livy / Kyuubi / Oozie, который передаёт --conf и подготовленные --jars в spark-submit --proxy-user ... --deploy-mode cluster
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1:18950. Файл-свидетель. Гаджет из процитированных обходов лаунчера / submit.

Что может сделать атакующий

Иметь аккаунт арендатора на мультитенантном шлюзе Spark (Livy, Kyuubi, Oozie и подобные), который запускает spark-submit --proxy-user <tenant> --deploy-mode cluster от имени UID суперпользователя. Подготовить jar, который JVM шлюза может открыть. Отправить --conf spark.driver.defaultExtraClassPath=<staged jar>. Проверка SPARK-41958 может оставаться в значении false. Сформированная команда spark-submit -cp всё равно начинается с этого jar. Классы из него загружаются от имени Unix UID шлюза.

--conf spark.submit.proxyUser.allowCustomClasspathInClusterMode=true — второй обход: .internal() существует только в документации, --conf всё равно записывает ключ, и тогда YARN-кластер сохраняет --jars в childClasspath. Публичный CVE-2023-22946 остаётся путём YARN --jars по умолчанию, который уже покрывается clear(). Этот остаток — непроверяемый defaultExtraClassPath.

Имперсонация Hadoop после чистой отправки по-прежнему остаётся прокси-пользователем для YARN AM / драйвера k8s. Этот остаток затрагивает только JVM шлюза.

МетодТочка сбросаРазведкаЦелостностьДоступностьПроисхождение
Отправка в стиле Livy --proxy-user + кластер yarn/k8s/standalone + --conf spark.driver.defaultExtraClassPath=<staged local jar>, флаг SPARK-41958 оставлен falseSparkSubmitCommandBuilder.buildSparkSubmitCommand SparkSubmitCommandBuilder.java:317-327 первый элемент -cpПеречисление/чтение файлов, доступных UID шлюза (каталог keytab, spark-defaults, локальный staging). Hadoop-идентичность последующих RPC по-прежнему остаётся прокси-пользователем.Загрузка классов тенанта внутри JVM spark-submit. Unix UID остаётся шлюзом (Hadoop proxy superuser). Лаборатория: defaultExtraClassPath-on-cp=yes childClasspath-cleared=yes lab.WitnessMain записал SPARK-PROXYUSER-CLASSPATH-WITNESS. Выведено из публичного класса CVE: наложение ресурсов Hadoop Configuration / поиск реализации FileSystem от имени этого UID.Падение JVM отправки, если наложение выбрасывает исключение. Не класс.Лабораторно подтверждённая загрузка + запись свидетеля в сконструированном -cp. Наложение Hadoop выведено. Проброс --conf в Livy/Kyuubi выведен (эти деревья не соответствуют данному пину).
Та же отправка с --conf spark.submit.proxyUser.allowCustomClasspathInClusterMode=true плюс --jars / первичный ресурсSparkSubmit.prepareSubmitEnvironment SparkSubmit.scala:333-336,738-743,917-924 затем runMain :980-987Та же разведка, что и в проходе A, но на дочернем URLClassLoader, а не на системном загрузчике.Сохранить --jars в childClasspath, чтобы выполнился addJarToClasspath. Лаборатория: conf-flag-keeps-jars=yes.То же.Лабораторно подтверждённое сохранение childClasspath. Не повторное открытие публичного пути YARN --jars, который покрывается clear(), когда флаг остаётся false.

Лабораторно подтверждено vs выведено: сконструированный -cp содержит defaultExtraClassPath в режиме кластера; childClasspath.clear() по-прежнему выполняется при флаге по умолчанию; spark.driver.extraClassPath опускается в кластере; --jars при флаге false очищается; класс-свидетель в этом -cp записывает оракул. Выполнение класса конфигурации Hadoop — это публичный механизм CVE-2023-22946, здесь не воспроизводился. Проброс --conf в Livy/Kyuubi — это архитектура, которую документируют эти проекты.

Смежное закрыто (не преувеличивать)

Скачать инструмент