Анализатор обнаружил вызов устаревшей криптографической функции. Использование такой функции может повлечь за собой проблемы с безопасностью.
Рассмотрим следующий пример:
BOOL ImportKey(HCRYPTPROV hProv, LPBYTE pbKeyBlob, DWORD dwBlobLen) { HCRYPTKEY hPubKey; if (!CryptImportKey(hProv, pbKeyBlob, dwBlobLen, 0, 0, &hPubKey)) { return FALSE; } if (!CryptDestroyKey(hPubKey)) { return FALSE; } return TRUE; }
Согласно документации Microsoft функции 'CryptoImportKey' и 'CryptoDestroyKey' устарели. Их следует заменить на безопасные аналоги из Cryptography Next Generation ('BCryptoImportKey' и 'BCryptoDestroyKey'):
BOOL ImportKey(BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_ALG_HANDLE hImportKey, BCRYPT_KEY_HANDLE* phKey, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags) { if (!BCryptImportKey( hAlgorithm, hImportKey, BCRYPT_AES_WRAP_KEY_BLOB, phKey, NULL, 0, pbInput, cbInput, dwFlags)) { return FALSE; } if (!BCryptDestroyKey(phKey)) { return FALSE; } return TRUE; }
Данное диагностическое правило применяется к устаревшим криптографическим функциям Windows API, Linux Kernel Crypto API и GnuPG Made Easy.
Если вам необходимо самостоятельно разметить нежелательные функции, то вы можете воспользоваться механизмом аннотирования функций и диагностическим правилом V2016.
Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.). |
Данная диагностика классифицируется как:
|