Общее Перечисление Слабости (CWE™) является словарем типов слабости стандартного программного обеспечения, которые могут произойти в программной архитектуре, проекте, коде или реализации. Эти слабые места могут привести к уязвимостям системы обеспечения безопасности.
Словарь CWE присваивает уникальный идентификатор каждому типу слабости программного обеспечения. Эти идентификаторы служат общим языком для описания слабых мест безопасности программного обеспечения и стандарта для средств обеспечения безопасности программного обеспечения, предназначающихся для этих слабых мест. Для получения дополнительной информации смотрите Общее Перечисление Слабости.
Результаты Polyspace® Bug Finder™ могут быть сопоставлены с идентификаторами CWE. Используя Средство поиска Ошибки, можно проверять и документ, если программному обеспечению перечислили слабые места в словаре CWE. Средство поиска ошибки поддерживает следующие аспекты Программы Совместимости и Эффективности CWE:
Доступный для поиска CWE: Поскольку каждый поддержал идентификатор CWE, вы видите все экземпляры в своем коде, которые имеют слабые места, соответствующие идентификатору.
CWE Выход: Для каждого дефекта Polyspace Bug Finder:
Можно просмотреть связанный идентификатор CWE.
Можно сообщить о связанном идентификаторе CWE.
Результаты Средства поиска ошибки сопоставлены с идентификаторами CWE (идентификаторы). Используя результаты Средства поиска Ошибки, можно оценить код против стандарта CWE. Например, CWE ID 119 (Неподходящее ограничение операций в границах буфера памяти) сопоставляет с дефектами Средства поиска Ошибки, Array access out of bounds и Pointer access out of bounds.
Для получения дополнительной информации о Программе Совместимости и Эффективности CWE см. Совместимость CWE.
Используйте следующий рабочий процесс, если вы хотите сфокусировать свой анализ Средства поиска Ошибки на стандарте CWE.
Анализ: Проверяйте свой код только на те дефекты Средства поиска Ошибки, которые соответствуют стандарту. Используйте опцию Find defects (-checkers)
со значением CWE
.
Результаты: Если вы включаете только дефектные средства проверки, соответствующие стандарту CWE, вы видите только дефекты, которые соответствуют стандарту. Зафиксируйте или выровняйте по ширине каждый дефект.
Наряду с дефектами, вы видите идентификаторы CWE, сопоставленные с каждым дефектом в столбце CWE ID на панели Results List. Если столбец не включен по умолчанию, щелкните правой кнопкой по любому заголовку столбца и выберите CWE ID.
Отчет: Когда вы генерируете отчет, выбираете SecurityCWE
шаблон адаптируется для стандарта CWE. Отчет показывает идентификаторы CWE, соответствующие каждому результату.
В следующей таблице перечислены идентификаторы CWE (версия 2.8), обращенная Polyspace Bug Finder с ее соответствующими дефектными средствами проверки. Используя средства проверки дефекта Polyspace Bug Finder, можно проверять на 133 идентификатора CWE.
Существует три типа идентификаторов CWE: Класс, Основа и Вариант. Идентификаторы Класса типа задают слабые места безопасности на абстрактном уровне, независимом от определенного языка или технологии, в то время как идентификаторы Основы типа и Варианта более конкретны. С другой стороны, результаты Polyspace Bug Finder спроектированы, чтобы быть конкретными так, чтобы пользователи могли иметь точный диагноз дефекта в их коде и изучить дефект быстро. Поэтому:
Результаты Средства поиска Ошибки сопоставлены с определенными идентификаторами Основы типа и Варианта, а не типовыми идентификаторами Класса типа.
Только, когда результат покрывает больше земли, чем определенный идентификатор CWE является результатом, сопоставленным с его более общим родительским типом. Например, дефектное средство проверки, Array access out of bounds покрывает много видов переполнения буфера, в то время как CWE-788 относится только к “доступу Ячейки памяти После Конца Буфера”. Поэтому дефектное средство проверки сопоставлено со своим родительским элементом, CWE-119, который относится к “Неподходящему Ограничению Операций в Границах Буфера памяти”. Однако, чтобы сохранить отображение точным, попытка предпринята, чтобы сопоставить с определенными идентификаторами CWE.
Часто, больше чем один результат Средства поиска Ошибки сопоставлен с определенным идентификатором CWE.
Например, CWE-908 относится к “Использованию Неинициализированного Ресурса”. К подсветкам определенные виды неинициализированных ресурсов Средство поиска Ошибки имеет три различных средства проверки: Member not initialized in constructor, Non-initialized pointer и Non-initialized variable.
Для отображения с подмножествами CWE-658 и CWE-659, смотрите Отображение Между CWE-658 или 659 и Результатами Polyspace.
ID CWE | Описание ID CWE | Средство проверки дефекта Polyspace Bug Finder |
---|---|---|
15 | Внешнее управление параметра настройки системы или параметра конфигурации | |
20 | Неподходящий контроль ввода | |
22 | Неподходящее ограничение пути к ограниченной директории ('обход пути') | |
23 | Обход относительного пути | |
36 | Обход абсолютного пути | |
67 | Неправильное обращение Windows Device Names | |
77 | Неподходящая нейтрализация специальных элементов используется в команде | |
78 | Неподходящая нейтрализация специальных элементов используется в команде ОС | |
88 | Инжекция аргумента или модификация | |
114 | Управление процессом |
|
119 | Неподходящее ограничение операций в границах буфера памяти | |
120 | Буферная копия, не проверяя размер входа ('Классическое переполнение буфера') |
|
121 | Стековое переполнение буфера | |
122 | Основанное на куче переполнение буфера | |
124 | Буфер подписывает ('Недостаточное наполнение буфера') |
|
125 | За пределы читайте |
|
126 | Буфер зачитывался | |
127 | Буфер под чтением | |
128 | Всеобъемлющая ошибка |
|
129 | Неподходящая валидация индекса массива | |
130 | Неправильное обращение несоответствия параметра длины | |
131 | Неправильное вычисление buffer size |
|
134 | Неконтролируемая строка формата | |
135 | Неправильный расчет длины байтовой строки |
|
170 | Неподходящее пустое завершение | |
188 | Уверенность в размещении данных/памяти |
|
189 | Числовые ошибки |
|
190 | Целочисленное переполнение или перенос |
|
191 | Целочисленная потеря значимости (Переносятся или повторяются), |
|
192 | Целочисленная ошибка приведения |
|
194 | Неожиданное расширение знака | |
195 | Подписанный к ошибке преобразования без знака | |
196 | Без знака к ошибке преобразования со знаком | |
197 | Числовая ошибка усечения | |
198 | ||
226 | Уязвимая информация не очищена перед релизом | |
227 | Ненадледжащее исполнение контракта API |
|
240 | Неправильное обращение противоречивых структурных элементов | |
242 | Использование по сути опасной функции | |
243 | Создание chroot тюрьмы, не изменяя рабочую директорию | |
244 | Неподходящая очистка памяти кучи перед релизом | |
250 | Выполнение с ненужными привилегиями | |
251 | Часто неправильно используемый: управление последовательностью | |
252 | Возвращаемое значение непроверенное | |
253 | Неправильная проверка функционального возвращаемого значения |
|
273 | Неподходящая проверка на пропущенные привилегии | |
310 | Криптографические проблемы |
|
311 | Недостающее шифрование уязвимых данных | |
312 | Устройство хранения данных открытого текста уязвимой информации | |
316 | Устройство хранения данных открытого текста уязвимой информации в памяти | |
320 | Ошибки управления ключами | |
321 | Использование трудно закодированного криптографического ключа | |
325 | Пропавшие без вести потребовали криптографического шага |
|
326 | Несоответствующая сила шифрования |
|
327 | Использование поврежденного или опасного криптографического алгоритма |
|
328 | Обратимый односторонний хэш | |
329 | Не используя случайный IV с режимом CBC |
|
330 | Использование недостаточно случайных значений |
|
336 | Тот же seed в PRNG | |
337 | Предсказуемый seed в PRNG | |
338 | Использование криптографически слабого генератора псевдослучайного числа (PRNG) | |
353 | Пропавшие без вести поддержки проверки целостности | |
354 | Неподходящая валидация значения проверки целостности | |
362 | Параллельное выполнение с помощью совместно используемого ресурса с неподходящей синхронизацией ('Состояние состязания') | |
364 | Состояние состязания обработчика сигнала |
|
366 | Состояние состязания в потоке |
|
367 | Состояние состязания времени использования времени проверки (TOCTOU) | |
369 | Разделитесь на нуль |
|
372 | Неполное различие внутреннего состояния |
|
375 | Возврат изменяемого объекта недоверяемой вызывающей стороне | |
377 | Небезопасный временный файл | |
387 | Ошибки сигнала |
|
391 | Состояние ошибки непроверенное | |
398 | Индикатор плохого качества кода | |
401 | Неподходящий релиз памяти прежде, чем удалить последнюю ссылку | |
404 | Неподходящее завершение работы ресурса или релиз | |
413 | Неподходящая блокировка ресурса |
|
415 | Двойной свободный | |
416 | Используйте после свободный | |
426 | Недоверяемый путь поиска файлов | |
427 | Неконтролируемый элемент пути поиска файлов |
|
456 | Недостающая инициализация переменной | |
457 | Использование неинициализированной переменной | |
465 | Проблемы указателя | |
466 | Возвратитесь из значения указателя за пределами ожидаемой области значений | |
467 | Использование sizeof () на типе указателя | |
468 | Неправильное масштабирование указателя | |
469 | Использование вычитания указателя, чтобы определить размер |
|
471 | Модификация принятых - неизменяемые данные | |
474 | Использование функции с противоречивыми реализациями | |
475 | Неопределенное поведение для входа к API | |
476 | Нулевой указатель разыменовывает | |
477 | Использование устаревших функций | |
478 | Недостающий случай по умолчанию в операторе switch | |
479 | Использование обработчика сигнала неповторно используемой функции |
|
480 | Использование неправильного оператора | |
481 | Присвоение вместо сравнения | |
482 | Сравнение вместо присвоения | |
484 | Не использованный оператор завершения в переключателе | |
522 | Недостаточно защищенные учетные данные | |
532 | Информационное воздействие через файлы журнала | |
534 | Информационное воздействие через файлы журнала отладки | |
535 | Информационное воздействие через сообщение об ошибке интерпретатора | |
547 | Использование трудно закодированных, констант, важных для безопасности, | |
558 | Использование getlogin () в многопоточном приложении | |
560 | Использование umask () с аргументом chmod-стиля | |
561 | Мертвый код | |
562 | Возвратитесь из адреса переменной стека |
|
573 | Неподходящее следующее спецификации вызывающей стороной |
|
587 | Присвоение фиксированного адреса к указателю | |
590 | Свободный от памяти не на куче | |
606 | Неконтролируемое входное условие цикла for | |
628 | Вызов функции с неправильно заданными аргументами |
|
658 | Смотрите отображение между CWE-658 или 659 и результатами Polyspace. | |
659 | Смотрите отображение между CWE-658 или 659 и результатами Polyspace. | |
663 | Использование неповторно используемой функции в параллельном контексте |
|
664 | Неподходящее управление ресурса в течение его времени жизни |
|
665 | Неподходящая инициализация | |
666 | Операция на ресурсе в неправильной фазе времени жизни | |
667 | Неподходящая блокировка | |
672 | Операция на ресурсе после истечения или релиза | |
675 | Дублирующиеся операции на ресурсе | |
676 | Использование потенциально опасной функции | |
681 | Неправильное преобразование между числовыми типами | |
682 | Неправильное вычисление |
|
683 | Вызов функции с неправильным порядком аргументов | |
685 | Вызов функции с неправильным количеством аргументов |
|
686 | Вызов функции с неправильным типом аргумента |
|
687 | Вызов функции с неправильно заданным значением аргумента | |
690 | Возвращаемое значение непроверенное к нулевому указателю разыменовывает |
|
691 | Недостаточное управление потоком управления | |
693 | Отказ механизма защиты | |
696 | Неправильный порядок поведения | |
703 | Неподходящая проверка или обработка исключительных условий | |
704 | Неправильное преобразование типов или бросок |
|
705 | Неправильное определение объема потока управления | |
710 | Кодирование стандартного нарушения | |
732 | Неправильное присвоение разрешения для критического ресурса | |
754 | Неподходящая проверка на необычные или исключительные условия | |
755 | Неправильное обращение исключительных условий | |
758 | Уверенность в неопределенном, незаданном, или заданном реализацией поведении |
|
759 | Использование одностороннего хэша без соли | |
762 | Несовпадающие стандартные программы управления памятью | |
764 | Несколько блокировок критического ресурса | |
765 | Несколько разблокировали критического ресурса | |
767 | Доступ к критической частной переменной через открытый метод | |
770 | Выделение ресурсов без пределов или регулировки | |
772 | Недостающий релиз ресурса после эффективного времени жизни | |
780 | Использование rsa алгоритма без oaep | |
783 | Ошибка логики приоритета оператора |
|
785 | Использование манипуляции с путями функционирует без буфера максимального размера |
|
786 | Доступ ячейки памяти прежде запускается буфера | |
787 | За пределы запишите | |
789 | Неконтролируемое выделение памяти |
|
805 | Буферный доступ с неправильным значением длины | |
822 | Недоверяемый указатель разыменовывает | |
823 | Использование указателя из области значений возмещено | |
824 | Доступ неинициализированного указателя | |
825 | Указатель с истекшим сроком разыменовывает |
|
826 | Преждевременный релиз ресурса в течение ожидаемого времени жизни | |
828 | Обработчик сигнала с функциональностью, которая не асинхронно-безопасна |
|
832 | Разблокируйте ресурса, который не заблокирован | |
833 | Мертвая блокировка | |
843 | Доступ ресурса с помощью несовместимого типа ('Вводят беспорядок'), | |
872 | CERT C++ безопасный раздел кодирования 04 - Целые числа (INT) | |
873 | CERT C++ Безопасный Раздел Кодирования 05 - арифметика С плавающей точкой (FLP) | |
908 | Использование неинициализированного ресурса | |
910 | Использование дескриптора файла с истекшим сроком |
|
922 | Небезопасное устройство хранения данных уязвимой информации |
|