The OpenNET Project / Index page

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

Две уязвимости в Git, способные привести к удалённому выполнению кода

18.01.2023 10:47

Опубликованы корректирующие выпуски распределённой системы управления исходными текстами Git 2.39.1, 2.38.3, 2.37.5, 2.36.4, 2.35.6, 2.34.6, 2.33.6, 2.32.5, 2.31.6 и 2.30.7, в которых устранены две уязвимости, позволяющие организовать выполнение своего кода на системе пользователя при использовании команды "git archive" и работе с не заслуживающими доверия внешними репозиториями. Уязвимости вызваны ошибками в коде форматирования коммитов и разборе файла ".gitattributes", которые при обработке внешних репозиториев могут привести к записи в область памяти за пределами кучи и чтению произвольных данных из памяти.

Обе уязвимости были выявлены в ходе аудита безопасности кодовой базы Git, проведённого компанией X41 по заказу фонда OSTIF (Open Source Technology Improvement Fund), созданного с целью усиления защищённости открытых проектов. Кроме двух рассматриваемых ниже критических проблем в ходе аудита также была найдена одна опасная уязвимость, одна уязвимость средней степени опасности и четыре неопасные проблемы. Также было дано 27 рекомендаций по повышению безопасности кодовой базы.

  • CVE-2022-41903: целочисленное переполнение в коде форматирования информации о коммитах, возникающее при обработке больших значений смещения в операторах заполнения, таких как "%<(", "%<|(", "%>(", "%>>(" и "%><( )". Целочисленное переполнение возникает в функции format_and_pad_commit() из-за использования типа int для переменной size_t, которая при вызове memcpy() участвует в определении размера смещения копируемого блока.

    Уязвимость проявляется как при прямом вызове со специально оформленными параметрами форматирования (например, при запуске "git log --format=..."), так и при косвенном применении форматирования во время выполнения команды "git archive" в репозитории, подконтрольном атакующему. Во втором случае модификаторы форматирования задаются через параметр export-subst в файле ".gitattributes", который может быть размещён атакующим в своём репозитории. Проблема может использоваться для чтения и записи произвольных областей в куче и привести к выполнению кода злоумышленника при работе с непроверенными репозиториями.

  • CVE-2022-23521: целочисленные переполнения при разборе содержимого файлов ".gitattributes" в репозитории, проявляющиеся при обработке очень большого числа шаблонов файловых путей или большого числа атрибутов с одним шаблоном, а также при разборе очень больших имён атрибутов. Проблема может использоваться для чтения и записи произвольных областей в куче и привести к выполнению кода злоумышленника при работе с непроверенным репозиторием, в котором атакующий может разместить специально оформленный файл .gitattributes и обеспечить его попадание в индекс.

Публикацию обновлений пакетов в дистрибутивах можно проследить на страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD. Для снижения риска проведения атаки при невозможности своевременно установить обновление рекомендуется воздержаться от работы с незаслуживающими доверия репозиториями и от использования команды "git archive". Важно помнить, что команда "git archive" может запускаться неявно, например, из git daemon. Для отключения запуска "git archive" в git daemon следует изменить параметр daemon.uploadArch командой "git config --global daemon.uploadArch false".

Дополнительно можно отметить ещё одну уязвимость (CVE-2022-41953) в продукте Git for Windows, позволяющую организовать выполнение кода при клонировании через графический интерфейс непроверенных внешних репозиториев. Проблема вызвана тем, что Git GUI для Windows после операции "checkout" автоматически запускает некоторые команды пост-обработки, такие как выполнение программы spell-check для проверки правописания, при том, что пути поиска файла spell-check охватывают и клонированное рабочее дерево (атака сводится к добавлению spell-check в рабочее дерево репозитория).

  1. Главная ссылка к новости (https://lkml.org/lkml/2023/1/1...)
  2. OpenNews: Выпуск системы управления исходными текстами Git 2.39
  3. OpenNews: Уязвимости в Git, проявляющиеся при клонировании субмодулей и использовании git shell
  4. OpenNews: Две уязвимости в Git
  5. OpenNews: Уязвимость в Git, приводящая к утечке учётных данных
  6. OpenNews: Обновление Git с устранением уязвимости, допускающей удалённое выполнение кода
Лицензия: CC-BY
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/58498-git
Ключевые слова: git
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (61) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:14, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Ведь не зря же, ведь не даром, git спалённый пожаром, на got заменена?..
     
     
  • 2.4, Аноним (4), 11:27, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Неуловимый got
     
  • 2.7, derfenix (ok), 11:46, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И через поиск просто шикарно (никак) находится, да.
     
  • 2.8, Аноним (8), 11:50, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    "Got DVCS" : Пориск ничего не дал.
     
     
  • 3.9, Аноним (4), 11:58, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    речь про бздунячью NIH-реализацию гита
     
     
  • 4.26, Аноним (26), 13:56, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слово конкуренция пока что никто не отменял.
     
     
  • 5.54, Аноним (54), 17:56, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Только тут не конкуренция, а паразитирование.
     
  • 2.12, Аноним (-), 12:24, 18/01/2023 Скрыто модератором
  • +/
     

  • 1.3, Аноним (3), 11:20, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это дешёвый рекламный трюк CVS
     
     
  • 2.5, Аноним (26), 11:31, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты ещё скажи что тот самый BitKeeper проплатил чтобы народ узнал что он уже давно под свободной лицензией Apache 2.0 (Ждет суда от индейцев)
     
     
  • 3.10, Аноним (10), 12:02, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Обе уязвимости были выявлены в ходе аудита безопасности кодовой базы Git, проведённого компанией X41 по заказу фонда OSTIF (Open Source Technology Improvement Fund).

    А аудит уязвимости этого Биткипера (напомню, что во времена, когда он был проприетарным, и линуксоидов обвинили в том, что они нарушили еулу введя команду help, которая внезапно этот самый хелп и выдала) кто-то делал?

     
  • 3.11, Аноним (-), 12:15, 18/01/2023 Скрыто модератором
  • –1 +/
     

  • 1.14, Страдивариус (?), 12:45, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Нужен клон на rust. Назовём gust.
     
     
  • 2.15, Аноним (26), 12:54, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Тут целочисленное переполнение. Такое раст в продакшн сборке не в состоянии отловить.  
     
     
  • 3.17, Анонн (?), 13:00, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Тут проблема не в самом целочисленном переполнении, а в том что из-за него коряво посчитали память при копировании. Что как раз бы было отловлено в продакшене.
     
     
  • 4.18, Аноним (18), 13:32, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Что как раз бы было отловлено в продакшене

    если растаманы не перепутают знаки сравнения, как в FF, рассчитывая попадание смещения в буфер.

     
     
  • 5.19, annonn (?), 13:38, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ты про тот эпичный баг в nftables (https://www.opennet.ru/opennews/art.shtml?num=58480) ?
    Согласен, повышение привелегий это достаточная цена чтобы писать код на С
     
     
  • 6.23, Аноним (26), 13:54, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А тут https://www.opennet.ru/opennews/art.shtml?num=55167 чего случилось?
     
     
  • 7.32, animenimus (?), 14:30, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > приводящих к краху и не исключающих возможность создания эксплоитов для повышению привилегий в системе.

    читаю как "мы смогли уронить аппу, но обделались представить рабочий эксплойт"

    И напомни пожалуйста где написано что rust "решает логические и алгоритмические ошибки"?
    Я доку почитал, там нету.
    Может у тебя есть альтернативные источники?

     
  • 7.33, Анонн (?), 14:30, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А тут доказан только креш, что хорошо. RCE там только потенциальное, в отличие от этого.

    Плюс ты сравниваешь какое-то васяноподелие версии <0.4, которое еще даже не релизнулось, с модулем ядра, который уже много лет в проде. Как-то не очень сравнение, не кажется ли?

     
     
  • 8.48, Вы забыли заполнить поле Name (?), 16:05, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Дык пусть на расте напишут ядро уровня линукса, тогда и сравним ... текст свёрнут, показать
     
     
  • 9.53, Анонимусс (?), 17:42, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Как твое сперва добейся оправдывает тупейшую ошибку с перепутанными знаками в ... текст свёрнут, показать
     
     
  • 10.63, Вы забыли заполнить поле Name (?), 03:38, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Оправдать - это ты такую цель видишь у меня ее нет Просто в больших проектах н... текст свёрнут, показать
     
  • 5.56, Анонимусс (?), 18:46, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    О, еще один свидетель перепутанного знака в FF.
    Скинь ссылку на код. Или тоже сольешься как все предыдущие анонимы?
     
  • 3.38, Анонто (?), 15:00, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Рекомендую вам для прочтения статью https://rustycrate.ru/%D0%BE%D0%B1%D1%83%D1
     
     
  • 4.55, Страдивариус (?), 17:57, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Рекомендую вам для прочтения статью https://rustycrate.ru/%D0%BE%D0%B1%D1%83%D1

    Да что вы, в конце концов? Сарказм не почувствовали в моём каменте?

     
     
  • 5.58, AnnoniusII (?), 19:55, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Закон По в действии.
    Как ты отличишь сарказм от глупости, и троля от дурака?
    А с учетом большинства сидящих на пеньке... вывод может быть не утешительный T_T
     
  • 2.27, Michael Shigorin (ok), 13:57, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Сразу на облачном rust -- mist rust!
     
     
  • 3.35, animenimus (?), 14:36, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ты лучше скажи когда альт будут переводить на скрепные языки?
    Ибо негоже на буржуйском писать!
    Когда вместо языка англосаксов будет православный РУСЛ, Гонец или на крайняк Оберон07
     
     
  • 4.40, Аноним (40), 15:09, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А как же КуСпецоперация?
     
  • 2.60, Омномним (?), 21:15, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    grust же
     

  • 1.16, Анонимусс (?), 12:58, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Может где-то описано что запуская это код можно получить RCE?
    Напр. в документации или в исходном коде? А то что-то не получается найти
    Может оно где-то еще записано? Сишники, подскажите пожалуйста.
     
  • 1.20, ИмяХ (?), 13:40, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Наxepa столько параллельных версий?
     
     
  • 2.21, annonn (?), 13:45, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну что ты как маленький.
    Это же опенсорс - тут каждый второй васян, придумав новую гениальную идею и получив закономерный отказ начинает пилить свой вариант с преферансом и куртизанками.
    В итоге получается 100500 разных вариантов апп с разными возможностями.

    Но что поделаешь - это уже традиция.

     
  • 2.22, animenimus (?), 13:49, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    для поддержки всяких любителей мамонтовых копролитов
    тут часто такие рассказывають что ядро 2.9 самое лучшее и обновляться не нужно
     
     
  • 3.25, Аноним (26), 13:56, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Так, а с ядром 2.9 что не так-то опять?
     
     
  • 4.34, Аноним (-), 14:30, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Так, а с ядром 2.9 что не так-то опять?

    То что они не релизилось никогда :)

     
     
  • 5.52, анониммус (?), 17:36, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    "это не важно! если бы вышло - то было бы лучшим, не то что современные поделия 5.х" - так они и сидят на 2.6 (со старыми дырками и дырищами) и хейтят прогрес
     
  • 2.24, Аноним (26), 13:55, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что Линукс подразумевает перестройку мира на любой чих версии. Ну и потом что твой мегакод может не пережить переезда на новую версию и ты всегда будешь сидеть на старом гите с патчами.  
     
     
  • 3.28, Michael Shigorin (ok), 13:59, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Потому что Линукс подразумевает перестройку мира на любой чих версии

    Похоже, салат был не с опятами...

     
     
  • 4.30, kusb. (?), 14:25, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он частично прав - в Linux зависимостями всё связано со всем и обычно есть только одна версия библиотеки. Это может начать прямо ужас какой снежнокомовый процесс циклического рода.
    Типа новая версия программы требует новую библиотеку, а новая библиотека уже не совместима с чем-то старым. В результате трудно понять что нужно будет обновить при обновлении чего-то одного, а то и удалить. Скованные одной цепью, связанные одной целью, ура!
     
     
  • 5.42, OpenEcho (?), 15:25, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Он частично прав - в Linux зависимостями всё связано со всем и обычно есть только одна версия библиотеки.

    Вот поэтому и популярность Go, продукты которого будут работать в пределах платформы не опираясь он "святую" glibc

     
     
  • 6.49, Аноним (26), 16:05, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    По умолчанию Go упирается на libc, чтобы не упирался надо ключи сборки угадать.  
     
     
  • 7.51, OpenEcho (?), 16:26, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > По умолчанию Go упирается на libc, чтобы не упирался надо ключи сборки
    > угадать.

    Это правда лимитация или теперь все копиляторы без ключей работают?

        env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
          go build -trimpath -ldflags "-s -w -extldflags '-static'" ./main.go

     
  • 4.39, Нонанин (?), 15:07, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вы это говорите как эксперт по импорту из Аргентины?
     
     
  • 5.50, Аноним (26), 16:06, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Им бесплатно выдают. Ты думаешь почему у них там в Альте такая маленькая зарплата.  
     
  • 4.59, Аноним (59), 19:56, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В следующий раз рекомендую брать нормальный салат без грибов.
     

  • 1.29, Аноним (29), 14:09, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На opennet принято за ошибки в коде ругать языки?)
     
     
  • 2.31, kusb. (?), 14:27, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А что ещё ругать?
     
     
  • 3.36, animenimus (?), 14:40, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну не програмистов же!
    Они святые люди которые никогда не делают use after free и не портят память.
    А те кто делают - это не настоящие программеры и вообще этот код в проект подбросили.
     
     
  • 4.41, OpenEcho (?), 15:19, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Они святые люди которые никогда не делают use after free и не портят память.

    А не святые идут в Go, там им мусорщик в помощь

     
  • 2.37, Анонимусс (?), 14:50, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, это конечно не язык виноват, в котором до сих пор нет такой базовой вещи как нормальный буфер, который знает свой размер. И приходится каждый раз или лажать в арифметике или писать свой велосипед.
     
     
  • 3.43, Аноним (43), 15:31, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Как ошибка в rust каком-то, то тут через одного перепись экспертов. А как в Си очередной раз что-то проглядели, то уже проблема проекта и программиста. Ведь эксперты гуру никогда не делают ошибок в кодовой базе, особенно в большой.
     
     
  • 4.45, Анонн (?), 15:37, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Это смотря какая ошибка и какие последствия.
    Если это какая-то логическая - типа как знак перепутали в nftables - это одно, оно может быть везде. Но когда ее результат в очередной раз испорченная память и RCE - это совсем другое.

    От сишников никто не просят не делать логических ошибок, это невозможно. Ни на си, ни на раст, ни даже на ада.

    Просто перестаньте портить память! Это что, так сложно в нужным момент вызывать free (и только один раз!) и не писать за пределы буфера?

     
     
  • 5.62, Аноним (62), 00:35, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по тому что за столько лет существования Си, уязвимости связанные с такими ошибками до сих пор в топе, то выглядит как то что нельзя просто взять и перестать их делать. Либо же это требует колоссальных усилий, что возможно только в некоторых самых критичных областях.
     
  • 3.47, Аноним (-), 15:54, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Здесь дело в нестрогости типизации. int и size_t перепутать -- чисто сишная фишка.
     
  • 2.44, OpenEcho (?), 15:34, 18/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > На opennet принято за ошибки в коде ругать языки?)

    Если б только языки, здесь такое количество телепатов (или инопланетян или точнее π3доболов) что поставят диагноз на раз в любой области науки, без доказательств, с обзываниями... но надо отдать должное, что бывает и жемчуг, ради чего и приходится просматривать анонимные просерания

     

  • 1.46, ip1982 (ok), 15:39, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да я каждый день удалённо код выполняю с помощью гита — пушаю на гитхаб :)
     
  • 1.57, Аноним (57), 19:31, 18/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Ubuntu
    >Released
    >Debian
    >Vulnerable

    Вся суть Дебиана.

     
  • 1.64, Аноним (64), 09:26, 19/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что значит за пределами кучи? Что за куча?
     
     
  • 2.65, Аноним (65), 10:21, 19/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Что значит за пределами кучи? Что за куча?

    https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D1%87
    Куча в информатике и программировании — название структуры данных, с помощью которой реализована динамически распределяемая память приложения.

     

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



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

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