Чувствительные функции, вызванные, не проверяя на неожиданные возвращаемые значения и ошибки
Этот дефект происходит, когда вы вызываете чувствительные стандартные функции, которые возвращают информацию о возможных ошибках, и вы выполняете одно из следующих действий:
Проигнорируйте возвращаемое значение.
Вы просто не присваиваете возвращаемое значение переменной, или явным образом бросаете возвращаемое значение к void
.
Используйте выход от функции (возвращаемое значение или аргумент, переданный ссылкой), не тестируя возвращаемое значение на ошибки.
Средство проверки рассматривает функцию как чувствительную, если вызов функции подвержен отказу из-за причин, таких как:
Исчерпанные системные ресурсы (например, при выделении ресурсов).
Измененные привилегии или полномочия.
Испорченные источники при чтении, при записи или преобразовании данных из внешних источников.
Неподдерживаемые функции несмотря на существующий API.
Средство проверки только рассматривает функции, где возвращаемое значение указывает если функция, завершенная без ошибок.
Некоторые из этих функций могут выполнить критические задачи, такие как:
Установите привилегии (например, setuid
)
Создайте тюрьму (например, chroot
)
Создайте процесс (например, fork
)
Создайте поток (например, pthread_create
)
Заблокируйте или разблокируйте взаимное исключение (например, pthread_mutex_lock
)
Заблокируйте или разблокируйте сегменты памяти (например, mlock
)
Если вы не проверяете возвращаемое значение функций, которые выполняют чувствительные задачи и указывают на информацию об ошибке через их возвращаемые значения, ваша программа может неожиданно вести себя. Ошибки от этих функций могут распространить в программе, вызывающей неправильный выход, уязвимости системы обеспечения безопасности, и возможно системные отказы.
Прежде, чем продолжить программу, протестируйте возвращаемое значение критических чувствительных функций.
Для чувствительных функций, которые не очень важны, можно явным образом проигнорировать возвращаемое значение путем кастинга функции к void
. Polyspace® не повышает этот дефект для чувствительного броска функций, чтобы освободить. Это разрешение не принято для критических чувствительных функций, потому что они выполняют более уязвимые задачи.
Группа: безопасность |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки: RETURN_NOT_CHECKED |
Удар: высоко |
ID CWE: 252, 253, 690, 754 |