
Доказательство концепции уязвимости небезопасной десериализации pickle в Socket.IO
Уязвимость удалённого выполнения кода в python-socketio версиях до 5.14.0 позволяет злоумышленникам выполнять произвольный код Python посредством вредоносной десериализации pickle в мультисерверных развёртываниях, где злоумышленник предварительно получил доступ к очереди сообщений, которую серверы используют для внутренней связи. Подробный анализ этой уязвимости можно найти в GitHub Advisory.
В этой демонстрации задействованы три docker-контейнера:
В каталоге есть файл docker-compose.yml, который оркестрирует эти контейнеры. Для запуска демонстрации выполните следующую команду в каталоге, содержащем файл docker-compose.yml:
docker-compose up --build
Эта команда соберёт и запустит все три контейнера. Socket.IO сервер будет доступен по адресу http://localhost:5000, а клиент-злоумышленник автоматически попытается эксплуатировать уязвимость при запуске. Вы можете проверить каталог на наличие любых файлов, созданных эксплойтом в контейнере socketio_server.
evidence