Эксплойты безопасности в «безопасных» языках

Я только что закончил читать Безопасное кодирование на C и C ++ Брайана Сикорда, который работает в CERT .

В целом, это Это отличная книга, и я рекомендую ее любому программисту, который ее еще не читал. После прочтения мне пришло в голову, что для всех различных типов уязвимостей безопасности (таких как внедрение кода эксплойта, переполнение буфера, переполнение целых чисел, уязвимости форматирования строк и т. Д.) Каждая дыра в безопасности сводится к одному: возможность доступа к адресу памяти, который не ограничен буфером, который был законно выделен процессом.

Способность внедрять вредоносный код или перенаправлять логику программы полностью зависит от возможности доступа к адресам памяти, которые выпадают

11134396] вне законно распределенных буферов. Но на таком языке, как Java, это просто невозможно. Худшее, что может произойти, это то, что программа завершится с исключением ArrayIndexOutOfBoundsException , что приводит к отказу в обслуживании.

Так возможны ли какие-либо уязвимости безопасности в «безопасных» языках, таких как Java, где недопустимый доступ к памяти невозможен? (Я использую здесь в качестве примера Java, но на самом деле мне интересно узнать об уязвимостях безопасности на любом языке, который предотвращает недействительный доступ к памяти.)

11
задан jschmier 17 February 2011 в 19:36
поделиться