Telegram Group & Telegram Channel
🔐 Непредвиденные уязвимости в парсерах Go

Go-разработчики нередко упускают из виду, как стандартные JSON / XML / YAML-парсеры могут быть использованы злоумышленниками, что приводит к обходу аутентификации и утечке данных.

1. Опасные теги при (un)marshal

* Поля без json:"-" участвуют в Unmarshal.
* Неверные теги:
* json:"-,omitempty" — парсер ждёт ключ "-", поле остаётся доступным.
* json:"omitempty" — имя поля становится "omitempty", модификатор не работает.

Решение: использовать json:"-" и Semgrep-правила:
trailofbits.go.unmarshal-tag-is-dash и trailofbits.go.unmarshal-tag-is-omitempty.

2. Несогласованность парсеров

* Дубликаты ключей: Go берёт последнее значение, другие парсеры — первое или ошибку.
* Регистронезависимый поиск: {"ACTION":"X"} читается как Action только в Go.
* Unicode-подмена имён (`aKtionſ`) проходит незамеченной.

3. Путаница форматов

* XML-парсер Go игнорирует мусор до/после документа → JSON-внедрение.
* YAML-парсер принимает JSON как валидный YAML.
* Пример CVE-2020-16250 (Hashicorp Vault): JSON в XML-парсер → обход auth.

Рекомендации

* Жёсткий режим:
* JSON — decoder.DisallowUnknownFields()
* YAML — KnownFields(true)
* Свой строгий парсер с проверкой дубликатов и case-collisions.
* Единый парсер и настройки во всех сервисах.
* Следить за безопасными дефолтами JSON v2 в Go.
* Использовать Semgrep для поиска рисков.

Ключевые выводы

1. Включить строгий парсинг.
2. Синхронизировать настройки во всех микросервисах.
3. Переходить на JSON v2, когда он стабилизируется.
4. Периодически запускать статический анализ (Semgrep).

Go-парсеры удобны, но при работе с недоверенными данными необходимы дополнительные меры.

📌 Читать



tg-me.com/golang_books/1009
Create:
Last Update:

🔐 Непредвиденные уязвимости в парсерах Go

Go-разработчики нередко упускают из виду, как стандартные JSON / XML / YAML-парсеры могут быть использованы злоумышленниками, что приводит к обходу аутентификации и утечке данных.

1. Опасные теги при (un)marshal

* Поля без json:"-" участвуют в Unmarshal.
* Неверные теги:
* json:"-,omitempty" — парсер ждёт ключ "-", поле остаётся доступным.
* json:"omitempty" — имя поля становится "omitempty", модификатор не работает.

Решение: использовать json:"-" и Semgrep-правила:
trailofbits.go.unmarshal-tag-is-dash и trailofbits.go.unmarshal-tag-is-omitempty.

2. Несогласованность парсеров

* Дубликаты ключей: Go берёт последнее значение, другие парсеры — первое или ошибку.
* Регистронезависимый поиск: {"ACTION":"X"} читается как Action только в Go.
* Unicode-подмена имён (`aKtionſ`) проходит незамеченной.

3. Путаница форматов

* XML-парсер Go игнорирует мусор до/после документа → JSON-внедрение.
* YAML-парсер принимает JSON как валидный YAML.
* Пример CVE-2020-16250 (Hashicorp Vault): JSON в XML-парсер → обход auth.

Рекомендации

* Жёсткий режим:
* JSON — decoder.DisallowUnknownFields()
* YAML — KnownFields(true)
* Свой строгий парсер с проверкой дубликатов и case-collisions.
* Единый парсер и настройки во всех сервисах.
* Следить за безопасными дефолтами JSON v2 в Go.
* Использовать Semgrep для поиска рисков.

Ключевые выводы

1. Включить строгий парсинг.
2. Синхронизировать настройки во всех микросервисах.
3. Переходить на JSON v2, когда он стабилизируется.
4. Периодически запускать статический анализ (Semgrep).

Go-парсеры удобны, но при работе с недоверенными данными необходимы дополнительные меры.

📌 Читать

BY Golang Books




Share with your friend now:
tg-me.com/golang_books/1009

View MORE
Open in Telegram


Golang Books Telegram | DID YOU KNOW?

Date: |

The SSE was the first modern stock exchange to open in China, with trading commencing in 1990. It has now grown to become the largest stock exchange in Asia and the third-largest in the world by market capitalization, which stood at RMB 50.6 trillion (US$7.8 trillion) as of September 2021. Stocks (both A-shares and B-shares), bonds, funds, and derivatives are traded on the exchange. The SEE has two trading boards, the Main Board and the Science and Technology Innovation Board, the latter more commonly known as the STAR Market. The Main Board mainly hosts large, well-established Chinese companies and lists both A-shares and B-shares.

Golang Books from us


Telegram Golang Books
FROM USA