К обсуждениям

Wasmtime 45.0.2: контроль ресурсов вокруг WASIp1 fd_renumber

Редакция VOne Технологии

Защитная памятка по Wasmtime WASIp1 и GHSA-3p27-qvp9-27qf: граница версий, runtime-инвентарь, безопасный regression-тест, стоп-критерии, канарейка, rollback и очищенный пакет владельцу.

Факт, применимость и ответ

GHSA-3p27-qvp9-27qf подтверждает отдельную проблему в Wasmtime WASIp1: повторная операция могла не освобождать host-side ресурс и постепенно исчерпывать лимит процесса. Граница применимости — затронутые ветки wasmtime-wasi до опубликованных исправлений, включая линию 45 до 45.0.2, при доступном WASIp1 fd_renumber. Прямой безопасный ответ: сначала доказать runtime-версию и достижимость именно этой функции, затем выбрать исправленную версию своей поддерживаемой ветки, для линии 45 — wasmtime-wasi 45.0.2, и пересобрать embedding application. Наличие продукта в inventory ещё не доказывает уязвимость, а отсутствие жалоб не доказывает исправление. Вердикт формулируют как passed, failed, blocked или not affected by reachability; последний требует проверяемого доказательства отключённого пути.

Инвентаризация фактического пути

До изменения создайте evidence row для Wasmtime WASIp1: «crate version | operations window | host descriptors start/end | RSS delta | guest result». Она обязана описывать тот процесс, который обслуживает проверяемый путь. Зафиксируйте package origin, resolved version, digest и включённую функцию; отдельно отметьте роль или сетевой контекст. Если версия исправлена поставщиком без нового номера, сопоставьте commit или vendor notice, а не делайте вывод по строке версии. Удалите IP, hostnames, usernames, session values, домашние пути и содержимое данных. Отсутствие прямого runtime-признака не трактуется как безопасность — это статус blocked.

Как получить отрицательное доказательство

Используйте изолированный стенд, synthetic data и восстановимый snapshot. Безопасный отрицательный контроль: в контейнере с жёстким лимитом выполнить ограниченное число штатных renumber операций синтетического модуля и сравнить дескрипторы и память до/после нескольких одинаковых окон. Сначала запишите baseline на текущей разрешённой сборке без активного эксплуатационного payload, затем повторите тот же сценарий на исправленной версии. Passed означает совпадение заранее объявленного security decision и сохранение штатной функции. Timeout, пустой ответ, один HTTP status или тишина журнала не считаются успехом: они могут означать неверный маршрут, crash или потерю telemetry.

Обновление с контролем состояния

Безопасное изменение для Wasmtime WASIp1 формулируется так: выбрать исправленную версию своей поддерживаемой ветки, для линии 45 — wasmtime-wasi 45.0.2, и пересобрать embedding application. Перед rollout сохраните проверяемый backup, hash старого artifact, effective configuration и шаг возврата, который уже выполнялся на копии. Начните с одной канарейки, повторяющей нужную функцию без реальных данных и широких прав. После старта подтвердите runtime version, положительный smoke, отрицательное решение, число рестартов и лимиты ресурсов. Возврат binary и возврат данных — разные операции; их совместимость фиксируют до публикации изменения.

Стоп-критерии и ложный успех

Стоп-линия для этой темы: метрика растёт, лимит контейнера близок к исчерпанию, тест запускается на общем host или предлагается бесконечный цикл. При её срабатывании остановите опыт, сохраните только обезличенные признаки и восстановите snapshot. Не расширяйте тест, чтобы добиться воспроизведения. Ложнозелёные сигналы: один health endpoint, package metadata без runtime, успешное TCP-соединение, отсутствие публичного exploit и отсутствие пользовательских обращений. Эти признаки полезны для диагностики, но не отвечают на конкретный security decision и не заменяют первичную advisory-запись.

Отдельная практическая ценность

Утечка доказывается не абсолютным RSS одного процесса, а повторяемым ростом host resource после завершения одинаковых окон. JIT cache и allocator могут оставить память без уязвимости, поэтому отдельно считают дескрипторы и проверяют plateau после прогрева. Тест имеет фиксированный верхний предел и аварийное завершение раньше cgroup limit. Результат считается самостоятельным только при сохранённой матрице до/после, заранее заданном expected decision и проверенном возврате. Если эта практическая развилка уже покрыта внутренней инструкцией, правильное действие — обновить её, а не создавать соседний URL под вариант названия продукта.

Передача результата без секретов

Владельцу передают GHSA-3p27-qvp9-27qf, точную версию до и после, URL первичного источника, SHA-256 артефакта, timestamp Europe/Moscow и одну очищенную строку «crate version | operations window | host descriptors start/end | RSS delta | guest result». Добавьте expected и observed decision, длительность ограниченного окна, backup/rollback status и один обезличенный error-class. Удалите secrets, абсолютные домашние пути, IP, account ids, session values и содержимое пользовательских объектов. Если reachability не подтверждена, честный статус blocked; advisory не доказывает, что конкретная установка была затронута.

Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, версии и ссылки перепроверены. Реальные пользовательские данные, активные payload и вымышленные результаты тестов не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.