В Ruby обнаружен баг, связанный с сериализацией
Новости
Его главной проблемой является то, что поддержка сериализации и десериализации в Ruby встроена в сам язык, а не в сторонние библиотеки.
949 открытий952 показов
Проблема сериализации и десериализации объектов добралась и до языка программирования Ruby. Баг обнаружили специалисты из компании Elttam, Австралия.
Суть проблемы
Сериализацией в программировании называется перевод структуры данных в любой другой формат, более удобный для хранения. Обратной операцией является операция десериализации — восстановление начального состояния структуры данных из битовой последовательности. Возможность этого встроена в Ruby и, как оказалось, она позволяет злоумышленникам использовать нативные механизмы языка для осуществления своих атак.
Исследователи из Elttam добавили к отчёту proof-of-concept эксплоит, который это реализует. Проблема состоит в том, что эти механизмы встроены в сам язык, а именно в версии от 2.0 до 2.5. Также предполагается, что возможно доработать методы атак и под более старые версии. Кроме того, в альтернативных реализациях Ruby под названием JRuby и Rubinius потенциально могут быть сходные проблемы.
Другие языки
Уязвимости сериализации и десериализации объектов есть и в других языках. В 2015 году их нашли в библиотеке FoxGlove Security для Java. В 2017 году похожую проблему обнаружили в библиотеках .NET, а в 2018 году — в PHP. В последнем случае это затрагивает движок WordPress. Зачастую проблемы решаются выпуском патчей, хотя нередко баги сложно выявить. При этом нужно понимать, что сериализация и десериализация данных сама по себе ослабляет их защиту.
В мае 2018 года Oracle сообщила, что собирается убрать из Java встроенную поддержку сериализации. Вместо неё будет использован компактный фреймворк.
949 открытий952 показов