exponenta event banner

CERT C++: MSC41-C

Никогда не используйте информацию, чувствительную к жесткому коду

Описание

Определение правила

Никогда не вводите информацию, чувствительную к жесткому коду. [1 ]

Внедрение Polyspace

Эта проверка проверяет наличие жестко закодированных конфиденциальных данных.

Примеры

развернуть все

Жестко закодированные конфиденциальные данные возникают, когда потенциально чувствительные данные экспонируются непосредственно в коде, например, в виде строковых литералов. Средство проверки идентифицирует данные как чувствительные от их использования в определенных функциях, таких как функции шифрования паролей.

Следующие данные могут быть потенциально чувствительными.

Тип данныхФункции, указывающие на чувствительный характер информации
Имя хоста
  • sethostname, setdomainname, gethostbyname, gethostbyname2, getaddrinfo, gethostbyname_r, gethostbyname2_r (строковый аргумент)

  • inet_aton, inet_pton, inet_net_pton, inet_addr, inet_network (строковый аргумент)

  • mysql_real_connect, mysql_real_connect_nonblocking, mysql_connect (второй аргумент)

Пароль
  • CreateProcessWithLogonW, LogonUser (1-й аргумент)

  • mysql_real_connect, mysql_real_connect_nonblocking, mysql_connect (третий аргумент)

База данных
  • MySQL: mysql_real_connect, mysql_real_connect_nonblocking, mysql_connect (4-й аргумент)

  • SQLite: sqlite3_open, sqlite3_open16, sqlite3_open_v2 (1-й аргумент)

  • PostgreSQL: PQconnectdb

  • Microsoft SQL: SQLDriverConnect (третий аргумент)

Имя пользователя
  • getpw, getpwnam, getpwnam_r, getpwuid, getpwuid_r

Сольcrypt, crypt_r (второй аргумент)
Ключи криптографии и векторы инициализации

OpenSSL:

  • EVP_CipherInit, EVP_EncryptInit, EVP_DecryptInit (третий аргумент)

  • EVP_CipherInit_ex, EVP_EncryptInit_ex, EVP_DecryptInit_ex (4-й аргумент)

Семя
  • srand, srandom, initstate (1-й аргумент)

  • OpenSSL: RAND_seed, RAND_add

Риск

Информация, которая жестко закодирована, может быть запрошена из двоичных файлов, сгенерированных из кода.

Зафиксировать

Избегайте жесткого кодирования конфиденциальной информации.

Проверить информацию

Группа: Правило 48. Разное (MSC)
Представлен в R2020a

[1] Данное программное обеспечение было создано компанией MathWorks и включает в себя следующие компоненты: «Веб-сайт SEI CERT-C», © 2017 Университет Карнеги-Меллон, веб-сайт SEI CERT-C + + © 2017 Университет Карнеги-Меллон, "Стандарт кодирования SEI CERT C - Правила разработки безопасных, Надежные и безопасные системы - 2016 Edition ", © 2016 Университет Карнеги-Меллон, и "Стандарт кодирования SEI CERT C++ - Правила разработки безопасных, Надежные и безопасные системы в C++ - 2016 Edition "© 2016 Университет Карнеги-Меллон, со специальным разрешением от его Института программного обеспечения.

ЛЮБОЙ МАТЕРИАЛ УНИВЕРСИТЕТА КАРНЕГИ МЕЛЛОНА И/ИЛИ ЕГО ПРОГРАММНОГО ИНЖЕНЕРНОГО ИНСТИТУТА, СОДЕРЖАЩИЙСЯ В НАСТОЯЩЕМ ДОКУМЕНТЕ, ПОСТАВЛЯЕТСЯ КАК ЕСТЬ. УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, В ОТНОШЕНИИ ЛЮБЫХ ВОПРОСОВ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ ЦЕЛЕЙ ИЛИ ТОВАРНОЙ ПРИГОДНОСТИ, ИСКЛЮЧИТЕЛЬНОСТИ ИЛИ РЕЗУЛЬТАТОВ, ПОЛУЧЕННЫХ ОТ ИСПОЛЬЗОВАНИЯ УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ СВОБОДЫ ОТ ПАТЕНТА, ТОВАРНОГО ЗНАКА ИЛИ НАРУШЕНИЯ АВТОРСКИХ ПРАВ.

Данное программное обеспечение и связанная с ним документация не были рассмотрены и не одобрены Университетом Карнеги-Меллона или его Институтом разработки программного обеспечения.