В реализации команды «go get«, предоставляемой штатным интерфейсом командой строки для языка Go и используемой для загрузки пакетов и связанных с ними зависимоcтей, выявлено несколько уязвимостей, позволяющих выполнить код при обработке специально оформленных пакетов, подготовленных злоумышленниками. Проблемы устранены в корректирующих выпусках Go 1.11.3 и 1.10.6.
Первая уязвимость (CVE-2018-16873) проявляется при выполнении команды «go get -u» и прямом импорте модулей в режиме GOPATH. Атака сводится к созданию в модуле импортируемых путей, заканчивающихся на «/.git», которые воспринимаются при вызове «go get -u» как корень репозитория с последующим выполнением в нём команд git. Выполнение кода организуется через размещение вредоносных команд в прикреплённом к репозиторию файле конфигурации git;
Вторая уязвимость (CVE-2018-16874) позволяет при выполнении команды
«go get» выйти за пределы определённого для модуля корневого пути, через манипуляцию с фигурными скобками в импортируемых путях. Проблема проявляется только в режиме GOPATH и не затрагивает появившийся в Go 1.11 экспериментальный режим модулей. При помощи данной уязвимости атакующий может перезаписать произвольные файл в ФС, насколько это позволяют текущие полномочия.
