The OpenNET Project / Index page

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

Уязвимость в GitLab, позволяющая записать файлы в произвольный каталог на сервере

26.01.2024 10:01

Опубликованы корректирующие обновления платформы для организации совместной разработки - GitLab 16.8.1, 16.7.4, 16.6.6 и 16.5.8, в которых устранены 5 уязвимостей. Одной из проблем (CVE-2024-0402), которая проявляется начиная с выпуска GitLab 16.0, присвоен критический уровень опасности. Уязвимость позволяет аутентифицированному пользователю записать файлы в любой каталог на сервере, насколько это позволяют права доступа, под которыми выполняется web-интерфейс GitLab.

Уязвимость вызвана ошибкой в реализации функции создания рабочих пространств (workspace). Ошибка проявляется при разборе параметров devfile, заданных в некорректном формате YAML (в патче проблема решена преобразованием YAML в JSON и проверкой наличия конструкций, корректных в YAML, но недопустимых в JSON из-за использования определённых Unicode-символов). Детальную информацию об уязвимости планируют раскрыть через 30 дней после публикации исправления. Уязвимость выявлена в ходе внутренней проверки одним из сотрудников компании GitLab.

  1. Главная ссылка к новости (https://about.gitlab.com/relea...)
  2. OpenNews: Уязвимости в GitLab, позволяющие захватить учётную запись и выполнить команды под другим пользователем
  3. OpenNews: Критическая уязвимость в GitLab, позволяющая запустить pipeline-работы под другим пользователем
  4. OpenNews: Уязвимость в GitLab 16, позволяющая прочитать файлы на сервере (доступен эксплоит)
  5. OpenNews: Уязвимость в GitLab, позволяющая запустить код при сборке в CI любого проекта
  6. OpenNews: Вторая за неделю критическая уязвимость в GitLab
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60498-gitlab
Ключевые слова: gitlab
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (33) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Адмирал Майк Роджерс (?), 10:06, 26/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Tor Project просто молодцы, что перешли на это заведомое рeшето.
     
     
  • 2.22, scriptkiddis (?), 15:48, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Критикуешь предлагай. Какие альтернативы?
     
     
  • 3.26, Аноним (26), 16:15, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    trac, который был до перехода на GitLab.
     
     
  • 4.37, jkkj (?), 01:54, 27/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Который в стагнации уже очень давно.
     
  • 3.31, Аноним (31), 19:15, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще непонятно, почему многие когда-то туда ломанулись. Gitea же намного лучше.
     
  • 3.32, лютый жабби.... (?), 20:11, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Какие альтернативы?

    внизапна просто git

     
  • 3.33, Аноним (-), 20:52, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Критикуешь предлагай. Какие альтернативы?

    Gitea или как там ее. То что используют codeberg и notabug. В цать раз менее монструозное нечто, и дыр соответственно - тоже!

    А gitlab - это монструозный лагучий спагетти-монстр. В котором - вот - по вулну каждый месяц, если не больше. Штуки типа tor - заманаются руткиты с серваков вынимать потом.

     

  • 1.2, Бывалый смузихлёб (?), 10:16, 26/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > проблема решена преобразованием YAML в JSON
    > и проверкой наличия конструкций, корректных в YAML,
    > но недопустимых в JSON из-за использования
    > определённых Unicode-символов

    Гениально! Что ни день - то патчи продуктов всё лучше и лучше

     
     
  • 2.5, Аноним (5), 10:31, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    это же классика (NSFW контент далее):

    '''
    $data = json_decode($data);
    if (is_null($data) && JSON_ERROR_NONE !== json_last_error_msg()) {
        // ошибка =)
    }
    '''

     
     
  • 3.13, penetrator (?), 12:34, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    что за мерзкий язык похожий на JS, и почему там не "или"?
     
     
  • 4.14, Аноним (5), 12:53, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Рядом, это пыха)

    А почему "И", потому что до сих пор в пыхе (да и в js) "null" - это валидный json равный NULL. И это не считается ошибкой, хотя json_decode при ошибке вернет именно NULL.

    ❯ php83 -r 'var_dump(json_validate("null"), json_decode("null", true), json_last_error_msg());'
    Command line code:1:
    bool(true)
    Command line code:1:
    NULL
    Command line code:1:
    string(8) "No error"

     
     
  • 5.23, Аноним (23), 15:50, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Стоит отметить, что json_decode поддерживает флаг JSON_THROW_ON_ERROR начиная где-то с 7.3, который помогает убрать немного костылирования вокруг этой функциональности
     
  • 5.34, Аноним (-), 20:54, 26/01/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 6.36, Аноним (5), 22:39, 26/01/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.41, penetrator (?), 04:29, 28/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Рядом, это пыха)
    > А почему "И", потому что до сих пор в пыхе (да и
    > в js) "null" - это валидный json равный NULL. И это
    > не считается ошибкой, хотя json_decode при ошибке вернет именно NULL.

    ОК, допустим, мы такие а вдруг распарсит без ошибок и вернет нул из json_decode, в этом случае отработает правая часть: JSON_ERROR_NONE !== json_last_error_msg()

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

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

    или я какой-то пых финт упускаю?

     
     
  • 6.42, Аноним (5), 14:19, 28/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > или я какой-то пых финт упускаю?

    не, все так

     
  • 3.38, qwe (??), 02:22, 27/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    То есть вторая часть условия никогда не сработает, потому что json_last_error_msg никогда не вернет JSON_ERROR_NONE. Там должна быть функция json_last_error.
     
     
  • 4.40, Аноним (5), 22:22, 27/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > То есть вторая часть условия никогда не сработает, потому что json_last_error_msg никогда
    > не вернет JSON_ERROR_NONE. Там должна быть функция json_last_error.

    Yep, лоханулся =(

    Хорошо что это не стек) отсюда не скопируют)

     
  • 2.30, Аноньимъ (ok), 19:05, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это вообще жесть.
    А проверить строку на левые юникод символы это типо слишком сложно уже?
     
  • 2.39, Аноним (39), 11:33, 27/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Эти упражнения с юникодом будут вечны.
     

  • 1.8, Аноним (8), 11:38, 26/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >в патче проблема решена преобразованием YAML в JSON и проверкой наличия конструкций, корректных в YAML, но недопустимых в JSON

    Надо YAML->JSON->XML, так ещё вероятнее обнаружение некорректных конструкций. Так надёжнее! ;)

     
     
  • 2.10, anonymous (??), 12:07, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У XML хоть DTD есть.
     
     
  • 3.19, hshhhhh (ok), 14:46, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот бы люди изобрели json schema!
     
  • 3.20, Аноним (20), 14:56, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У JSON хоть JSON Schema есть
     
     
  • 4.29, Аноним (29), 18:53, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    …но её никто не использует.
     

  • 1.9, YetAnotherOnanym (ok), 12:06, 26/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    То есть, ни подобрать с самого начала, ни перейти сейчас на нормальную либу для парсинга ямла, оказалось задачей непосильной.
     
     
  • 2.11, anonymous (??), 12:08, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Ямл и нормално в одном предложении ?
     

  • 1.16, anonymous (??), 13:28, 26/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А в чём уязвимость-то? "Отдай свои ценные файлы гитлабу бесплатно"?
     
  • 1.21, Пряник (?), 15:06, 26/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > насколько это позволяют права доступа, под которыми выполняется web-интерфейс GitLab

    бесполезная уязвимость

     
     
  • 2.24, scriptkiddis (?), 15:51, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Получение доступа к любому файлу в /var/opt/gitlab такое себе.
     

  • 1.25, Аноним (25), 16:09, 26/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > в патче проблема решена преобразованием YAML в JSON и проверкой наличия конструкций, корректных в YAML, но недопустимых в JSON из-за использования определённых Unicode-символов

    Это какое-то зумерское "исправление". Я сейчас пытаюсь осознать, что зумеры чтобы проверить на наличие определённых символов перегоняют один смузи-формат в другой... Наверняка с гигабайтами задействованных фреймворков.

    Это какая-то странная квази-айтишная эволюция пост-советских офисных тётенек, зачем-то перегонявших документ в .jpeg  с помощью принтера и сканера.

    Что дальше, для тупого сравнения строк будет запускаться нейросеть в облаке? Мозги, для чего они?

     
     
  • 2.27, Аноним (-), 17:02, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Что дальше, для тупого сравнения строк

    К сожалению со сравнением строк тоже не все хорошо.
    Вон недавно в GNU split не смогли строку на две части разделить.
    И получили уязвимость...

     
  • 2.35, Аноним (-), 20:55, 26/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Это какая-то странная квази-айтишная эволюция пост-советских офисных тётенек,
    > зачем-то перегонявших документ в .jpeg  с помощью принтера и сканера.

    Это тебе еще повезло. А то могут и при помощи камеры на мобильнике. Ну подумаешь, не в фокусе немного.

     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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