Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Павел Богатырёв  
#1 Оставлено : 18 февраля 2025 г. 13:58:24(UTC)
Павел Богатырёв

Статус: Участник

Группы: Участники
Зарегистрирован: 10.06.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Орел

Добрый день,

В сайте ASP.NET 4.5.1 пытаемся проверить подпись с помощью объекта CadesSignedData. При попытке его создания возникает ошибка CResourceException, из-за которой весь сайт падает.

Код:

Unhandled exception at 0x00007FFC70656EA8 in w3wp.exe_250217_140647.dmp: Microsoft C++ exception: CResourceException at memory location 0x000000E899EF8B60.


Стек ошибки:

Код:

[Managed to Native Transition]	
 	mscorlib.dll!System.RuntimeType.CreateInstanceSlow(bool publicOnly, bool skipCheckThis, bool fillCache, ref System.Threading.StackCrawlMark stackMark) Line 4097	C#
 	mscorlib.dll!System.Activator.CreateInstance(System.Type type, bool nonPublic) Line 365	C#
 	mscorlib.dll!System.Activator.CreateInstance(System.Type type) Line 254	C#
DocsVision.BackOffice.ObjectModel.CryptoPro.dll!DocsVision.BackOffice.DigitalSignature.CadesXLongType1Signature.SignatureLogic.VerifyDetached(DocsVision.BackOffice.DigitalSignature.ISignatureDataAccessor data, byte[] signature, DocsVision.BackOffice.ObjectModel.DigitalSignatureKind signatureKind) Line 98	C#


Код в исходниках выглядит так:

Код:

using CAdESCOM;

public void VerifyDetached(ISignatureDataAccessor data, byte[] signature, DigitalSignatureKind signatureKind)
{
        var signedData = new CadesSignedData();



При декомпиляции этого кода из сборки он выглядит так:

Код:

public void VerifyDetached(ISignatureDataAccessor data, byte[] signature, DigitalSignatureKind signatureKind)
{
	CadesSignedData cadesSignedData = (CadesSignedData)Activator.CreateInstance(Marshal.GetTypeFromCLSID(new Guid("1264A46A-FDB8-43A3-AEE3-00E1684C98E9")));



Выше по стеку код обернут в try/catch, но это не помогает - весь процесс w3wp сайта падает из-за этой ошибки. Ошибка плавающая, возникает несколько раз в неделю.

На сервере установлен КриптоПро CSP 5.0 R3 (5.0.13000).

Скажите, пожалуйста, какие ресурсы Windows запрашиваются при создании CadesSignedData? Из-за чего может возникать такая ошибка? Как можно обработать эту ошибку, чтобы весь сайт не падал из-за нее?

Offline Максим Коллегин  
#2 Оставлено : 6 марта 2025 г. 19:02:17(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,404
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Не сталкивались с подобной проблемой. Сможете собрать dump w3wp?
https://learn.microsoft....llecting-user-mode-dumps
Знания в базе знаний, поддержка в техподдержке
Offline Павел Богатырёв  
#3 Оставлено : 18 марта 2025 г. 11:50:18(UTC)
Павел Богатырёв

Статус: Участник

Группы: Участники
Зарегистрирован: 10.06.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Орел

Автор: Максим Коллегин Перейти к цитате
Не сталкивались с подобной проблемой. Сможете собрать dump w3wp?
https://learn.microsoft....llecting-user-mode-dumps


Дамп собрали, отправили по каналам техподдержки, тикет #148897
Offline Максим Коллегин  
#4 Оставлено : 20 марта 2025 г. 21:53:19(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,404
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
СпасиБо, получили, изучаем.
Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#5 Оставлено : 20 марта 2025 г. 22:04:23(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,404
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
С ходу не вижу причину проблемы. А вы пробовали кэширофвать результат
Код:
Marshal.GetTypeFromCLSID(new Guid("1264A46A-FDB8-43A3-AEE3-00E1684C98E9"))
и использовать его при создании объектов CAdESCOM?

Отредактировано пользователем 20 марта 2025 г. 22:06:16(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Павел Богатырёв  
#6 Оставлено : 21 марта 2025 г. 10:53:46(UTC)
Павел Богатырёв

Статус: Участник

Группы: Участники
Зарегистрирован: 10.06.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Орел

Автор: Максим Коллегин Перейти к цитате
С ходу не вижу причину проблемы. А вы пробовали кэширофвать результат
Код:
Marshal.GetTypeFromCLSID(new Guid("1264A46A-FDB8-43A3-AEE3-00E1684C98E9"))
и использовать его при создании объектов CAdESCOM?


Можно попробовать, но сомневаюсь что в этом дело, т.к. ошибка не в GetTypeFromCLSID, а в CreateInstance согласно колстеку. Можете код конструктора CadesSignedData привести? Есть там обращение к каким-либо ресурсам windows?

Технически в исходниках у нас нет вызова GetTypeFromCLSID, это генерирует компилятор. Но можно, конечно, в порядке эксперимента, вручную код сделать.

Отредактировано пользователем 21 марта 2025 г. 10:55:44(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#7 Оставлено : 21 марта 2025 г. 11:26:36(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,404
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Исключение появляется при загрузке CAdESCOM.dll, поэтому я и предложил кэшировать поиск типа, предположив, что он и загружает dll. Но нет, Dll загружается только при CreateInstance.

Тогда другое предложение -- создать заранее глобальный объяект CadesSignedData, чтобы не Dll не загружалась\выгружалась при работе приложения.
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.