Защитная проверка CoreWCF WS-Security endorsing signature по ghsa-gqv6-pwcg-87r8: применимость, безопасный fixture, reference-id / lookup-scope / matched-node-count / verified-body-digest / dispatched-body-digest, pass-rule и stop-rule без production-данных.
Какая граница сломана в CoreWCF WS-Security endorsing signature
Пользовательская проблема здесь узкая: захваченная подпись связывается не с тем SOAP-узлом и позволяет повторить изменённое сообщение. Механизм по прямой upstream advisory: Криптографическая проверка недостаточна, если reference разрешается к неожиданному элементу. Нужны уникальные ID, локальный lookup в security header и связь подписанного body с dispatch payload. Поэтому проверяем не общий класс уязвимостей, а invariant «каждая Reference разрешается в единственный ожидаемый узел текущего Security header и именно этот body передаётся dispatch». GitHub Reviewed Advisory ghsa-gqv6-pwcg-87r8 опубликована 2026-06-19, обновлена 2026-06-19; package boundary: «nuget/CoreWCF.Primitives < 1.8.1; first patched 1.8.1». Эти факты не доказывают affected code в конкретном fork, эксплуатацию, популярность или поисковый спрос.
Сначала докажите применимость сборки и пути
Запишите source package, runtime version, build digest, commit provenance, feature/config state и роль, достигающую CoreWCF WS-Security endorsing signature. Отдельно отметьте самый ранний side effect. Нормальный контроль: единственная reference normal envelope связывает один body и проходит. Если component заменён, feature выключен или backport подтверждён по diff, укажите not-reachable/not-affected с доказательством. Если provenance неизвестна, статус unknown; номер версии из «nuget/CoreWCF.Primitives < 1.8.1; first patched 1.8.1» остаётся фильтром, а не готовым выводом.
Проведите один обратимый лабораторный опыт
Безопасный fixture: На синтетическом SOAP DOM построить normal envelope и envelope с дополнительным одноимённым ID; verifier/dispatch заменить recording adapters. Все значения синтетические; persistence — memory adapter или rollback transaction, filesystem — mkdtemp, сеть отключена либо заменена recorder. До запуска сохраните input digest, ожидаемый pass-rule и нулевые counters. После — строку «reference-id / lookup-scope / matched-node-count / verified-body-digest / dispatched-body-digest», final-state digest и cleanup proof. Эксплуатационный payload, реальный credential, массовый перебор и production traffic не нужны.
Решение по строке reference-id / lookup-scope / matched-node-count / verified-body-digest / dispatched-body-digest
Сначала убедитесь, что control действительно достиг нужной ветви. Затем читайте «reference-id / lookup-scope / matched-node-count / verified-body-digest / dispatched-body-digest» слева направо: где нормализован input, когда применена policy и был ли чувствительный action. PASS только если ambiguous или внешний узел отклонён, verified и dispatched digest всегда совпадают. Отсутствие exception или один HTTP status недостаточны. При async/race boundary используйте фиксированные barriers и один малый повтор, а не нагрузочный тест. Любой необъяснимый side effect переводит результат в fail/unknown до расследования.
Проверьте patch provenance и красные флаги
Исправление обязано реализовать смысл «каждая Reference разрешается в единственный ожидаемый узел текущего Security header и именно этот body передаётся dispatch», а не только изменить номер релиза. На одинаковом fixture сравните affected и candidate build, сохранив reference-id / lookup-scope / matched-node-count / verified-body-digest / dispatched-body-digest. Красные флаги: policy после side effect, несовпадение verified/effective target, fail-open при ошибке, другой code path для transport/формата или отсутствие negative control. Production update не разрешён этой статьёй: требуется отдельный rollout с backup, canary, readiness, журналами и rollback.
Stop-rule, support packet и дерево решения
Stop-rule: не использовать захваченное сообщение, signing key и сетевой service. Также остановитесь при privilege prompt, данных вне fixture, необратимой записи, росте ресурсов, отсутствии normal control или невозможности cleanup. В обезличенный support packet положите ghsa-gqv6-pwcg-87r8, product/component, version/build provenance, «nuget/CoreWCF.Primitives < 1.8.1; first patched 1.8.1», строку «reference-id / lookup-scope / matched-node-count / verified-body-digest / dispatched-body-digest», expected/observed, stop reason и обе source URL. Дерево: patched provenance — not-applicable; недостижимая ветвь — not-reachable; pass-rule выполнен — ready-for-reviewed-update; наблюдается «захваченная подпись связывается не с тем SOAP-узлом и позволяет повторить изменённое сообщение» — fail; иначе unknown. Ни один лист не обещает универсальную безопасность или индексацию.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые источники, безопасный fixture, privacy-границы и отсутствие рекламных обещаний затем перепроверены.
Источники и проверка
- GitHub Reviewed Advisory ghsa-gqv6-pwcg-87r8 проверено 2026-08-31
- Primary upstream for CoreWCF WS-Security endorsing signature проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.