# V5014. OWASP. Cryptographic function is deprecated. Its use can lead to security issues. Consider switching to an equivalent newer function.

Анализатор обнаружил вызов устаревшей криптографической функции. Использование такой функции может повлечь за собой проблемы с безопасностью.

Рассмотрим следующий пример:

    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 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.).

Данная диагностика классифицируется как:

CWE-327 OWASP-6.2.2