Внедрение Java-байт-кода в XML для вредоносных целей - PullRequest
3 голосов
/ 17 июня 2011

Итак, я подумал, есть ли способ отправить XML, который содержал бы код в (байт-код), который будет непреднамеренно выполняться JVM. Я использую Java, поэтому я думаю, что не скомпилированный код не будет работать. Я думаю, мне нужно ввести байт-код в XML, чтобы обмануть JVM? Я хочу убедиться, что создаваемый мной веб-сервис безопасен. Я использую JAXB для сортировки и сортировки XML и Jersey в качестве обработчика веб-службы.

Ответы [ 3 ]

4 голосов
/ 17 июня 2011

Нечаянно? Я так не думаю.

Маршаллер JAXB собирается десериализовать значения XML в состояние данного объекта, но класс и его поведение будет зависеть от вас. Я не вижу отправки необработанного байт-кода в XML и выполнения каких-либо вредных действий.

Вы можете отправить объект JSON, который ваш Java-объект может выполнить с помощью Rhino, но это вряд ли случайно.

У вашей службы могут быть другие проблемы с безопасностью, но атака внедрения байт-кода Java не входит в их число.

Вы все равно должны проверять все данные, отправленные вам перед привязкой.

2 голосов
/ 17 июня 2011

О единственной связанной с XML уязвимости (я знаю о ней) являются «внешние сущности», вы можете прочитать об этом здесь . почти уверен, что в jdk обработка внешних сущностей отключена по умолчанию в наши дни.

1 голос
/ 17 июня 2011

XML - это данные, и маловероятно, что какой-либо получатель попытается их выполнить.

Но, конечно, некоторые словари XML используют данные, чтобы содержать то, что вы можете воспринимать как инструкции для выполнения действия, и получатель может затем быть обманутым в выполнении неуместных действий, которые вы можете считать безопаснымипроблема.Эта уязвимость не на уровне XML, а на уровне протокола приложения (словарный запас).Атака должна будет использовать инструкции, которые имеют смысл в контексте этого протокола, который, скорее всего, будет выглядеть как <employee action="delete"/>, чем что-то на уровне байт-кода.

...