Rate this post

Современные веб-приложения, в особенности микросервисы, активно пользуются программными объектами, которые в разные моменты времени надо либо просто хранить, либо обрабатывать, либо передавать по сети. Сериализация — это преобразование экземпляра обьекта (например, объектов XML или JSON) в битовую последовательность. Десериализация — восстановление первоначального состояния структуры данных из битовой последовательности. В веб-приложениях сериализованные битовые потоки перемещаются между браузером и серверами. Они передаются по HTTP(S) и могут «расчленяться» на клиентской стороне. Киберзлоумышленник, узнав структуру передаваемых в битовом потоке обьектов и вооружившись списком уязвимостей скриптовых движков, под управлением которых работают веб-приложения, может модифицировать эти битовые потоки, чтобы эксплуатировать данные уязвимости.nnТак, например, поскольку при парсинге этого битового потока скриптовый движок в некоторых случаях задействует ресурсы локальной операционной системы, киберзлоумыш-леник, эксплуатируя небезопасную десериализацию, может делать инъекции команд операционной системы. Другой пример эксплуатации небезопасной десериализации — эскалация привилегий. Битовый поток сериализованного обьекта может содержать токены авторизации или ссылки на ACL-список (Access Control List; контрольный список доступа). Киберзлоумышленник может извлечь эту информацию и с ее помощью получить более высокие права в атакуемой им системе.nnНебезопасная десериализация стала в особенности актуальна с 2016 года, который безопасники окрестили годом апокалипсиса Java-десериализации. Этот апокалипсис случился в результате публикации обновленной версии RCE-атаки: Apache Commons Collection Remote Code Execution. Хотя атаки на Java-десериализацию были известны и до этого, демонстрация обновленной версии RCE-атаки вывела последствия от небезопасной десериализации на новый уровень.nnВ качестве эффективной контрмеры было предложено полностью отказаться от Java-десериализации и взять на вооружение более безопасный формат: JSON. Однако анализ наиболее популярных JSON-парсеров для .NET и Java показывает, что их механизм десериализации также уязвим для упомянутой RCE-атаки.