Pull to refresh

Golang-дайджест № 27 (1 – 31 марта 2023)

Level of difficultyEasy
Reading time5 min
Views3.7K

Свежая подборка новостей и материалов.

Новости, события

  • Выпущены Go 1.20.3 и 1.19.8 - эти выпуски включают исправления безопасности

    • go/parser: бесконечный цикл при разборе.

      • Вызов любой из функций Parse в исходном коде Go, который содержит директивы //line с очень большими номерами строк, может вызвать бесконечный цикл из-за целочисленного переполнения.

    • html/templateобратные кавычки не рассматриваются как разделители строк

      • Шаблоны не учитывали обратные кавычки (`) как разделители строк Javascript и поэтому не экранировали их, как ожидалось. Обратные кавычки используются, начиная с ES6, для литералов шаблонов JS. Если шаблон
        содержал действие шаблона Go в литерале шаблона Javascript, содержимое действия можно было бы использовать для завершения литерала, внедряя произвольный код Javascript в шаблон Go.

    • net/http, net/textproto:  чрезмерное выделение памяти, при анализе заголовков HTTP и MIME может выделяться большой объем памяти даже при анализе небольших данных.

      • Входные данные могут привести к тому, что общая функция, используемая для анализа заголовков HTTP и MIME, будет выделять значительно больше памяти, чем требуется для хранения проанализированных заголовков. Злоумышленник может использовать это поведение, чтобы заставить HTTP-сервер выделять большие объемы памяти из небольшого запроса, что может привести к нехватке памяти и отказу в обслуживании.

    • net/http, net/textproto, mime/multipart: Анализ много компонентной формы может потреблять большое количество ресурсов ЦП и памяти при обработке входных данных формы, содержащих очень большое количество частей. Это связано с несколькими причинами:

      • mime/multipart.Reader.ReadForm ограничивает общую память, которую может потреблять проанализированная составная форма. ReadForm может занижать объем потребляемой памяти, что приводит к принятию большего количества входных данных, чем предполагалось.
        Ограничение общей памяти не учитывает повышенную нагрузку на сборщик мусора из-за большого количества небольших выделений памяти в формах, состоящих из многих частей.
        ReadForm может выделять большое количество недолговечных буферов, что еще больше увеличивает нагрузку на сборщик мусора.
        Сочетание этих факторов может позволить злоумышленнику заставить программу, анализирующую составные формы, потреблять большое количество ресурсов ЦП и памяти, что может привести к отказу в обслуживании. Это затрагивает программы, использующие mime/multipart.Reader.ReadForm, а также синтаксический анализ форм в пакете net/http с методами запроса FormFile, FormValue, ParseMultipartForm и PostFormValue.

  • Предложение log/slog: structured, leveled logging принято.

Awesome

Материалы для обучения

Статьи

Инструменты

  • vald 1.7.4 - Распределенная векторная поисковая система.

  • imagor 1.4.3 — сервер обработки изображений с поддержкой Docker.

  • ebitengine 2.5.1 — игровой движок с открытым исходным кодом 2D-игр.

  • mirrord 3.34.0 — инструмент для запуска локальной службы в облачном (Kubernetes) контексте.

  • zitadel 2.23.1 — система управления пользователями, которая быстро настраивается, мультитенантность с настройкой фирменного стиля, безопасный вход в систему, самообслуживание, OpenID Connect, OAuth2.x, SAML2, беспарольный доступ с FIDO2 (включая пароли), OTP, U2F и неограниченный контрольный журнал.

  • phoneinfoga 2.10.4 — инструмент для сканирования международных телефонных номеров. Это позволяет вам сначала собрать базовую информацию, такую ​​как страна, регион, оператор связи и тип линии, а затем использовать различные методы, чтобы попытаться найти провайдера VoIP или идентифицировать владельца.

  • Yaegi 0.15.1 — интерпретатор Go.

  • ZincSearch 0.4.3 — Альтернатива Elasticsearch на платформе Go.

  • q 0.11.1 — DNS-клиент командной строки с поддержкой UDP, TCP, DoT, DoH, DoQ и ODoH.

  • HoverFly 1.5.2 — Легкий инструмент моделирования API.

  • task 3.22.0 — это средство запуска/сборки задач

  • algnhsa 1.0.0 — серверный адаптер AWS Lambda Go net/http, позволяет запускать веб-приложения Go на AWS Lambda и API Gateway или ALB без изменения существующих обработчиков

  • pngr — стартовый комплект Dockerized (postgres + nginx + golang + react)

  • macaron 1.5.0 — модульный веб-фреймворк на Go.

  • chi 5.0.8 — маршрутизатор для создания сервисов Go HTTP

  • chromedp 0.9.0 — управление браузерами через протокол Chrome DevTools.

  • ko 0.13.0 — контейнер образов контейнеров для приложений Go.

  • v8go 0.9.0 — выполнение JavaScript из Go

  • gotraceui 0.1.0 — приложение с графическим интерфейсом для просмотра трассировок выполнения Go

  • pathfind — поиск пути на 2D-полигональных картах, находит кратчайший путь между двумя точками в наборе полигонов путем построения графа видимости и последующего использования для него алгоритма поиска A*.

  • betteralign 0.2.4 — это инструмент для обнаружения структур, которые использовали бы меньше памяти, если бы их поля были отсортированы, и, при необходимости, сортировки таких полей.

Видео

Подкасты

Сообщества

Eжедневный дайджест в телеграм.

GolangStack

Tags:
Hubs:
Total votes 9: ↑8 and ↓1+7
Comments2

Articles