Как безопасно проверить OpenPanel 2.2.0 после advisory о chart formula для read-роли: версия, deny-before-evaluate и разрешённая арифметика без эксплуатационной формулы.
Версия и достижимость
Проверьте фактически запущенный OpenPanel, а не только package manifest. Advisory называет затронутой 2.2.0 и исправленной 2.3.0; также нужна возможность пользователя с read-level project membership сохранять или обрабатывать chart formula. Снимите image digest, package version, route authorization и feature availability. Не вводите неизвестную формулу в production. Если версия новее, это начало проверки, а не автоматический PASS: убедитесь, что развёрнут именно patched artifact и старый worker не продолжает обрабатывать задания.
Инварианта deny-before-evaluate
Безопасный evaluator сначала parse-ит выражение, затем обходит AST и разрешает только требуемые числа, symbols и арифметические operators. Любой function call, assignment, accessor или иной незаявленный node type должен завершаться отказом до compile или evaluate. Текущий formula.ts также ограничивает длину. Проверка строится вокруг порядка операций и allowlist, а не вокруг известного exploit payload. Если код сначала вычисляет строку и лишь затем проверяет результат, инварианта нарушена независимо от того, сработал ли конкретный образец.
Disposable fixture
Создайте отдельный локальный проект без сети, environment secrets, файловых credentials и прав запуска subprocess. Разрешённый набор содержит несколько простых выражений с известным числовым результатом. Запрещённый набор генерируется по AST-классам и проверяет только ранний отказ; он не содержит команды, адреса, чтение файлов или обходные техники. Инструментируйте счётчики parse, validation, compile, evaluate, network и process. Для запрещённого класса compile/evaluate/network/process должны оставаться нулевыми. Fixture удаляется после теста без затрагивания production data.
Ролевая граница
Отдельно подтвердите, что read-роли не получили новых write-разрешений после исправления. Тестовый read-member открывает существующий chart и пытается выполнить документированное безопасное действие; попытка изменения конфигурации должна соответствовать актуальной модели доступа. Не повышайте роль реального пользователя и не проверяйте чужой проект. Даже если route теперь запрещает сохранение, evaluator остаётся обязан безопасно обрабатывать вход: authorization и expression validation являются двумя независимыми слоями.
Критерии PASS
PASS требует runtime не старше 2.3.0, подтверждённый digest, AST allowlist, отказ незаявленных узлов до compile и нулевые process/network/file counters в disposable test. UPDATE-REQUIRED — 2.2.0 или неподтверждённый backport. FAIL — запрещённый AST достигает compile/evaluate либо read-role получает нежелательное действие. Stop-rule: проверка требует эксплуатационную строку, доступ к production credentials, открытие outbound network или запуск shell. Отсутствие заметного эффекта не является PASS, если порядок функций не доказан.
Пакет для исправления
Сохраните version, image digest, commit, route/role matrix, список разрешённых AST-классов, rejected class names, счётчики side effects и очищенный stack location. Не сохраняйте сам вредоносный payload, токены, connection strings, env dump или пользовательские dashboards. Сошлитесь на advisory и текущую реализацию. Такой отчёт доказывает preventive control и помогает сравнить backport, но не подтверждает отсутствие прошлой эксплуатации; для этого нужен отдельный журнал событий и инцидентный процесс.
Материал подготовлен редакцией VOne с помощью автоматизированного черновика. Факты и границы вывода сверены 4 сентября 2026 года по указанным прямым официальным и первичным источникам. Текст написан самостоятельно, опасные действия и реальные пользовательские данные в проверку не включены.
Источники и проверка
- OpenPanel advisory GHSA-7476-c5cc-8999 проверено 2026-09-04
- OpenPanel formula.ts проверено 2026-09-04
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.