В Java проявилась уязвимость при обработке чисел с плавающей запятой

Несколько недель назад в интерпретаторе PHP была исправлена уязвимость, позволяющая вызвать зависание процесса при выполнении операций c некоторыми числами с плавающей запятой. Уязвимость проявлялась только при использовании в процессе преобразования чисел x87 FPU-регистров. Как оказалось, данной проблеме подвержен не только интерпретатор PHP, но и виртуальная машина Java.

Например, чтобы вызвать бесконечное зацикливание достаточно обеспечить выполнение примерно такого кода «double d = 2.2250738585072012e-308; System.out.println(«Value: » + d);». В реальных условиях, эксплуатировать данную уязвимость можно без привлечения определенных Java-апплетов: достаточно отправить на большинство серверов приложений специальный HTTP-запрос, указав проблемное число в заголовке «Accept-Language» или «Accept», например: «Accept: audio/*; q=магическое число, audio/basic».

Примечательно, что компания Sun была поставлена в известность о данной проблеме в 2000 году, после чего извещалась еще несколько раз. Серьезность уязвимости была признана только после эскалации проблемы после случая с PHP. Выход официального обновления Java SE запланирован на 15 февраля, до этого момента можно использовать hotfix или патч к OpenJDK.

Дополнительно всплыл еще один случай с затягиванием выпуска исправления. В 2008 году в Sun было направлено сообщение (и получено подтверждение о его получении) о наличии уязвимости в коде по обеспечению работы диалога JFileChooser. Уязвимость до сих пор не исправлена и позволяет организовать в Java-апплете переименование файлов без каких-либо действий со стороны пользователя.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.