Безопасная проверка Paymenter email identity по ghsa-rv89-wch8-c574: применимость, обратимый опыт для границы «verification bound to normalized current email value and invalidated on change», матрица результата и stop-rule без production-данных.
Отделите advisory от установки Paymenter email identity
Сначала отделите факт advisory от гипотезы о своей установке Paymenter email identity. Зафиксируйте package source, активный процесс version, build digest, feature/config reachability и роль, которая достигает ветви. GitHub Reviewed Advisory сообщает «Paymenter doesn't reset email verification status after email change», даты 2026-06-22/2026-06-22 и границы «paymenter/paymenter < 1.5.0; first patched 1.5.0». Это само по себе не устанавливает affected code в конкретной сборке: fork и vendor backport требуют commit provenance. Пока provenance или reachability неизвестны, статус только unknown, без вывода об эксплуатации, популярности или ущербе.
Назовите отдельный защитный invariant
Опишите один узкий invariant: verification bound to normalized current email value and invalidated on change. Отдельная боль пользователя: account keeps verified=true after replacing address with one that was never confirmed. Укажите субъект, объект, trust boundary, решение policy и самый ранний чувствительный side effect. Pass-критерий задайте заранее: real change sets unverified and issues one challenge; canonical no-op preserves state. Он отличается от общего «ошибки нет»: защита обязана сработать до read, send, execute, write, cache commit, credential issue или process exit. Решающий артефакт — old-normalized / new-normalized / changed / verified-after / challenge-count; в нём нет имён, IP, содержимого файлов и персональных данных.
Проведите дифференциальный обратимый опыт
Создайте обратимый лаборатория: in-memory account, old verified email and new synthetic address with notification stub. Затем apply same-address normalization and changed-address cases, then inspect challenge counter. Все значения синтетические, сеть отключена либо loopback-only, filesystem ограничен mkdtemp, persistence — in-memory или rollback transaction. Добавьте positive control и boundary case, одинаковый timeout и deterministic ordering. Перед опытом зафиксируйте input digest и expected row; после — result class, counters, final-state digest и cleanup proof. Нагрузочный или эксплуатационный вариант не нужен и запрещён.
Прочитайте матрицу до side effect
Заполните матрицу «old-normalized / new-normalized / changed / verified-after / challenge-count» строка за строкой. Сопоставьте observed с правилом «real change sets unverified and issues one challenge; canonical no-op preserves state», самостоятельно отмечая stage решения и факт любого побочного эффекта. Positive control обязан пройти тот же код: иначе deny может означать сломанный лаборатория. Для гонки или cache/state темы изменяйте только детерминированный interleaving и повторяйте малое число раз. Green возможен, когда безопасный сценарий работает, пограничный отклонён раньше действия, а state digest соответствует ожидаемому.
Подтвердите механизм исправления
Проверьте patch provenance по смыслу: diff гарантированно должен реализовать «verification bound to normalized current email value and invalidated on change», а не просто изменить номер релиза. На одном тестовая заготовка сравните текущую и candidate build и зафиксируйте «old-normalized / new-normalized / changed / verified-after / challenge-count». Диапазон «paymenter/paymenter < 1.5.0; first patched 1.5.0» используйте как фильтр, не как доказательство. Если update требует rollout, эта статья не разрешает production change: нужен отдельный контракт с backup, canary, readiness и rollback. Не обещайте, что один фикс закрывает весь класс риска или даёт поисковый итог.
Примените stop-rule и privacy boundary
Stop-rule: остановить опыт до mail delivery, real account, user address or session change. Также прекратите опыт при внешнем адресе, real credential, privilege prompt, данных вне тестовая заготовка, необратимой записи, росте ресурсов, отсутствии normal control или cleanup. Статус будет blocked, а не «почти прошёл». Для сопровождения передайте ghsa-rv89-wch8-c574, Paymenter email identity, version/build provenance, «paymenter/paymenter < 1.5.0; first patched 1.5.0», sanitized «old-normalized / new-normalized / changed / verified-after / challenge-count», expected/observed, stop reason и прямые source URLs. Не публикуйте payload, чужие логи, конфиги и приватные ссылки.
Завершите деревом решения
Дерево решения для Paymenter email identity: proven patched/non-affected build — not-applicable; недостижимая по документированной конфигурации ветвь — not-reachable; candidate build выполняет «real change sets unverified and issues one challenge; canonical no-op preserves state» — ready-for-reviewed-update; наблюдается «account keeps verified=true after replacing address with one that was never confirmed» — fail и эскалация владельцу. Иначе unknown. К каждому листу приложите один факт из «old-normalized / new-normalized / changed / verified-after / challenge-count» и criterion «остановить опыт до mail delivery, real account, user address or session change». Такой ответ самостоятельный: он решает конкретный intent через reversible test, matrix, red flags и минимальный support packet, а не размножает страницу заменой бренда.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-rv89-wch8-c574 проверено 2026-08-31
- Upstream-репозиторий Paymenter email identity проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.