Уязвимость реализации расширенных классов Java-фреймворка для создания и оптимизации браузерных приложений Google Web Toolkit (GWT) связана с недостатками механизма десериализации при использовании стандарта кодирования Base64. Эксплуатация уязвимости может позволить нарушителю, действующему удалённо, получить доступ на чтение, изменение или удаление данных, выполнить произвольный код или вызвать отказ в обслуживании
Использование рекомендаций:
https://github.com/gwtproject/gwt/commit/2efa9c60d095dc4410cbca7563a34f9758cf80b5
Компенсирующие меры:
1. Рекомендуется не использовать расширенные классы в кодовой базе:
- удалите javax.persistence.Entity (@Entity) аннотацию из определений классов, которые ее используют;
- удалите javax.jdo.annotations.PersistenceCapable аннотацию из определений классов, которые ее используют, или установите для ее свойства detachable значение false.
2. Следует добавить криптографические подписи (с использованием ключа, неизвестного клиенту) к сериализованным объектам Java и добавить шифрование, чтобы предотвратить раскрытие состояния на стороне сервера в данных объекта, отправляемых в клиентские системы;
3. Рекомендуется применить фильтрацию, которая блокирует запросы, содержащие длинные (или подозрительные) сериализованные объекты Java. Это может быть реализовано как код фильтрации, применяемый сервером веб-приложений к запросам перед их передачей в GWT, правила брандмауэра веб-приложений (WAF) или конфигурация самой библиотеки GWT;
4. Для сложных приложений, написанных с использованием GWT, владельцы приложений могут реализовать еще один уровень аутентификации вне самого приложения.
| Балл | 10 — критическая опасность |