Критическая уязвимость в Jenkins может привести к утечкам информации

19 августа 2020 г. 10:52
 6647

Команда Jenkins обнародовала информацию, касающуюся критической уязвимости веб-сервера Jetty, которая может привести к повреждению памяти и раскрытию конфиденциальной информации.

Команда Jenkins, популярного продукта с открытым исходным кодом для автоматизации разработки, обнародовала в понедельник информацию, касающуюся критической уязвимости веб-сервера Jetty, которая может привести к повреждению памяти и раскрытию конфиденциальной информации.

Дефект CVE-2019-17638 имеет рейтинг CVSS 9.4 и оказывает влияние на Eclipse Jetty версий 9.4.27.v20200227 до 9.4.29.v20200521. Это полнофункциональный инструмент, предоставляющий Java HTTP-сервер и веб-контейнер для использования в программных фреймворках.

«Jenkins содержит Winstone-Jetty, обертку вокруг Jetty, используемую в качестве HTTP и servlet-сервера с применением java -jar jenkins.war. Таким образом, Jenkins запускается при использовании любого из инсталляторов или пакетов, но не при запуске с использованием контейнеров для сервлетов, таких как Tomcat», - сообщает Команда Jenkins.

«Уязвимость может позволить неаутентифицированным злоумышленникам получить заголовки HTTP-ответов, которые могут содержать конфиденциальные данные, предназначенные для другого пользователя».

Влияющие на Jetty и Jenkins Core баги, по-видимому, были допущены в Jetty версии 9.4.27, которая добавила механизм для обработки больших заголовков ответа HTTP и предотвращения переполнения буфера.

«Проблема возникала в случае переполнения буфера. Мы освободили заголовочный буфер, но не обнулили поле», - сообщил руководитель проекта Jetty Грег Уилкинс.

Чтобы справиться с этим, Jetty вызывает исключение и отображает ошибку HTTP 431, которая приводит к тому, что заголовки HTTP-ответа дважды освобождаются в буферный пул, что, в свою очередь, приводит к повреждению памяти и раскрытию информации.

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

Иначе говоря, в то время, как поток 1 собирается использовать ByteBuffer для записи данных ответа 1, поток 2 заполняет ByteBuffer данными ответа 2. Затем поток 1 переходит к записи буфера, который теперь содержит данные ответа 2. В результате клиент 1, который выдал запрос 1 и ожидает получения ответов, увидит ответ 2, в котором могут содержаться конфиденциальные данные, принадлежащие клиенту 2.

Повреждение памяти позволило клиентам перемещаться между сессиями, тем самым имея перекрестный доступ, так как куки-файлы аутентификации из ответа одного пользователя посылались другому пользователю, тем самым позволяя пользователю A перепрыгнуть в сессию пользователя Б.

После раскрытия уязвимость была устранена в Jetty 9.4.30.v20200611, выпущенном в прошлом месяце. Компания Jenkins, которая использует Jetty через интерфейс командной строки под названием Winstone, исправила ошибку в Jenkins 2.243 и Jenkins LTS 2.235.5, выпущенных 17.08.2020.

Пользователям Jenkins рекомендуется срочно обновить свое программное обеспечение до последней версии для исправления дефекта повреждения буфера.

 

Перевод сделан со статьи https://thehackernews.com/