Защитная проверка uutils mkfifo по ghsa-pmf6-rcx4-v53v: применимость, обратимый fixture для границы «немедленный выход из ветви после неуспешного создания FIFO без последующего chmod существующей цели», измеримый результат и stop-rule без production-данных.
Докажите применимость к uutils mkfifo
Для безопасного решения сначала зафиксируйте границы наблюдения. Для uutils mkfifo и границы «немедленный выход из ветви после неуспешного создания FIFO без последующего chmod существующей цели» зафиксируйте версию runtime, package source, digest сборки, активный feature/config path и роль, которая достигает функции. Reviewed Advisory фиксирует «uu_mkfifo < 0.6.0; first patched 0.6.0», публикацию 2026-07-06 и обновление 2026-07-06, но само по себе не устанавливает наличие у вас уязвимого бинарника, реальную эксплуатацию или спрос. Именно reachability, а не громкость заголовка, определяет приоритет проверки. Если версия собрана из fork или vendor patch, сохраните commit/patch provenance отдельно: одна строка semver не отвечает, присутствует ли исправление.
Зафиксируйте отдельный защитный контракт
Опишите проверяемый инвариант своими словами: занятое имя возвращает ошибку и сохраняет inode/mode; свободное имя создаёт FIFO с ожидаемым режимом. Исходная пользовательская боль здесь конкретна — ошибка File exists маскирует побочный эффект: права уже существующего файла становятся мягче. Не смешивайте её с общими страницами про обновления, XSS, SSRF или отказ в обслуживании: механизм и ожидаемый ответ должны быть самостоятельными. Перед стартом укажите субъект, объект, доверенную границу, разрешённый побочный эффект и сигнал нарушения. Для этого материала артефакт решения — таблица target-state / create-result / inode-before-after / mode-before-after / object-type. Он не содержит токены, IP, содержимое файлов или персональные данные; достаточно классов результата, счётчиков и digest тестового состояния.
Поставьте обратимый минимальный опыт
Создайте обратимый стенд: одноразовый каталог непривилегированного пользователя, обычный файл с mode 000 и отдельное свободное имя для normal-control. Затем снять inode и mode, вызвать проверяемую команду только в fixture, затем повторно снять metadata без чтения содержимого. Используйте минимальные синтетические значения, запрет внешней сети, отдельный temp root и normal-control, который проходит тот же код без пограничного условия. Перед опытом зафиксируйте digest fixture, версию и timeout, после — digest состояния и cleanup result. Не переносите пример на production и не увеличивайте нагрузку ради наглядности. Если компонент нельзя подменить или изолировать, ограничьтесь статической проверкой patch/release и отложите runtime-подтверждение.
Сведите наблюдения в матрицу решения
Наблюдение классифицируйте по заранее заданному правилу, а не по впечатлению от лога. Защитный исход: занятое имя возвращает ошибку и сохраняет inode/mode; свободное имя создаёт FIFO с ожидаемым режимом. По каждому ряда в «таблица target-state / create-result / inode-before-after / mode-before-after / object-type» сохраните expected и observed, а также точную стадию отказа: parse, validate, authorize, allocate, open, mutate или cleanup. Ошибка до опасного действия и ошибка после него — разные результаты. Normal-control обязан доказать, что тест не сломан целиком. Повторите fixture не менее двух раз только в пределах локального бюджета: одинаковый класс исхода важнее длинного stdout.
Остановитесь при первом выходе за границу
Примените stop-rule без торга: остановиться, если путь не принадлежит временному каталогу, если процесс привилегирован или если контрольная копия метаданных отсутствует. Сопутствующие красные флаги — изменение объекта вне temp, неожиданный сетевой вызов, рост памяти, privilege prompt, необратимая запись, расхождение digest или отсутствие normal-control. При любом флаге завершите процесс, сохраните лишь обезличенную матрицу и верните стенд к исходному состоянию. Не публикуйте payload, реальные конфиги и подробности чужой системы. Severity не разрешает расширять тест: цель — подтвердить защитный контракт с минимальным воздействием.
Передайте поддержке минимальный пакет
Для владельца компонента подготовьте короткий пакет: ghsa-pmf6-rcx4-v53v, uutils mkfifo, installed/build version, upstream commit, применимый диапазон «uu_mkfifo < 0.6.0; first patched 0.6.0», описание fixture без чувствительных значений, таблица target-state / create-result / inode-before-after / mode-before-after / object-type, normal-control, stop-rule, cleanup proof и ссылки на advisory/upstream. Самостоятельно отметьте unknown: reachability, vendor backport, runtime configuration и наличие compensating control. Решение может быть только одним из трёх: not-applicable с доказательством, update/test по утверждённому окну или blocked до безопасного стенда. Так поддержка получает минимальные данные для воспроизведения, а публичный материал не гарантирует индексацию, позиции, универсальную защищённость или результат на чужой инфраструктуре.
Свяжите исправление с механизмом uutils mkfifo
Для uutils mkfifo свяжите исправление именно с механизмом «немедленный выход из ветви после неуспешного создания FIFO без последующего chmod существующей цели», а не только с номером релиза. В changelog или diff найдите изменение, которое делает истинным результат «занятое имя возвращает ошибку и сохраняет inode/mode; свободное имя создаёт FIFO с ожидаемым режимом», и сопоставьте его с диапазоном «uu_mkfifo < 0.6.0; first patched 0.6.0». Затем повторите fixture «одноразовый каталог непривилегированного пользователя, обычный файл с mode 000 и отдельное свободное имя для normal-control» на текущем и кандидатном артефакте в одинаковой изоляции; сравнивайте «таблица target-state / create-result / inode-before-after / mode-before-after / object-type», а не произвольные строки лога. Если vendor backport меняет номер версии, сохраните commit/diff provenance и сборочный digest. План возврата должен восстанавливать предыдущий тестовый артефакт, но не возвращать production к заведомо сомнительной версии. Критерий приёмки для этой отдельной боли — занятое имя возвращает ошибку и сохраняет inode/mode; свободное имя создаёт FIFO с ожидаемым режимом; критерий прекращения — остановиться, если путь не принадлежит временному каталогу, если процесс привилегирован или если контрольная копия метаданных отсутствует. Пока оба критерия не доказаны, статус обозначьте blocked или unknown, не подменяя результат предположением.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-pmf6-rcx4-v53v проверено 2026-08-31
- Upstream-репозиторий uutils mkfifo проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.