Google исправила RCE-уязвимость в языке Golang

Материал из Викиновостей, свободного источника новостей

27 января 2021 года

Специалисты компании Google устранили опасную уязвимость (CVE-2021-3115) удаленного выполнения кода в языке Go (Golang), затрагивающую пользователей Windows, которые выполняют команду go get.

Уязвимость была обнаружена японским исследователем безопасности, использующим псевдоним RyotaK, и связана с тем, как работает процесс компиляции, когда пользователь запускает команду «go get» для получения репозитория.

Как правило, в системах Windows shell-команда ОС, запускаемая пользователем или программой, заставляет оболочку сначала искать двоичный/исполняемый файл, связанный с этой командой, в текущем каталоге, а затем список каталогов, указанный в системной переменной PATH.

Например, если пользователь введет netstat в командной строке Windows, ОС сначала будет искать исполняемый файл netstat.exe, netstat.bat или другой исполняемый файл netstat. в текущем каталоге, который получит приоритет и будет выполнен. Если в текущей папке нет netstat, тогда оболочка Windows будет искать системную утилиту netstat, расположение которой указано в переменной Windows %PATH%.

Из-за рисков безопасности, связанных с этим поведением, разработчики оболочек Unix и Windows PowerShell ранее отказались от этого поведения по умолчанию и сделали так, чтобы предпочтение отдавалось расположениям переменных %PATH% над ненадежным текущим каталогом при выполнении команд.

Таким образом, запуск netstat в PowerShell приведет к запуску системной утилиты netstat, а не локально присутствующего netstat.bat, поскольку PoweShell отдает приоритет поиску двоичного файла по этому имени в каталогах% PATH%.

Для согласованности двоичные файлы Golang имитируют правила Unix и Windows на соответствующих системах. В связи с этим выполнение следующей команды Go приведет к несколько разному поведению.

В Windows локально присутствующий двоичный файл go получит приоритет, тогда как системы Unix сначала будут искать свою переменную $PATH, чтобы увидеть, существует ли двоичный файл go в одном из доверенных мест.

Эта модель приоритета локального, ненадежного каталога над местоположениями PATH также реализуется вспомогательными библиотеками и компиляторами, включенными в Go, такими как cgo (утилита для генерации пакетов Go). Когда cgo компилирует код C в Windows, в конечном итоге исполняемый файл Golang сначала ищет компилятор GCC в ненадежном локальном каталоге.

Хотя большинство этих вызовов происходит безопасным образом, компилятор GCC вызывается функцией Go exec.Command, которая в Windows позволяет Go запускать вредоносный gcc.exe, включенный злоумышленником в свои источники приложений, а не легитимный компилятор GCC.

Источники[править]

Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.