Быстрый и простой
Go (Golang) — компилируемый язык от Google: простой синтаксис, высокая скорость, удобная работа с параллельными задачами.
При чём тут безопасность: на Go написаны многие современные инструменты безопасности и облачной инфраструктуры. Его стоит знать, чтобы читать и дорабатывать такие инструменты.
Почему его любят
- Программа собирается в один исполняемый файл без зависимостей — легко распространять.
- Лёгкая параллельность (горутины) — удобно сканировать тысячи адресов.
- Сборка под разные ОС одной командой.
- Встроенная сборка мусора: нет ручного управления памятью.
Безопасность языка
Go безопасен по памяти в обычном коде: нет ручного освобождения памяти, выход за границы массива вызывает ошибку, а не тихую порчу данных. Это исключает целый класс уязвимостей, типичных для C и C++.
Но логические ошибки, инъекции и небезопасные зависимости возможны в любом языке.
Инструменты Go для безопасности
В экосистеме Go есть официальный инструмент govulncheck: он проверяет, использует ли программа уязвимые функции из зависимостей, и учитывает, вызываются ли они на самом деле.
Это пример того, как язык поддерживает управление уязвимостями прямо в процессе разработки.
Обратная сторона
Удобство Go оценили и злоумышленники: на нём пишут вредоносные программы, потому что один файл легко запускается на разных ОС, а анализировать крупные бинарные файлы Go сложнее.
Поэтому аналитикам вредоносного ПО тоже полезно понимать, как устроены программы на Go.
Главное за урок
- Go — быстрый компилируемый язык, программы — один файл.
- Безопасен по памяти, но логические ошибки возможны.
- govulncheck находит используемые уязвимые зависимости.