Pull to refresh

Comments 3

Поправьте, если не прав.


Уязвимость существует если специально при десериализации задано
Settings.TypeNameHandling <> TypeNameHandling.None
и нет проверки типов?
Если так, то это стоило и бы уточнить, потому что по умолчанию значение None.
(Из-за заголовка я сделал другой вывод)

Мне кажется основная идея в том что сериализация работает не так просто как мы думаем (или «не думаем» на автопилоте — доверяясь авторам библиотек). Особенно, если десериализатор поддерживает полиморфизм и может поднимать «произвольные» типы которые, в свою очередь, могут делать что-то эдакое при десереализации, вплоть до выполнения какого-то кода; такие типы есть среди стандартных и могут реализовать «безобидные» интерфейс типа IDictionary.


Уязвимый код может выглядеть на первый взгляд невинно: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2300?view=vs-2019


Вот тут больше ссылок для чтения:
https://github.com/pwntester/ysoserial.net/blob/master/README.md#additional-reading

Ах да. Эта статья про конкретный учебный взлом, а не про десериализацию в целом. Это, впрочем, не до конца очевидно из заголовка. Автор мб подправит, хотя я б оставил как есть — мне был не очень интересен конкретный взлом а вот статьи про десериализацию (достаются по ссылкам) зацепили.

Sign up to leave a comment.

Articles