Уязвимости в системных функциях, связанных с виртуальной памятью, могут возникать по разным причинам, среди них:
- Ошибки при работе с динамической памятью. ru.wikipedia.org Неправильное распоряжение динамически выделяемой памятью и указателями может повлечь за собой ошибки времени исполнения. ru.wikipedia.org
- Висячий указатель. ru.wikipedia.org Возникает, когда объект был удалён, но значение указателя не изменили на нулевое. ru.wikipedia.org В таком случае указатель всё ещё указывает на область памяти, где находился удалённый объект. ru.wikipedia.org
- Неинициализированные переменные. ru.ruwiki.ru Переменные, которые были объявлены, но не установлены в какое-либо значение, известное до времени их использования. ru.ruwiki.ru
- Ошибки нехватки памяти. ru.wikipedia.org ru.ruwiki.ru Возникают при недостатке количества доступной памяти для данной программы. ru.wikipedia.org ru.ruwiki.ru
- Использование различных менеджеров памяти. ru.ruwiki.ru Ошибка заключается в разрыве связки аллокатор-деаллокатор памяти и использовании различных средств для работы с одним сегментом. ru.ruwiki.ru
- Потеря указателя. ru.ruwiki.ru Происходит, когда адрес выделенного фрагмента памяти теряется при перезаписи его новым значением, которое ссылается на другую область памяти. ru.ruwiki.ru
Кроме того, сама по себе виртуализация не защищает, так как операционная система, установленная на виртуальную машину, обладает теми же уязвимостями, что и локальная ОС. www.kaspersky.ru
Чтобы избежать ошибок, в разработке программного обеспечения существует концепция безопасности доступа к памяти, которая направлена на предотвращение попыток использовать или модифицировать данные, если это не было разрешено программистом. ru.wikipedia.org