Skip to main content

Запросы C и C++ для анализа CodeQL

Изучите запросы, которые CodeQL используются для анализа кода, написанного на C или C++ при выборе default security-extended или наборе запросов.

Кто может использовать эту функцию?

Code scanning доступен для репозиториев, принадлежащих организации, в GitHub Enterprise Server. Для этой функции требуется лицензия на GitHub Advanced Security. Дополнительные сведения см. в разделе Сведения о GitHub Advanced Security.

CodeQL содержит множество запросов для анализа кода C и C++. Все запросы в наборе default запросов выполняются по умолчанию. Если вы решили использовать security-extended набор запросов, выполняются дополнительные запросы. Дополнительные сведения см. в разделе Наборы запросов CodeQL.

Встроенные запросы для анализа C и C++

В этой таблице перечислены запросы, доступные в последнем выпуске действия CodeQL и CodeQL CLI. Дополнительные сведения см. в разделе CodeQL журналов изменений на сайте документации CodeQL документации.

Примечание. Первоначальный выпуск GitHub Enterprise Server 3.13 включал действие CodeQL и CodeQL CLI 2.16.5, которые могут не включать все эти запросы. Администратор сайта может обновить версию CodeQL до более новой версии. Дополнительные сведения см. в разделе Настройка сканирования кода для устройства.

Имя запросаСвязанные CWEsПо умолчанию.РасширенноеАвтофикс
Недопустимая проверка переполнения целочисленного дополнения190, 192
Плохо привязанная запись120, 787, 805
memset Вызов может быть удален14
Вызов alloca в цикле770
Вызов функции с меньшим количеством аргументов, чем объявленные параметры234, 685
Приведение между HRESULT и логическим типом253
Приведение от char* к wchar_t*704
Скрипт CGI уязвим для межсайтовых сценариев079
Хранилище конфиденциальной информации в файле с помощью Cleartext260, 313
Передача конфиденциальной информации cleartext319, 359
Сравнение узкого типа с широким типом в условии цикла190, 197, 835
Опасное использование "cin"676
Воздействие системных данных на несанкционированную сферу управления497
Сбой использования URL-адресов HTTPS319, 345
Файл открыт с флагом O_CREAT, но без аргумента режима732
Неправильная проверка возвращаемого значения для функции "scanf", например253
Вероятно, переполнение записи120, 787, 805
Несоответствие новых или бесплатных или malloc/delete401
Результат умножения, преобразованный в более крупный тип190, 192, 197, 681
Нет места для нулевого конца131, 120, 122
Проверка переполнения указателя758
Потенциальный двойной бесплатный415
Потенциальное использование после бесплатного использования416
Потенциально переполненный вызов snprintf190, 253
Избыточное значение NULL из-за предыдущей расшифровки476
Возврат выделенной стека памяти825
Задание DACL значение NULL в SECURITY_DESCRIPTOR732
Проверка переполнения со знаком128, 190
Доступ к статическим массивам может привести к переполнению119, 131
Подозрительное добавление с помощью sizeof468
Время проверки состояния гонки файловой системы367
Слишком мало аргументов для функции форматирования234, 685
Неконтролируемые данные в арифметическом выражении190, 191
Неконтролируемые данные в SQL-запросе089
Неконтролируемые данные, используемые в команде ОС078, 088
Неконтролируемая строка формата134
Небезопасное использование этого в конструкторе670
Массив вверх, используемый в арифметике указателя119, 843
Использование неисправного или рискованного алгоритма шифрования327
Использование алгоритма шифрования с недостаточным размером ключа326
Использование версии OpenSSL с Heartbleed327, 788
Использование опасной функции242, 676
Использование просроченного адреса стека825
Использование строки после окончания времени существования416, 664
Использование уникального указателя после окончания времени существования416, 664
Неправильный тип аргументов для функции форматирования686
Расширение внешней сущности XML611
Смещение массива, используемое перед проверкой диапазона120, 125
Обход проверки подлинности путем спуфингов290
boost::asio TLS settings misconfiguration326
boost::asio использование устаревшего жесткокодированного протокола327
Сертификат не проверен295
Конференц-связь с результатом сертификата295
Хранилище конфиденциальной информации в базе данных SQLite313
Хранилище конфиденциальной информации в буфере с помощью Cleartext312
Запятая перед вводом в заблуждение отступов1078, 670
Файл создан без ограничения разрешений732
Неправильное использование оператора not480
Неправильная обработка ошибок выделения570, 252, 755
Недопустимая разыменовка указателя119, 125, 193, 787
Итератор для контейнера с истекшим сроком действия416, 664
Отсутствует проверка возвращаемого значения для функции "scanf", например252, 253
Строка формата без констант134
Недостаточно памяти, выделенной для массива типа указателя131, 122
Недостаточно памяти, выделенной для типа указателя131, 122
Имя приложения NULL с незаквиченным путем при вызове CreateProcess428
Переполнение неконтролируемого размера выделения190, 789
Переполнение записи119, 131
Возможно, неправильный размер буфера в строковой копии676, 119, 251
Потенциальное воздействие конфиденциальных системных данных на несанкционированную сферу управления497
Потенциально переполнение записи120, 787, 805
Потенциально перезавершивание записи с плавающей запятой в строковое преобразование120, 787, 805
Потенциально неинициализированная локальная переменная665, 457
Потенциально небезопасный вызов strncat788, 676, 119, 251
Потенциально небезопасное использование strcat676, 120, 251
Подозрительное использование sizeof467
Подозрительное масштабирование указателя468
Подозрительное масштабирование указателя на пустоту468
Путаница типов843
Необвязанная запись120, 787, 805
Неконтролируемые данные, используемые в выражении пути022, 023, 036, 073
Неконтролируемая операция процесса114
Выражение разницы без знака по сравнению с нулем191
Нетерминированный вызов вариативного вызова121
Ненадежные входные данные для условия807
Использование потенциально опасной функции676