Коллеги из братского ТюмГУ сообщили об обнаруженной уязвимости в компоненте pgJDBC. Собственно с процессом обновления возникли вопросы, на которые мы совместными усилиями получили ответы.
Шатно, без пересборки при установке из репозиториев и DSpace 5 и DSpace 6 видимо собраны посредством JAVA 7 и имеют в своём составе компонент pgJDBC версии 42.2.1 в файле postgresql-42.2.1.jre7.jar. Как видно из описания уязвимости, проблема решена в версии 42.2.28, а последняя версия на момент написания данных строк — 42.2.29 (прямая ссылка на локальную копию и на файл на сайте разработчика).
Не очевидно, эксплуатируется ли данная уязвимость в DSpace, но раз есть возможность её исправить — давайте исправим. Ниже будет показан процесс исправления на примере инсталляции DSpace 5.11 в среде Windows. Для DSpace 6.х и Linux особых различий нет. И так, сначала посмотрим что у нас есть на старте:
Первой командой узнаём текущую версию компонента. Понятно, что пути у всех свои, а в других OS команда dir изменится на ls и ключи будут другие:
Второй командой посмотрим версию Java. Как видим, не смотря на Java8, библиотека подтянулась с подстрокой jre7 в названии. Думаю, это из-за того что пересборки DSpace в процессе установки не было:
Третя команда демонстрирует нам состояние СУБД, версию драйвера и соответствие версии базы данных. Всё совпадает:
После проверки исходного состояния нам остаётся только:
- Скачать со страницы компонент для Java 7 для преемственности (на момент написания текста это был postgresql-42.2.29.jre7.jar)
- Сделать резервную копию файла /dspace/lib/postgresql-42.2.1.jre7.jar
- Остановить Tomcat
- Удалить файл /dspace/lib/postgresql-42.2.1.jre7.jar
- Поместить файл ostgresql-42.2.29.jre7.jar по адресу /dspace/lib/ostgresql-42.2.29.jre7.jar
- Убедиться что нет проблем с правами (особенно актуально для Linux)
- Запустить Tomcat
- Визуально убедиться в старте сервиса
После успешного запуска сервиса можно проверить изменения тем же набором команд, что были описаны выше.
Первой командой узнаём текущую версию компонента. Фиксируем изменение версии:
Второй командой посмотрим версию Java. Тут изменений быть не должно:
Третя команда демонстрирует нам состояние СУБД, обновленную версию драйвера и соответствие версии базы данных. Всё совпадает:
Те же кто предпочитает православному UNIX WAY и болтосвару суровую документированную ынтырпрайзность, могут посмотреть куда-то сюда (но это не точно) и пересобрать DSpace.