Атака на системы online-компиляции через манипуляцию с заголовочными файлами

Hanno Böck, автор проекта fuzzing-project.org, обратил внимание на уязвимость интерфейсов интерактивной компиляции, допускающих обработку внешнего кода на языке Си. При указании произвольного пути в директиве «#include» ошибка компиляции включает содержимое файла, который не удалось скомпилировать.

Например, подставив в одном из online-сервисов в код «#include </etc/shadow>» на выходе удалось получить хэш пароля пользователя root из файла /etc/shadow, что также свидетельствует о том, что web-сервис выполняется с правами root и запускает команды компиляции под пользователем root (не исключено, что при компиляции использовался изолированный контейнер, но запуск с правами root в контейнере также является проблемой). Проблемный сервис, в котором удалось воспроизвести проблему, пока не афишируется. Попытки открытия файлов в псевдо ФС /proc не увенчались успехом так как GCC воспринимает их как пустые файлы, но открытие файлов из /sys работает.

Источник: opennet.ru

Добавить комментарий