The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

17.12.2019 10:45

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

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

  1. Главная ссылка к новости (https://blog.hboeck.de/archive...)
  2. OpenNews: Необдуманное исправление привело к неполному устранению уязвимости Spectre в ядре Linux
  3. OpenNews: Анализ использования фрагментов уязвимых библиотек в исполняемом коде
  4. OpenNews: Оптимизация кода компилятором может привести к появлению проблем безопасности в приложениях
  5. OpenNews: Дэниэл Бернштейн выступил с инициативой создания Си-компилятора для защищённого ПО
  6. OpenNews: Ошибка в GCC привела к игнорированию режима выявления проблем с форматированием строк
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: compile
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Ан (??), 21:53, 17/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Хехе. А вы всё про leftpad))).
     
     
  • 2.2, пох. (?), 21:56, 17/12/2019 [^] [^^] [^^^] [ответить]  
  • +9 +/
    но тут же наверняка докер в докере в докере, это же - надежно, любой девляпс подтвердит?!

     
     
  • 3.13, Аноним (13), 00:46, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Ещё как надёжно. Любой залётный хакер помрёт прежде чем успеет что-то сделать. Из-за смеха.
     
  • 3.23, Аноним (-), 11:16, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А чего потом делать с паролем рута в докере где нет ничего кроме сервиса компиляции? SSH там тоже нет! И вообще, можно скачать кучу образов контейнеров и виртуалок и изучать хэши паролей по вкусу. В многих авторы даже сообщают пароль, чтобы вообще зайти в этот образ можно было.
     
     
  • 4.26, Аноним (26), 13:57, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А чего потом делать с паролем рута в докере где нет ничего
    > кроме сервиса компиляции? SSH там тоже нет! И вообще, можно скачать
    > кучу образов контейнеров и виртуалок и изучать хэши паролей по вкусу.
    > В многих авторы даже сообщают пароль, чтобы вообще зайти в этот образ можно было.

    С каких это пор в слове "дыркер" появилась буква S и оно  стало "сикурной изоляцией"?
    https://www.infosecurity-magazine.com/news/researchers-public-poc-docker/
    > 20 NOV 2019 NEWS
    > Researchers Publish PoC for Docker Escape Bug

    https://www.opennet.ru/opennews/art.shtml?num=50765
    >  Уязвимость в Docker, позволяющая выбраться из контейнера
    > 29.05.2019 11:15

    https://www.opennet.ru/opennews/art.shtml?num=50130
    > Уязвимость в runc и LXC, затрагивающая Docker и другие системы контейнерной изоляции
    > 11.02.2019 23:26

    https://www.opennet.ru/opennews/art.shtml?num=45848
    > В Docker 1.12.6 устранена уязвимость, позволяющая выбраться из контейнера
    > 13.01.2017 11:28

     
     
  • 5.27, Онаним (?), 14:12, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Митрофанов, ты?
     
     
  • 6.28, Аноним (26), 14:23, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Митрофанов, ты?

    Когда нечего возразить по существу, спрыгни на дешевую демагогию?


     
  • 5.34, Аноним (-), 07:42, 19/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > С каких это пор в слове "дыркер" появилась буква S и оно  стало "сикурной изоляцией"?

    Конкретно leafpad запускал все это в виртуалке. Ограниченной по времени выполнения, после чего она сносится и откатывается на чистую. Поэтому делать там что-то кроме запуска тестового кода - как минимум неудобно и производительность хромает.

     
  • 4.42, Ан даш м (?), 18:54, 21/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > с паролем рута в докере где нет ничего кроме сервиса компиляции

    А если туда прокинули /var/lib/docker и контейнер privileged. И прочая девляпс ахинея.

     

  • 1.3, Аноним84701. (?), 22:09, 17/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > Проблемный сервис, в котором удалось воспроизвести проблему, пока не афишируется.

    Погуглить "онлайн це компайлер" ведь никто не догадается, угу.

    > In file included from main.c:2:
    > /etc/shadow:1:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token
    >    1 | root::14871::::::

     
     
  • 2.9, exSun (ok), 23:41, 17/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так их там 3 штуки таких с одной только первой страницы поисковой выдачи...
     
  • 2.32, xor (??), 22:10, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Кто-то подобрал пароль?
     
  • 2.40, Аноним (40), 20:09, 19/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    как видишь хэша тут нет. или ты подумал, что 14871 - это хэш? а вот и нет, это дата смены пароля
     
  • 2.41, Аноним (41), 04:03, 20/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    root вообще без пароля?
    Встречал такое ещё в chroot окружениях (ещё в начале 2000, наверное).
    Рутом залогинится нельзя, но если зашел пользователем, то можно сделать su - root и пароль не спросят.
    Или тут какими-нибудь PAM'ами ограничено?
     

  • 1.4, Аноним (4), 22:54, 17/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Помимо etc/shadow, интересные эффекты можно наблюдать, включив </dev/zero>:

    > cc1plus: out of memory allocating 17179869200 bytes after a total of 413696 bytes

    или </etc/ssh/ssh_host_rsa_key>:

    > /etc/ssh/ssh_host_rsa_key:1:1: error: expected unqualified-id before
    > '--' token
    > -----BEGIN RSA PRIVATE KEY-----

     
  • 1.5, Аноним (5), 23:00, 17/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем такие извращения? Нельзя ли просто скомпилировать программу, читающую что нужно откуда нужно?
     
     
  • 2.6, Аноним (4), 23:04, 17/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Авторам сервисов обычно хватает мозгов не запускать программы пользователей от рута. Автор поста же, в свою очередь, призывает не запускать компилятор от рута
     
     
  • 3.12, Аноним (5), 00:30, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В GitLab контейнеры в аппаратных виртуалках работают от рута...
     
     
  • 4.16, SOska (?), 08:53, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И это теперь что, правильно и нормально?
     
     
  • 5.17, Аноним (5), 09:37, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, неправильно. Но что ещё остаётся для GitLaba. Не дашь рут - часть программ отвалится.
     

  • 1.7, Аноним (7), 23:05, 17/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Господи, сколько же на свете идиотов...
     
     
  • 2.37, neanonim (?), 08:57, 19/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Надо подсчитать... Начнём с тебя
     

  • 1.8, б.б. (?), 23:08, 17/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    чё за онлайн компиляция
     
     
  • 2.10, Андрей (??), 23:51, 17/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    поищи "online compiler" - там есть уже выбор. Godbolt, Wandbox, Ideone.
     
  • 2.11, Аноним (13), 23:59, 17/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Почти все студенты нынче так контрольные делают, в онлайн-сервисах, где можно скомпилировать что-нибудь. Когда-то все делали странички со снежинками на JS, а теперь с каким-нибудь окошком для запуска Python.
     
  • 2.18, Аноним (18), 10:02, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это может быть тупо билд-ферма с веб-интерфейсом. Например, некоторые дистрибутивы линукса собираются "в онлайне". Ты можешь следить за сборкой и даже менять исходники прямо из браузера. Конечно, это не единственный способ, и часто даже не основной, но тем не менее такая возможность присутствует. Можно ли назвать это "системой online-компиляции"? Наверное.

    Примеры:
    https://copr.fedorainfracloud.org/
    https://build.opensuse.org/

     

  • 1.15, Аноним (15), 06:44, 18/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > системы online-компиляции

    Можно ли подрубить туда свои мощности? А то 8-ядерник простаивает. Типа как распределённые вычисления, только чтобы тебе за них платили. И можно ли компилировать виндовые программы? А то линуксовые компилировать просто - всегда и везде есть GCC - а в винде я понятия не имею, как компилировать. Может в онлайн-сервисах это так же просто, как в линуксе сделать make?

     
  • 1.19, Аноним (19), 10:37, 18/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Не совсем понимаю как при помощи #include можно текст вытащить?
    Я немного потестил, но если в файле конкретно не указан текст в "", то при компиляции все падает.
    Какие есть фишки по этому поводу в С?
     
     
  • 2.20, 1 (??), 10:42, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Новость не читай - комментарий отправляй.
    Там всё написано - надо только до конца дочитать.
     
     
  • 3.21, Аноним (19), 10:46, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну либо я слепой, либо все же не написано
     
  • 3.22, Аноним (19), 10:49, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Окей, внутри самой статьи описано, что нужно отчет об ошибка смотреть.
    Понял. Осознал. Благодарю)
     

  • 1.25, Аноним (25), 13:18, 18/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Многая лета https://www.opennet.ru/ и Михаилу! Уже было начал переживать.
     
     
  • 2.29, Аноним (29), 15:11, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Многая лета https://www.opennet.ru/ и Михаилу!

    В смысле, Максиму?

     
  • 2.30, Sluggard (ok), 15:12, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Только Михаилу?
    Максим Чирков, создатель и владелец, не заслуживает доброго слова? )
     
     
  • 3.31, Аноним (25), 15:55, 18/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В смысле обоим и Максиму также.
     
  • 2.35, Аноним (-), 07:47, 19/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это походу Айхор колбасит - не только нжинксу достается. На хостинге тоже какие-то крышевые работы нынче - хабр читай. Хабр кстати тоже на .com почему-то предусмотрительно всех редиректит. Видимо боится отжима .ru :)
     

  • 1.33, Аноним (33), 02:45, 19/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    При сравнительно недорогой стоимости виртуалок на Azure или Amazon новость чуть более чем полностью бессмысленная.
     
     
  • 2.36, Аноним (-), 07:48, 19/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Есть и подешевле этих. Реально виртуалку можно за 1-2 бакса взять и там хоть обкомпилиться.
     

  • 1.38, Аноним (38), 17:08, 19/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я чет не понял... А где уязвимость то?

    Испокон веков говорилось что сервисы нужно chroot-тить или запускать под отдельным пользователем.
    В соверменном мире вообще запускают отдельные виртуалки для всего одной службы.

     
  • 1.39, мяя (?), 17:08, 19/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    <?php include($_GET['path']); ?>
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру