Security: yellow444/epgu
Security
Криптографические операции
Операция
Инструмент
Примечание
Хранение закрытого ключа
КриптоПро CSP, контейнер xxx.000
Монтируется в /var/opt/cprocsp/keys/app/
Подпись api_key для ЕСИА
pycades.Signer + CADESCOM_CADES_BES, detached
base64 → urlsafe base64
Метка времени
TSA TSAAddress
CAdES-T при необходимости
Валидация XML
lxml.XMLSchema по piev_epgu.xsd
Только для /push/chunked
TLS к ЕПГУ
httpx, CA из test_ca_rtk3.cer (тест)
В проде — корневые ФСБ/Минцифры
Получается в обмен на подпись API-key.
Хранится в глобальной переменной процесса (ACCESS_TKN_ESIA).
Используется как Authorization: Bearer ... для всех вызовов svcdev_host.
На фронтенде декодируется только для отображения exp (никакой верификации — JWT подписывает ЕСИА).
Угроза
Оценка
Меры
Утечка KeyPin через env
высокая
Использовать Docker secrets / Vault в prod
Утечка приватного ключа (volume)
высокая
Шифровать том, ограничить FS-права, не коммитить xxx.000
CSRF на backend
средняя
CORS сейчас *; в prod — whitelisting + CSRF-токен при необходимости
MITM к ЕПГУ
низкая
Только HTTPS + корневой CA
Повторная подача/replay
средняя
ЕПГУ отвечает дедупликацией по orderId; на стороне системы — идемпотентные ключи
Отсутствие аудита
средняя
Логировать все операции подписания с указанием пользователя/ключа
XXE / billion laughs
средняя
lxml.etree.fromstring без отключения внешних сущностей — рассмотреть XMLParser(resolve_entities=False)
Логирование PII
средняя
Не логировать тело заявления/PII в prod; маскировать
Включить XMLParser(resolve_entities=False, no_network=True) для защиты от XXE.
Перенести глобальное состояние в защищённое хранилище (Redis с TTL на токен).
Добавить проверку срока действия ACCESS_TKN_ESIA и авто-обновление.
Ограничить allow_origins и allow_methods CORS.
Хранить аудит операций подписания (кто, когда, какой сертификат, хэш данных).
В backend-образ устанавливается test_ca_rtk3.cer (certenroll.test.gosuslugi.ru).
Для прод-контура заменить на действующие корневые сертификаты ЕСИА.
There aren't any published security advisories
You can’t perform that action at this time.