C and C++


BADMACRO.WEAK_CRYPTO : Use of Weak Cryptographic Algorithm

Summary

A use of one of the following: CALG_3DES, CALG_3DES_112, CALG_DES, CALG_DESX, CALG_MD2, CALG_MD4, CALG_MD5, CALG_HUGHES_MD5, CALG_RC2, CALG_RC4, CALG_RC5.

These macros identify cryptographic algorithms that are considered weak by modern standards. Other algorithms should be preferred.

Properties

Class Name Use of Weak Cryptographic Algorithm
Significance security
Mnemonic BADMACRO.WEAK_CRYPTO
Categories
CWE CWE:327 Use of a Broken or Risky Cryptographic Algorithm
CERT-C CERT-C:MSC25-C Do not use insecure or weak cryptographic algorithms
Availability Available for C and C++.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Use of Weak Cryptographic Algorithm"

Example

#include <windows.h>
#include <wincrypt.h>

BOOL badmacro_weakcrypto(HCRYPTPROV hProv,
                         HCRYPTHASH hBaseData,
                         DWORD      dwFlags,
                         HCRYPTKEY  *phKey){
                    
    return CryptDeriveKey( hProv, CALG_MD5, hBaseData, dwFlags, phKey ); /* 'Use of Weak Cryptographic Algorithm'
                                                                          * warning issued here
                                                                          */  
}

Relevant Configuration File Parameters

This class is implemented using a BAD_MACRO_* rule set in the general template configuration file.

The following configuration file parameters affect checks for this warning class.