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

CoreWCF: WS-Security signature связана с проверенным узлом

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

Защитная проверка 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-границы и отсутствие рекламных обещаний затем перепроверены.

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

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

Ответы

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

Ваш ответ

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

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

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