Написать пост

В Ruby обнаружен баг, связанный с сериализацией

Аватар Андрей Галадей

Его главной проблемой является то, что поддержка сериализации и десериализации в Ruby встроена в сам язык, а не в сторонние библиотеки.

Обложка поста В Ruby обнаружен баг, связанный с сериализацией

Проблема сериализации и десериализации объектов добралась и до языка программирования 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 открытий949 показов