Защитная инструкция по Oh My Posh и ghsa-fwjx-9p69-h25h: установить применимость, проверить нейтрализацию terminal control runes в segment data на одноразовом стенде, измерить безопасный исход и подготовить обратимый выпуск без production-данных.
Карта применимости для Oh My Posh
Advisory описывает отдельную проблему: данные каталога, Git или команды могут передать raw control sequence в terminal prompt. Проверяемая граница проходит между dynamic segment string, terminal writer и final prompt bytes. Диапазоны Reviewed record: go:github.com/jandedobbeleer/oh-my-posh <= 29.35.0 → 29.35.1. Severity определяет очередь, а не факт компрометации или доступности пути. Снимите версия binary, shell, segment source, control-rune classes, output byte classes, title/body paths и terminal emulator involvement. Для каждого элемента укажите observed, expected, unknown или not-applicable, время и происхождение. Severity medium не подтверждает атаку, ущерб либо состояние конкретного deployment. Если происхождение бинарника неизвестно, не делайте вывод по одному package manager.
Матрица решений на защитной границе
Разложите сценарий на вход, policy/parser, защищаемый объект и наблюдаемый исход. Для Oh My Posh это «между dynamic segment string, terminal writer и final prompt bytes». Ветвь close допустима, когда runtime вне указанных диапазонов или функция недостижима и это подтверждено. Ветвь update выбирают при совпавшей версии и доступном фиксированном артефакте. Ветвь contain оставляет узкое ограничение доступа до окна обновления. Ветвь escalate нужна при unknown provenance. Любая неоднозначность блокирует широкую рекомендацию. Не объединяйте этот механизм с соседними advisory только из-за общего слова security.
Обратимый тест без эксплуатационного payload
Безопасный опыт: не открывая terminal emulator, передать writer строку с видимым placeholder и одиночным synthetic control rune, затем исследовать только байтовый output. Сначала записывают baseline, затем один boundary-case и повторяют baseline. Измеримый безопасный исход: данные neutralized/removed по policy, служебные escape самой темы остаются отделены, emulator не запускается. Не увеличивайте объём, глубину, число соединений или права после первого отклонения. Сохраняйте только decision code, counters, timings и hashes; реальные имена, адреса, credentials и пользовательские данные исключите. Красная линия: нужно отобразить строку в реальном terminal, изменить directory name или использовать clipboard sequence. При её достижении завершите стенд и оставьте результат blocked/unknown вместо попытки воспроизвести атаку.
Окно обновления и контроль регрессии
Зафиксируйте исходный dependency tree и артефакт, установите подтверждённую исправленную ветку из диапазона «go:github.com/jandedobbeleer/oh-my-posh <= 29.35.0 → 29.35.1» в staging и повторите тот же baseline/boundary/baseline набор. Не меняйте одновременно reverse proxy, role model, parser settings или OS: иначе нельзя связать результат с обновлением. Сравните latency, memory, accepted/rejected decisions и обычный функциональный сценарий. Временный containment снимают только после безопасного результата и готового возврата. Возврат для этой карточки: удалить fixture/config и byte dump, вернуть prompt snapshot.
Критерий закрытия и минимальный пакет
Карточка закрывается, когда версия и provenance подтверждены, граничный вход даёт ожидаемый отказ или безопасную обработку, обычный контроль проходит, cleanup завершён, а журнал не содержит новых warning/error. Минимальный пакет для поддержки: version, shell, segment source, input/output rune classes, byte hashes, emulator count и cleanup. В нём не должно быть IP, tokens, passwords, cookies, private keys, полного config, реальных файлов или payload. Отдельной строкой укажите: GitHub Reviewed Advisory подтверждает механизм и диапазон, но не эксплуатацию в этой среде, популярность запроса, индексацию или позиции.
Материал подготовлен редакцией VOne с помощью ИИ, затем вручную проверен по двум прямым HTTPS-источникам; факты, диапазоны версий, безопасный опыт и отсутствие рекламных обещаний сверены человеком.
Источники и проверка
- GitHub Reviewed Advisory ghsa-fwjx-9p69-h25h проверено 2026-08-30
- Upstream-страница Oh My Posh проверено 2026-08-30
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.