Обновление среды выполнения Java по соображениям безопасности без перекомпиляции приложения с более новой версией Java - PullRequest
0 голосов
/ 13 февраля 2019

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

У меня вопрос, работает ли старыйвеб-приложение с более новой версией Java (без перекомпиляции приложения с более новой версией Java и без предположения, что это не приведет к ошибкам во время выполнения) собирается каким-либо существенным образом снизить риски безопасности более старой среды выполнения Java?

(я говорю конкретно о рисках безопасности, связанных с более старой средой выполнения Java, я осознаю тот факт, что переход на более новую версию Java не снизит риски безопасности, связанные с XSS и т. П.).

1 Ответ

0 голосов
/ 13 февраля 2019

Как правило, лучше обновлять среду выполнения Java.Конечно, если есть какие-либо риски безопасности, уменьшенные путем обновления, это зависит от приложения.«Привет, мир!»приложение, вероятно, не будет затронуто, так как оно не имеет требований безопасности, векторов атаки и не использует много компонентов времени выполнения (поверхность атаки).

Однако веб-приложение обычно выполняется на сервере приложений,который, вероятно, будет использовать Java для своей реализации TLS.Это означает, что вполне вероятно, что ваша реализация TLS не получала обновления в течение многих лет.Хотя Java имеет некоторые преимущества по сравнению с C, предотвращая некоторые атаки, другие уязвимости, безусловно, будут присутствовать.Например, крайне маловероятно, что Heartbleed станет проблемой, поскольку он зависит от переполнения буфера, и Java имеет внутреннюю защиту от них.Возможно, применимы оракулы дополнения PKCS # 1 v1.5, потому что это зависит от фактической реализации.

Поскольку сам исполняемый файл Java не особенно пронизан легкими в использовании ошибками, он в основном зависит от того, какая функциональность используется изклассы времени выполнения вашего сервера, библиотек и приложений (в этом порядке сервер имеет гораздо больше места).Обновите свою версию Java и ваш сервер + библиотеки.Некоторые служебные библиотеки могут иметь меньший приоритет в зависимости от их функциональности, но остаются бдительными.Вы не хотите иметь уязвимость, если, например, у Apache Commons Codec возникла проблема.

Еще важнее: создайте стратегию обновления и обновления для вашей системы и придерживайтесь ее.Объем тестирования зависит от того, нужно ли вам обновить или обновить вашу систему;при правильной реализации вы можете пойти на автоматическое тестирование обновлений и выполнить полный цикл тестирования на обновления.Надеемся, что библиотеки используют семантическое управление версиями, чтобы обновления можно было отличить от обновлений.


Если запуск на более новых версиях не приведет к ошибкам времени выполнения, зависит от приложения;По всей вероятности, этого не произойдет, если он будет построен с учетом переносимости Java.Однако возможно злоупотреблять языком Java до такой степени, что он потерпит неудачу.Например, я видел сбой приложения из одной среды выполнения в другую, который неправильно реализовал equals, пока этот элемент хранился в списке.

Для такого старого приложения я думаю, что настало время полного циклатестирования и, возможно, обзора кода, чтобы оценить, являются ли проблемы совместимости темой или нет.У меня были приложения Java 1.2, запущенные без помех, но, как уже говорилось, это зависит от того, как приложение было запрограммировано.Я бы, конечно, перекомпилировал классы (где это возможно) до последней версии, как из-за проблем совместимости, так и из-за проблем с производительностью.


Вы можете сначала перейти на Java 8, прежде чем переходить на Java 11 (оба варианта длинные).срок поддержки релизов).Java 8 - конец жизни, но вы можете сделать двойной шаг, потому что вы так далеко позади.Вероятно, эта версия Java 8 будет просто для краткого функционального теста.

Возможно, вам уже требуется лицензирование для вашей установки Java, но я бы позаботился о том, чтобы вы также охватывали все это на коммерческой основе.В Java 8 и 11 должно быть несколько вариантов, которые стоит изучить.

Обратите внимание, что Java 10 и выше является только 64-битной.Я видел 32-битные версии Java 10 от других поставщиков, но я бы не стал обновлять их до тех пор, пока не уйдете в другой угол.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...