URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 113062
[ Назад ]

Исходное сообщение
"Метод подстановки троянского кода, невидимого при просмотре ..."

Отправлено opennews , 18-Дек-17 12:59 
Опубликован (https://www.twistlock.com/2017/12/13/hiding-content-git-esca.../) метод скрытия частей кода при выводе изменений при помощи команды "git diff", которая часто используется для изучения присылаемых патчей. Добавив в код escape-последовательность "[8m (http://ascii-table.com/ansi-escape-sequences-vt-100.php)" атакующий может сделать невидимой часть  при выводе на экран с использованием терминала, поддерживающего команды VT100.


Проблемы также выявлены в команде "git rm", которая выводит имя удаляемого файла с обработкой escape-последовательностей в нём. Например, можно создать файл при помощи команды touch `echo -e "\e[45mTest\e[0m"` и добавить его в git-репозиторий. Escape-последовательность будет обработана при удаления данного файла через "git rm". Аналогично можно добиться обработки escape-последовательностей в git-branch при их подстановке в имена файлов в каталоге .git/refs/heads (touch `echo -e ".git/refs/heads/\e[45mTest\e[0m"`).


        


URL: https://www.twistlock.com/2017/12/13/hiding-content-git-esca.../
Новость: http://www.opennet.dev/opennews/art.shtml?num=47759


Содержание

Сообщения в этом обсуждении
"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 12:59 
Ждем гитлаб/гитхаб-хейтеров, доказывающих, что "тирминал ита крута, веб ненужен вспомнити лефтпад"

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено KonstantinB , 18-Дек-17 15:27 
А когда в каком-нибудь гитлабе найдут похожий метод, эксплуатируемый через HTML или какой-нибудь RTL unicode, кто кому чего будет доказывать? :-)

Escape-последовательности надо экранировать точно так же, как это надо делать в вебе с HTML.

Но, конечно, нынешние разработчики гита удивляют.

Цитата:
https://www.twistlock.com/2017/12/13/hiding-content-git-esca.../

Git’s developers take

I sent an advisory to git’s security mailing list, listing all the issues I presented above. The initial responses I received were skeptical. One of the assertion suggested that the same problem can be reproduced with cat, so it is not git’s problem.

Ага, а то, что браузер интерпретирует HTML, это не проблема гитлаба? :-)


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено pavlinux , 18-Дек-17 21:18 
Найди 10 отличий https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 22:00 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено pavlinux , 20-Дек-17 01:46 
Через git diff повтори

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Иван , 20-Дек-17 06:36 
пробел же!

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено pavlinux , 26-Дек-17 23:02 
> пробел же!

8 спереди или 4 сзади? :)


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 15:28 
> Ждем гитлаб/гитхаб-хейтеров, доказывающих, что "тирминал ита крута, веб ненужен вспомнити лефтпад"

Смотрю книгу, вижу фигу.


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Вареник , 18-Дек-17 21:16 
Веб, IDE и консоль - дополняют друг друга.

Обсуждать код лучше с веб-ссылкой, кодить в IDE, перекидывать коммиты между ветками - в консоли.
Только глупые люди противопоставляют мягкое светлому.


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Xasd , 21-Дек-17 14:13 
> кодить в IDE

особенно в ситуации когда эта IDE не понимает часть синтаксических конструкций (например новые) в этом коде, да? и приходится вместо того чтобы писать так как тебе хочится -- писать то что лишь умеет эта IDE


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Ю.Т. , 18-Дек-17 13:02 
Кстати, о названиях  и шуточках (https://www.thefreedictionary.com/git)

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено щи , 18-Дек-17 13:06 
Так Линус говорил, что не умеет выбирать названия.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Iaaa , 18-Дек-17 13:46 
Тут лучше: https://www.urbandictionary.com/define.php?term=Git

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 13:50 
У меня в терминале сделал текст чёрным, но у меня фон прозрачный и всё было видно. Палево.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено fr0ster , 18-Дек-17 14:14 
То есть diff укажет
-     * Must always return a value
+     * Must always return a value
и никому это не покажется странным?

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 14:21 
Почему? Строка "* Must always return a value" добавлена целиком.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено fr0ster , 18-Дек-17 14:31 
> Почему? Строка "* Must always return a value" добавлена целиком.

Ну например потому, что абсолютно одинаковая строка не вывелась бы так.


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено нэту , 18-Дек-17 14:54 
а если поменять немного каммент, то сильно легче станет?

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено fr0ster , 18-Дек-17 15:09 
> а если поменять немного каммент, то сильно легче станет?

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



"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено fr0ster , 18-Дек-17 15:10 
>> а если поменять немного каммент, то сильно легче станет?
> Так да, просмотреть станет легче.

В смысле пропустить такие строки станет легче.


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 15:34 
Одинаковая по отношению к чему? В примере новая строка добавляется, а не старая меняется.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Гоги , 18-Дек-17 16:01 
> То есть diff укажет
> -     * Must always return a value
> +     * Must always return a value
> и никому это не покажется странным?

Ты такой внимательный, что читаешь каждый символ? Попробуй попринимать десяток патчей в час - глаза вывалятся!


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 19:28 
Ну можно же сканер настроить на отлов подобных несуразностей.
В конце концов в *никсах всегда гордились, что возможностей автоматизации вагон и маленькая тележка, а тут значит "бери больше кидай дальше"?

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 19-Дек-17 00:45 
Ну теперь вот мы все в курсе и все настроим! Я у себя уже сделал. А ты?

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 16:49 
от изменения конца строки будет похожая запись, могут пропустить не глядя

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 20:50 
Во вменяемых проектах за изменение конца строки делают аяй.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Ordu , 19-Дек-17 00:05 
Ты консольным браузером, что ли пользуешься, и не видишь картинок?

Там нарисован diff, который добавляет комментарий. Вот не было комментария в сорце, а diff его добавил вместе со строчкой return 0. Случай несколько надуманный, но вообще патчи добавляющие в код комментарии попадаются довольно часто. Иногда они делают это ради добавления комментариев к существующему коду, иногда эти комментарии сопровождают добавляемый этим же патчем код.

> и никому это не покажется странным?

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

Практическое использование сложно по другой причине. В ядро, например, патчи засылаются через почту, а почтовик может не обратывать esc-последовательности как esc-последовательности. На github пуллреквесты отрисовываются через html, и там лишние esc-последовательности тоже будут видны. Тут нужен довольно специфичный воркфлоу, когда работа с git идёт именно в терминале, патчи пересылаются через git pull/push (или ещё каким способом, при котором пересылаемые патчи не видны в процессе пересылки между репозиториями), и при этом не используются дополнительные обёртки, типа gitk, github, magit, и прочих.


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 15:45 
Так и запишем: не принимать патчи из непроверенных источников

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 15:49 
Остроумно, но едва ли "defang" этих escape-последовательностей при выводе на терминал может составить проблему.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 16:08 
Для некоторых станут открытием закладки в компиляторе. Компелируйте компилятор, параноики.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 18:43 
Чтобы они стали для нас открытием, надо, чтобы ты показал нам реальные их примеры. А про теоретическую возможность уже не первый десяток трындят.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Борщдрайвен бигдата , 18-Дек-17 21:39 
Уж не помню где, но я читал морозную историю (перевод) именно о закладке в компиляторе, найденной случайно в ходе доработки какой-то программы сотрудником в каком-то университете.
Увлекательная вещь, но я ее никак не могу найти.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено L29Ah , 18-Дек-17 19:52 
В Gentoo не воспроизводится.

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено pripolz , 23-Дек-17 01:52 
>  В Gentoo не воспроизводится.

В дебиан стейбл тоже. Может это от програмки-терминала зависит?


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено Аноним , 18-Дек-17 23:04 
>с использованием терминала, поддерживающего команды VT100.

кто им пользуется? Я использую только графические фронтенлы для диффов вроде meld, tortoisegit и visual studio.


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено nobody , 19-Дек-17 11:44 
Командное окружение гита этим и замечательно, что позволяет комфортно обходиться без GUI искаропки, в отличие от, например svn. Поставил в своё время TortoiseGit и так им и не пользовался. А вот без TortoiseSVN жить весьма уныло

"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено pavlinux , 20-Дек-17 01:50 
>  в отличие от, например svn.

За зарплату оно всё прекрасно работает, и свн, гит, меркурий, бла-бла-блах...


"Метод подстановки троянского кода, невидимого при просмотре ..."
Отправлено pavlinux , 20-Дек-17 01:48 
>>с использованием терминала, поддерживающего команды VT100.
> кто им пользуется?

Явно не мышкаклацкеры :)