Спросили тут, какие мои доказательства, что любая уязвимость в коде поддается устранению. И, вроде бы очевидная хрень, но ведь «очевидная хрень» ≠ «доказательство». Да и уязвимости можно же по-разному трактовать. И вот тут — как бы уже не факт.
На днях Trail of Bits разродились в своём блоге статьей Unexpected security footguns in Go's parsers, посвященной не вполне очевидным проблемам, возникающим при парсинге структурированных форматов данных. Если одним предложением, то дизайн парсеров JSON, XML и YAML в Go содержит несколько подводных камней, хоть и упрощающих жизнь разработчика, но и открывающих возможности для атакующего. Статья действительно интересная, отбирать читателей у ребят из Trail of Bits желания нет, поэтому за подробностями — welcome по ссылке выше. Но, чтобы было понятно, о каких подводных камнях идёт речь, приведу несколько CVE, упомянутых в той статье: