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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline verevkin  
#1 Оставлено : 29 января 2019 г. 8:01:49(UTC)
verevkin

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

Группы: Участники
Зарегистрирован: 10.10.2011(UTC)
Сообщений: 10
Откуда: Кемерово

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Трудно диагностируемая проблема, но повторяющаяся на нескольких окружениях.

Общая вводная
C#, многоточная обработка, ОС Windows 2016. СКЗИ КриптоПро CSP 4.0 R3 (сборка 4.0.9944 Xenocrates) (проблему имеем начиная с 3.9).
Ключ импортирован через PKCS#12-контейнер (pfx-файл) в реестр.
Пробовали режимы работы:
- получаем хэндл ключа единожды и используем во всех потоках (с общей синхронизацией доступа к ключу / без синхронизации / с использованием единого постоянно работающего потока с "вечным циклом" с синхронизацией по доступу к ключу);
- получаем хэндл на каждый поток каждый раз и освобождаем в конце потока (без повторного использования, потоки не из пула) (с общей синхронизацией доступа к ключу / без синхронизации / с использованием единого постоянно работающего потока с "вечным циклом" с синхронизацией по доступу к ключу).

При низкой нагрузке утечки нет. При повышении нагрузки (10 потоков, уже от 20 тыс ЭП в час) начинается рост (1 млн в сутки). На 2 млн примерно работа блокируется на разных этапах (0xc0000225, 0xc0000001).
Использовали разные варианты использования СКЗИ:
- CryptMsg...;
- CryptSignMessage.


Проблема №1
Осуществляем подсчет хэша, формирование ЭП.
Служба кэширования ключей включена. Количество хэндлов диагностируется на службе КриптоПро (при отключенной службе, естественно, уже в самом прикладном процессе).

Проблема №2
Аналогичную проблему получаем на КриптоПро.Net с TLS-клиентом (односторонняя аутентификация по транспорту, аутентификация клиента на уровне сообщения).
Получаем хэндл ключа (X509Certificate2 в результате с него берем) единожды и используем во всех потоках.


Прошу дать советы/рекомендации по диагностике и выявлению проблемы.

Отредактировано пользователем 29 января 2019 г. 8:05:03(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#2 Оставлено : 29 января 2019 г. 16:16:58(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Если утекают хэндлы - значит вы забываете их освобождать. В CSP 5.0 мы добавили диагностику CAPI10 со счётчиками хэндлов (и многую другую) - рекомендую установить и помониторить.
для включения c записью в DbgView:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Cryptography\CurrentVersion\Debug\capi10 0x0000003f 
Знания в базе знаний, поддержка в техподдержке
Offline verevkin  
#3 Оставлено : 12 февраля 2019 г. 11:18:46(UTC)
verevkin

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

Группы: Участники
Зарегистрирован: 10.10.2011(UTC)
Сообщений: 10
Откуда: Кемерово

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Для выявления и последующего устранения проблемы было разработано тестовое приложение, которое реализует функционал подписания с минимальным вызовом CryptoAPI (использование метода CryptSignMessage()). Приложение производит подписание заданное количество раз и фиксирует текущее количество дескрипторов (собственных) и службы КриптоПРО CSP (cpcsp | cpcsp1).

Тестирование было произведено более, чем на 10 компьютерах с разными версиями ОС Windows

  • - Windows 7;
  • - Windows 10;
  • - Windows Server 2012 R2;
  • - Windows Server 2016 Standard;

и разными версиями КриптоПРО:

  • - КриптоПро CSP 3.9 R2;
  • - КриптоПро CSP 4.0 R3;
  • - КриптоПро CSP 4.0 R4;

На всех окружениях была активирована служба хранения ключей.

На 3-х компьютерах (из >10) удалось воспроизвести проблему возрастания дескрипторов при использовании ГОСТ-ключей (RSA-ключи не приводят к потерям):

  • - Windows 10 + КриптоПро CSP 4.0 R3;
  • - Windows Server 2012 R2 + КриптоПро CSP 3.9 R2;
  • - Windows Server 2016 + КриптоПро CSP 4.0 R3;

На остальных количество дескрипторов колебалось в рамках "вменяемых" значений в диапазоне (+- 100). После завершения работы приложения, количество падало до первоначального.

Кроме возрастания дескрипторов в службе КриптоПРО CSP, было также выявлено (визуально, а затем и программно) синхронное возрастание дескрипторов в службах группы DcomLaunch:

  • - BrokerInfrastructure;
  • - DcomLaunch;
  • - DeviceInstall;
  • - LSM;
  • - Power;
  • - SystemEventsBroker;
    (процесс .\svchost.exe -k DcomLaunch)


Кроме этого утилита csptest (из поставки КриптоПРО) также приводит к "потере" дескрипторов
csptest.exe -sfsign -sign -in csptest.cmd -out sign.sgn -MY xxx
на 3 дескриптора за каждую операцию подписания (также в обеих службах - cpcsp и DcomLaunch, см. 01_1_csptest.png - 01_3_csptest.png).

см. Desc.rar (32kb) загружен 5 раз(а).


Дополнительно был произведен анализ открытых дескрипторов службы cpcsp после каждого вызова csptest.exe - см. 02_1_csptest.txt - 02_6_csptest.txt.
При сравнении списков дескрипторов видно, что прирост происходит на два дескриптора типа Event и один типа Token

  • - Event, , 0x330;
  • - Event, , 0x334;
  • - Token, PRPO-SOS-DEV\Administrator: 0x93e5b (Impersonation), 0x338;


Эти дескрипторы после подписания не закрываются и происходит их накопление. При работе на промышленных контурах происходит их переполнение и сбой в работе криптосистемы,
в результате чего требуется перезапуск сервера (сервиса cpcsp).

Предположительно, накопление связано с некорректным обновлением Windows, но выявить конкретную проблему не удалось.
На доступных тестовых контурах, где воспроизводится проблема, в одном случае (среда виртуализации, сохранен снимок "сломанного" состояния, доступна любая диагностика), получилось подтвердить устойчивое исправление при удалении и повторной установке КриптоПРО той же или более свежей версии.

Итого выявлено, что при функционировании системы в определенном состоянии:

  1. при использовании RSA-ключа утечки хэндлов не воспроизводятся, в то время, как при использовании ГОСТ-ключа, утечки воспроизводятся даже в csptest
  2. после некоторых действия (переустановки СКЗИ, единожды вроде бы https://answers.microsof...1bb50e15abe8&page=20 отработка по инструкции помогла, но это не подтвердилось повторно) ситуация исправляется.
.

Прошу помочь в иных способах диагностики проблемы (без переустановки версии СКЗИ).

Отредактировано пользователем 12 февраля 2019 г. 11:19:45(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил verevkin за этот пост.
Владимир-С- оставлено 08.12.2021(UTC)
Offline Максим Коллегин  
#4 Оставлено : 13 февраля 2019 г. 11:47:54(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Спасибо за исчерпывающее исследование.

На версии 4.0.9963 (R4) проблем не обнаружено? Используйте её в продакшен, тем более она уже сертифицированна ФСБ.
Знания в базе знаний, поддержка в техподдержке
Offline verevkin  
#5 Оставлено : 18 февраля 2019 г. 14:07:38(UTC)
verevkin

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

Группы: Участники
Зарегистрирован: 10.10.2011(UTC)
Сообщений: 10
Откуда: Кемерово

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Еще один компьютер, на котором наблюдаются утечки:
ОС: Windows Server 2016
CSP: КриптоПРО 4.0.9944
После обновления до КриптоПРО 4.0.9963 проблемы не исчезли.
Проявлялись проблемы в целом так же, как и ранее (лишь на немногих контурах):
- при использованнии нашего ПО росли хэндлы в cpcsp и dcomlaunch;
- csptest не приводил к росту дескрипторов cpcsp (как на другом контуре), а приводил только к росту хэндлов в dcomlaunch.

После установки КриптоПРО 5 проблемы устранились.
Прошу рекомендовать диагностику в рамках сертифицированной версии.
Offline Максим Коллегин  
#6 Оставлено : 18 февраля 2019 г. 14:10:15(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Подобных средств диагностики у нас нет, пока не очень понятно, какие они могу быть.
Нужен воспроизводимый сценарий, чтобы мы могли локализовать проблему на стенде.
Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#7 Оставлено : 18 февраля 2019 г. 17:14:10(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Дескрипторы будут утекать, если не освобождать контекст криптопровайдера - в нём хранится несколько объектов синхронизации.
Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#8 Оставлено : 19 февраля 2019 г. 16:13:29(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Воспроизвёл проблему, хэндлы утекают в библиотеке winscard. В 5.0 мы переписали работу с картами, в 4.0 остаётся только удалить считыватель смарт-карт из списка считывателей CSP.
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
verevkin оставлено 20.02.2019(UTC)
Offline Максим Коллегин  
#9 Оставлено : 19 февраля 2019 г. 16:51:47(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Для старых ОС у MSFT есть фиксы, для новых не нашёл:
https://www.google.ru/se...mart+card+Token+leaks+KB
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.