История изменений
Исправление
MiniRoboDancer,
(текущая версия)
:
Выход за пределы массива, например, в C отследить в общем случае сложно. Только всякими костылями типа полей с INT3, и то без гарантий. Жаба сама это отслеживает и бросает экспешн. А ведь именно эта ошибка, дающая возможность выполнения произвольного кода — одна из самых рапространных причин уязвимостей в продуктах на C. Её можно избегать, да, и это делается, иначе частота обнаружения подобных уязвимостей была бы на пару порядков больше — но человеческий фактор никто не отменял. Вообще, одна из основных проблем C и вообще нативщины — возможность обратиться к произвольному адресу. Java её не предоставляет — только через уязвимости в JVM, примерно о чём, собственно, и говорит Lavos. Но дыру в конкретной реализации JVM найти и залатать легче, чем в сотнях различных программных продуктов. Другой вопрос, что оперативно залатать эту дыру, с учётом сфер применения Java, не всегда возможно. Например, на каком-то поколении фичерфонов SE с AOT-компиляцией взлом доступа к системной ФС (аналог джейлбрейка) осуществлялся путём установки Java-приложения и замены его прекомпиленого бинаря специально подготовленым. Строго говоря, это не уязвимость JVM (в данном случае, точнее, KVM, ибо микрожаба), ибо для подмены бинаря тоже требуется хак, но и таковая вполне возможна, дыр в JRE, особенно шиндовом, было полно, и сейчас находятся. Сам когда-то был свидетелем тихой установки вируса через Java-плагин — если бы не сидел на жопорезе и не пялился посему постоянно в монитор активности Safari — даже не заметил бы.
Исходная версия
MiniRoboDancer,
:
Выход за пределы массива, например, в C отследить в общем случае сложно. Только всякими костылями типа полей с INT3, и то без гарантий. Жаба сама это отслеживает и бросает экспешн. А ведь именно эта ошибка, дающая возможность выполнения произвольного кода — одна из самых рапространных причин уязвимостей в продуктах на C. Её можно избегать, да, и это делается, иначе частота обнаружения подобных уязвимостей была бы на пару порядков больше — но человеческий фактор никто не отменял. Вообще, одна из основных проблем C и вообще нативщины — возможность обратиться к произвольному адресу. Java её не предоставляет — только через уязвимости в JVM, примерно о чём, собственно, и говорит Lavos. Но дыру в конкретной реализации JVM найти и залатать легче, чем в сотнях различных программных продуктов. Другой вопрос, что оперативно залатать эту дыру, с учётом сфер применения Java, не всегда возможно. Например, на каком-то поколении фичерфонов SE с AOT-компиляцией взлом доступа к системной ФС (аналог джейлбрейка) осуществлялся путём установки Java-приложения и замены его прекомпиленого бинаря специально подготовленым. Строго говоря, это не уязвимость JVM (в данном случае, точнее, KVM, ибо микрожаба), ибо для подмены бинаря тоже требуется хак, но и таковая вполне возможна, дыр в JRE, было полно, и сейчас находятся. Сам когда-то был свидетелем тихой установки вируса через Java-плагин — если бы не сидел на жопорезе и не пялился посему постоянно в монитор активности Safari — даже не заметил бы.