Новая уязвимость «ParseThru» в приложениях на GoLang.

3 августа 2022 г. 10:14
 1606

Исследователи безопасности обнаружили новую уязвимость «ParseThru».

Исследователи безопасности обнаружили новую уязвимость под названием «ParseThru» в приложениях на базе языка Golang, которой можно воспользоваться для получения несанкционированного доступа к облачным приложениям.

«Недавно обнаруженная уязвимость позволяет злоумышленнику обойти проверку при определенных условиях, в результате использования небезопасных методов разбора URL, встроенных в язык» - сообщается в отчете израильской компании Oxeye, специализирующейся на кибербезопасности, которым поделилось издание The Hacker News.

Проблема, по сути, связана с несоответствиями, возникшими в результате изменений, внесенных в логику разбора URL в Golang, реализованную в библиотеке «net/url».

Если в версиях языка программирования до версии 1.17 точка с запятой считалась допустимым разделителем запросов (например, example.com?a=1;b=2&c=3), то с тех пор это поведение было изменено, и при обнаружении строки запроса, содержащей точку с запятой, выдается ошибка.

 

 

«Пакеты net/url и net/http раньше принимали «;» (точку с запятой) в качестве разделителя настроек в запросах URL, в дополнение к «&» (амперсанд)» - говорится в примечаниях к версии 1.17, выпущенной в августе прошлого года.

«Теперь настройки с неперекодированными точками с запятой отклоняются, а серверы net/http будут записывать предупреждение в 'Server.ErrorLog', если встретят такую точку в URL-запросе».

 

 

Проблема возникает, когда публичный API на базе Golang, построенный на версии 1.17 или более поздней, взаимодействует с внутренним сервисом, работающим на более ранней версии, что приводит к сценарию, когда злоумышленник может тайно отправлять запросы, включающие параметры запроса, которые в противном случае были бы отклонены.

Проще говоря, идея заключается в отправке запросов, содержащих точку с запятой в строке запроса, которая игнорируется пользовательским API Golang, но обрабатывается внутренним сервисом. Это, в свою очередь, становится возможным благодаря тому, что один из методов, отвечающих за получение разобранной строки запроса, молча отбрасывает возвращаемую ошибку.

Oxeye заявила, что выявила несколько случаев использования ParseThru в проектах с открытым исходным кодом, таких как Harbor, Traefik и Skipper, что позволяло обойти установленные валидации и выполнить несанкционированные действия. Проблемы были устранены после ответственного раскрытия информации соответствующим производителям.

Это уже не первый случай, когда парсинг URL представляет собой проблему безопасности. Ранее в январе этого года Claroty и Snyk раскрыли целых восемь дефектов в сторонних библиотеках, написанных на языках C, JavaScript, PHP, Python и Ruby, которые возникли в результате путаницы при разборе URL.

Источник: https://thehackernews.com

Системы Информационной Безопасности