Как обновить стандартную библиотеку golang в моем приложении go?

# #go #security #package #dependencies #vendoring

Вопрос:

У меня есть приложение, созданное с go 1.16.4, которое использует (импортирует) archive/zip компонент библиотеки Go std. Я взглянул на примечания к выпуску golang и увидел, что archive/zip в golang 1.16.5 исправлена уязвимость в системе безопасности. Как мне убедиться, что мое приложение больше не уязвимо? Должен ли я обновить свою версию go самого себя, а затем перестроиться с этой новой версией go ? Или я мог бы установить более новую версию исправленного компонента, а затем перестроить? Должны ли обновляться файлы в машине сборки $GOROOT ?

Комментарии:

1. Обновите свой инструмент Go, а затем перестройте приложение. Проще, безопаснее, проще всего.

2. Стандартная библиотека является частью Go; вы не можете указать версию или предоставить ее поставщику. Просто обновите и восстановите.

3. Если двоичный файл построен с помощью docker (хорошее решение для создания повторяющихся сборок вместо локальной среды), достаточно просто изменить версию образа на 1.16.5 и перекомпилировать.

4. Забудьте о ГОРООТЕ, он вам не понадобится (никогда).

Ответ №1:

Должен ли я обновить свою версию go самого себя, а затем перестроиться с этой новой версией go ?

ДА…

  1. Обновление Продолжается.
  2. Перестраивать.

Или я мог бы установить более новую версию исправленного компонента, а затем перестроить?

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

Должны ли обновляться файлы в машине сборки $GOROOT ?

GOROOT-это корневая папка установки Go SDK. Он обновляется при обновлении Go на компьютере (или контейнере), который вызывает go build / go install .