При включенной внешней сущности XML (XXE) можно создать вредоносный XML-файл, как показано ниже, и прочитать содержимое произвольного файла на компьютере. Неудивительно, что атаки XXE входят в топ-10 уязвимостей OWASP. Библиотеки Java XML особенно уязвимы для внедрения XXE, поскольку большинство анализаторов XML по умолчанию имеют включенные внешние объекты.
]>&xxe Bohemian Rhapsody A Night at the Opera
Наивная реализация обработчика по умолчанию и синтаксического анализатора Java SAX, подобная приведенной ниже, анализирует этот XML-файл и раскрывает содержимое файла passwd. В качестве основного примера здесь используется синтаксический анализатор Java SAX, но другие анализаторы, такие как DocumentBuilder и DOM4J, имеют аналогичное поведение по умолчанию.
SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { public void startElement(String uri, String localName,String qName,Attributes attributes) throws SAXException { System.out.println(qName); } public void characters(char ch[], int start, int length) throws SAXException { System.out.println(new String(ch, start, length)); } };
Изменение настроек по умолчанию для запрета внешних объектов и типов документов для xerces 1 или xerces 2 , соответственно, предотвращает подобные атаки.
... SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); factory.setFeature("https://xml.org/sax/features/external-general-entities", false); saxParser.getXMLReader().setFeature("https://xml.org/sax/features/external-general-entities", false); factory.setFeature("https://apache.org/xml/features/disallow-doctype-decl", true); ...
Для получения дополнительной практической информации о предотвращении вредоносной инъекции XXE, пожалуйста, ознакомьтесь со шпаргалкой OWASP XXE
Это был всего лишь 1 из 10 рекомендаций по безопасности Java. Взгляните на полные 10 и простые доступные для печати одностраничные
Оригинал: “https://dev.to/brianverm/configure-your-java-xml-parsers-to-prevent-xxe-213c”