
Docker-лаборатория для проверки примитива выполнения PHP на уровне компонентов Magento CVE-2026-75650 и патча Adobe VULN-39341.
Эта автономная лаборатория воспроизводит компонентный примитив выполнения PHP StyleSmuggler на зафиксированной по ревизии кассе Magento Open Source 2.4.9, а затем доказывает, что патч Adobe VULN-39341 блокирует идентичный вход.
Доказательство неразрушающее: включённый PHP может записать только одну случайную
метку в /tmp. Он не может выполнить команду, скачать файл, открыть callback
или принять полезную нагрузку от оператора.
Лаборатория предоставляет:
755e34dd689021c5165db9d35ecff74f7dc51527;Лаборатория не заявляет о стандартном неаутентифицированном HTTP-эксплойте. Компонентный зонд начинается с реальной модели email-шаблона, поэтому он доказывает опасный приёмник и границу патча, а не отсутствующий коннектор «сеть-шаблон». Никакой синтетический HTTP-маршрут не добавляется.
Используйте только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Не размещайте PHP-зонд в рабочем веб-каталоге production. Для реальной установки используйте доступный только для чтения валидатор или проверяйте одноразовый staging-клон.
Требования:
Публикуется только шлюз витрины в режиме разработчика, и только на loopback
(127.0.0.1:8096 по умолчанию). Второй неэкспонированный nginx-шлюз выбирает
стандартную обработку ошибок production, чтобы тест отчёта получал обычный
идентификатор отчёта Magento. MariaDB, Redis, OpenSearch, PHP-FPM и этот шлюз
отчётов не экспонируются в сеть хоста.
cd docker-lab
cp .env.example .env
docker compose up -d --build
docker compose logs -f php
Первоначальное клонирование Magento, установка зависимостей и установка приложения
обычно занимают 15–40 минут. Когда в логе PHP появится Ready, выполните:
docker compose exec -T php bash /lab/scripts/run-ab.sh
Или используйте удобные цели:
make up
make wait
make ab
Команда A/B всегда пытается оставить исходный код в исправленном состоянии.
Тест проходит только тогда, когда обе независимо проверенные половины ведут себя ожидаемо:
Unpatched report: raw-tag=true, guard=false
Patched report: raw-tag=false, guard=true, neutralized=true
Unpatched component: marker=true
Patched component: marker=false
[PASS] Report storage and component execution match the required A/B controls.
HTTP 200, отрисованное уведомление, сгенерированный отчёт об ошибке или выброшенное исключение не принимаются как доказательство выполнения. Проверки отчёта и выполнения остаются раздельными: их совместный успех не изобретает недоказанный стандартный HTTP-коннектор.
make vulnerable
make report # expected: raw tag preserved, no execution guard
make probe # expected: execution_observed=true and exit 0
make patched
make report # expected: exit guard present, payload tag neutralized
make probe # expected: execution_observed=false and exit 2
Возврат make probe значения 2 в исправленном состоянии — это ожидаемый
отрицательный результат; make ab обрабатывает оба кода выхода и возвращает 0
только при полном прохождении A/B.
Эта проверка никогда не запускает Magento и не выполняет код из смонтированного дерева. Контейнер не имеет сети, Linux-возможностей, корневой файловой системы только для чтения и целевого монтирования только для чтения.
make validate TARGET=/absolute/path/to/magento
Ожидаемый вердикт полностью исправленной версии:
Summary: 9/9 controls present
Verdict: FULL_CONTROL_SET_PRESENT
Всё, что меньше, сообщается как FULL_CONTROL_SET_NOT_CONFIRMED, а не
автоматически как эксплуатируемое. Подтвердите точную редакцию/версию Commerce
и примените соответствующий версии патч Adobe через поддерживаемый процесс
развёртывания.
Более точное название — зонд выполнения кода компонента только с меткой. Сквозное удалённое RCE требует, чтобы стандартный удалённый запрос создавал свою собственную независимую метку или callback на тестируемой сборке.
См. Технические заметки о потоке данных, девяти контролях патча и таблице силы доказательств. Точные протестированные результаты записаны в VALIDATION.md.
Используйте официальный бюллетень и патч, соответствующий развёрнутому релизу:
Встроенный здесь патч сопоставлен по путям только для публичного монорепозиторного лабораторного стенда 2.4.9. Не применяйте его напрямую к production-установке Composer. Патчинг также не удаляет уже присутствующую закладку и не восстанавливает скомпрометированные учётные данные.
make down # preserve volumes
make reset # delete this lab's source, database, and OpenSearch volumes