Неопределённое поведение может негативно повлиять на безопасность программного обеспечения, так как оно может привести к появлению уязвимостей. 15
Некоторые примеры такого влияния:
- Аварийное завершение работы программы. 1 Неопределённое поведение может вызвать сбои, которые трудно обнаружить: бесшумную потерю данных и выдачу неверных результатов. 1
- Утечка конфиденциальных данных. 4 Например, если в ходе оптимизации компилятор удаляет операции очистки массива, это может привести к утечке данных. 4
- Появление эксплуатируемых уязвимостей. 4 Это происходит, когда компилятор удаляет проверки, которые были в исходном коде, например, проверку указателя. 4
Неопределённое поведение особенно опасно, когда код работает с недоверенными данными. 3
Для снижения рисков, связанных с неопределённым поведением, используют безопасные компиляторы, которые обеспечивают отсутствие уязвимостей в программу во время оптимизации. 5