Комплексная медицинская информационная система Damumed — это медицинская цифровая экосистема, интегрированная с порталами Министерства здравоохранения РК.
При анализе обнаружено три замечания: по одному — зелёного [🤢], жёлтого [😐] и красного [🤬] (об уровнях).
Damumed использует устаревшие вызовы NCALayer, сохранённые для обратной совместимости с Java-апплетом. Разработчиками рекомендуется использовать методы из «Common Bundle».
Сейчас это некритично, но, вероятно, в будущем устаревшие методы использования NCALayer перестанут работать, что может привести к временным ограничениям в работе интернет-ресурса с ЭЦП.
Ключи ЭЦП можно хранить в разных местах. Например:
- Файлы на компьютере
- Удостоверение личности гражданина РК
- Казтокен
- JaCarta
- Хранилище ключей Java
- AKEY
- eToken5110
- eToken
Из всех вышеперечисленных, наименее защищённым является хранение ключей ЭЦП в файлах на компьютере. О соответствующем риске говорится в личном кабинете Национального удостоверяющего центра Республики Казахстан при выпуске ЭЦП.
Напомню, закрытый ключ, должен храниться в строжайшем секрете. В идеале, никогда, ни при каких обстоятельствах не покидать устройство, где он был создан и хранится. Об этом подробнее можно прочитать в одной из моих статей из цикла «Цифровая гигиена»: ЭЦП, SMS и много других непонятных слов. Я, например, выпускаю свои ключи ЭЦП (как личные, так и служебные) в своём устройстве Казтокен и, соответственно, храню их там же.
Данное замечание указывается, если при анализе было обнаружено, что интернет-ресурс не позволяет использовать защищённые носители ключей ЭЦП.
На сайте Damumed аутентификация по цифровым сертификатам (при помощи ЭЦП) реализована так, что пользователи всегда подписывают один и тот же фиксированный блок данных. В том случае, если злоумышленник сможет перехватить этот подписанный пользователем блок данных при отправке его на сервер, то он сможет повторно использовать его для того, чтобы входить в систему от имени пользователя.
Рекомендуется для каждой попытки аутентификации генерировать для подписания блок случайных данных, вести их учёт на стороне сервера таким образом, чтобы каждый блок мог быть использован только один раз.
Vladimir Turekhanov ・ April 25, 2021