LINUX.ORG.RU

Удаленное выполнение произвольной команды в Emacs

 ,


0

4

Ошибка вызвана автоматической обработкой содержимого каталога a .git/, когда он размещён в одном каталоге с открываемым файлом. В этом случае Emacs при открытии файла запускает команды git ls-files и git status, выполняемые в контексте содержимого .git/. Для выполнения кода достаточно открыть в Emacs файл из каталога, в котором имеется подкаталог .git/ с файлом конфигурации config, включающим опцию core.fsmonitor с указанной атакующим командой для запуска. Сопровождающие GNU Emacs отцы отказались устранять уязвимость, переведя стрелки на разрабов git.

>>> Подробности



Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 3)

Сопровождающие GNU Emacs отцы отказались устранять уязвимость, указав на то, что это проблема хипсторов из Git.

Прекращай уже жёлтым подкрашивать.

dataman ★★★★★
()
Ответ на: комментарий от CrX

Процитируй, где они указали, что это «проблема хипсторов».

вот же написано:

2026-03-30: Maintainers declined to address the issue, attributing it to Git

borisych ★★★★★
()

Индустрия в критической опасности. Люди боятся редактировать файлы, многие даже не включают компьютеры, а особо грамотные уже носят FFP3 маски.

seiken ★★★★★
()

Ну это действительно проблема гита и того, кто его у себя настраивал. Если прописал себе злобный хук, то сам себе и злобный Буратино.

Я в емаксе нашел ещё одну интересную штуку. Не поленитесь залезть в дерево исходников и найти там директорию exec. В оном каталоге лежит запускатор любого файла без сисколла exec. Нужно это для Андроида в основном, потому как Андроид аппармором или чем там ещё позволяет запускать программы только из определенных мест и уж никак не из домашней директории пользователя. Спрашивается, как емаксу запустить локально наставленные бинари из пакетов, которые пользователь себе понаставил?

А вот как. Далее немного занудной теории. Кто-нибудь задумывался, как GDB запускает процесс для отладки? Ну все знаем: fork/vfork/spawn, далее exec... только exec к нам никогда не вернется... А нам отлаживаться. Поэтому, открываем elf, мапим в память его секции, делаем еще кучу другой черной работы, которое делает ядро внутри exec'a, устанавливаем обработчики сигналов, а потом запускаем на асме писаный загрузчик, который находит в памяти замапленные секции и отдает туда управление. В результате система видит, что запустился какой-то «легальный» бинарь, который может лежать рядом с емаксом по «правильному» пути, но исполнять он будет не пойми что из левого места. Андроид же не запрещает открывать файлы в домашнем каталоге, он их только исполнять запрещает... В общем, хозяйке на заметку, вдруг кому пригодится. Тест под линухом собирается и работает, я проверял.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 3)
Ответ на: комментарий от gns

Ну это действительно проблема гита и того, кто его у себя настраивал. Если прописал себе злобный хук, то сам себе и злобный Буратино.

там другой вектор атаки же:

  • то что нужно запускать указано атакующим в .git/config#core.fsmonitor - оно в архиве все лежит, но жертва этого не видит, потому что директория .git скрыта от глаз жертвы
  • плагин emacs радостно видит .git/config в вышестоящей директории открываемого файла и радостно выполняет то, что указано в core.fsmonitor
borisych ★★★★★
()

Скоро будут писать об уязвимостях в программе make так как она может исполнить вредоносный код.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Lusine

пусть первый бросит в меня камень.

Ухудшая своё реноме, вынуждаешь форумчан игнорировать тебя. Из-за этого игнорирующие могут пропустить важную для них новость (в трекере).

dataman ★★★★★
()
Ответ на: комментарий от dataman

Из-за этого игнорирующие могут пропустить важную для них новость (в трекере).

Я вообще часто его «новости» игнорирую.

Zhbert ★★★★★
()

Ш Е Р Е Т О ! Вот теперь-то линаксу точно капец!

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Я знаю что нужн сделать. Нужно встроить в make надежную систему безопасности от неправомерного выполнения кода. Пользователь явно должен увидеть элемент интерфейса (кнопку) на экране и нажать ее в подтверждение. Иначе ничего выполняться не будет.

Такое уже введено в бл вебкитГТК, чтоб его разработчики получили тройной перелом рук со смещением.. Почему бы не ввести в make.

По традиции, в линукс модуль для отображения кнопки должен не работать. Ибо небезопасно.

LightDiver ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Без шуток, если make вдург сам собой, без явной команды от пользователя начнёт запускаться, это будет уязвимость.

ugoday ★★★★★
()

Для выполнения кода достаточно открыть в Emacs файл из каталога, в котором имеется подкаталог .git/ с файлом конфигурации config, включающим опцию core.fsmonitor с указанной атакующим командой для запуска

Хакер и солонка

annulen ★★★★★
()
Ответ на: комментарий от borisych

и радостно выполняет

Ты чем читал собственную ссылку? Тебе же буквально полный трейс запуска вывели - чтобы даже совсем тупой понял. Emacs сам не запускает ничего кроме команды git, проблема именно в самом git - вполне логично что разрабы Emacs не хотят править уязвимость в чужом коде.

Собственно и заголовок максимально желтушный - уязвимость не в Emacs, а в git и исправлять это нужно именно в нём.

zabbal ★★★★☆
()
Ответ на: комментарий от gns

Ну это действительно проблема гита и того, кто его у себя настраивал. Если прописал себе злобный хук, то сам себе и злобный Буратино.

При чём тут настройка git? Ты открываешь ЛЮБОЙ каталог, и если в нём оказывается вредоносный .git/config, то все твои ключи уходят в зрительный зал.

byko3y ★★★★
()
Ответ на: комментарий от zabbal

Вообще, есть логика в том, что нельзя запускать git в недоверенном репозитории в принципе. Потому что код Git писан на Си, там число потенциальных уязвимостей безгранично. То есть, даже без .git/config можно считать, что чтение зловредного репозитория = выполнение кода.

byko3y ★★★★
()

закопать git или emacs? выбор очевиден - конечно второе :)

DrRulez ★★★★★
()
Ответ на: комментарий от byko3y

Потому что код Git писан на Си, там число потенциальных уязвимостей безгранично

Нечего с криворуких - стрелки на компилятор переводить! Си - делает ровно то, что ему говорят. И если дебил за клавиатурой - написал такой код, который уязвим - так и будет.

DrRulez ★★★★★
()
Ответ на: комментарий от LightDiver

Пользователь явно должен увидеть элемент интерфейса (кнопку) на экране и нажать ее в подтверждение. Иначе ничего выполняться не будет.

Точно. А еще руками прописать адрес в памяти откуда запускать на выполнение :)

DrRulez ★★★★★
()

а это вроде как autorun.inf в windows xp на флешках?

ofp
()

Хорошо, что я использую ed(1)

buddhist ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.