CyberGlossary

Уязвимости

Небезопасная десериализация

Также известно как: Небезопасная сериализация, Уязвимость десериализации объектов

Определение

Уязвимость, при которой приложение десериализует недоверенные данные, позволяя атакующему создавать произвольные объекты и часто получать удалённое выполнение кода.

При преобразовании сериализованных данных (бинарные форматы Java/PHP/Python/.NET, YAML, JSON с метаданными типов) обратно в объекты десериализатор может вызывать конструкторы, магические методы или цепочки гаджетов. Получая недоверенный ввод, атакующий формирует payload, который во время десериализации вызывает опасные действия — RCE, обход аутентификации, запись файлов, DoS. Цепочки гаджетов в Apache Commons Collections (Java), Pickle (Python) и .NET BinaryFormatter становились причиной критических инцидентов. Защита: не десериализовать недоверенные данные, использовать форматы без восстановления типов (чистый JSON со схемами), подписывать сериализованные данные, allow-list типов, своевременно обновлять рантаймы.

Примеры

  • Java-приложение десериализует сессионную cookie с Commons Collections в classpath — RCE.
  • Python-сервис выполняет pickle.loads на байтах, контролируемых пользователем.

Связанные термины