суббота, 25 июня 2011 г.

Исправлена уязвимость в безопасности модулей urllib/urllib2

Источник: urllib Security Vulnerability Fixed

Гвидо ван Россум недавно разместил в репозитории исправление уязвимости CVE-2011-1521, проблемы безопасности в библиотеках Python, обеспечивающих работу с URL. Несмотря на то, что проблемы безопасности возникают редко, это событие - хороший повод посвятить сообщество в ход работы в случае их возникновения. Работа обычно состоит из 3 этапов: сообщения о проблеме, её анализе и исправления.

Сообщение о проблеме


Если Вы нашли проблему безопасности в CPython, то первое, о чем мы просим, - не разглашать подробности этой проблемы. После того, как Вы убедились, что действительно нашли проблему безопасности, лучшим способом донести эти знания до разработчиков ядра будет создать краткий, но детальный отчет.

Из хорошего отчета можно точно определить, как обнаруженная проблема влияет на соответствующие части системы. Если проблема проявляется на какой-то конкретной платформе или зависит от наличия какого-либо другого кода в системе, то это также полезно знать разработчикам. Хорошо бы знать версии Python, которые затрагивает данная проблема, все актуальные версии Python будут протестированы на наличие указанной уязвимости. И последнее, если у Вас есть тест, отражающий данную проблему, не забудьте включить его в отчет. Всю информацию следует отправить группе security@python.org.

Нилс Хайнен из команды безопасности Google не так давно представил на рассмотрение хороший отчет. Он обнаружил проблему в обработке перенаправления HTTP 302 модулями urllib и urllib2 из стандартной бибилиотеки Python. А выявил Нилс то, что сервер может перенаправлять запросы на неподходящие схемы, что приводит к ситуациям, опасным как для данных, так и для систем. В своем исходном сообщении Нилс рассказал о двух сценариях, когда такие перенаправления могут вызвать проблемы.

Во-первых, поскольку urllib/urllib2 использует обработчик для URL схемы file://, то перенаправление на file:///etc/passwd может раскрыть информацию о паролях. Нилс также пояснил, что перенаправление на системное устройство, подобно file:///dev/zero, может привести к исчерпанию ресурсов и, как следствие, к отказу от обслуживания.

Анализ сообщения об уязвимости


Для уменьшения риска разглашения информации об уязвимости в список рассылки security@python.org входит небольшая группа доверенных разработчиков, которые анализируют и обрабатывают сообщения как можно скорее. Если Вы хотите передавать информацию этой группе в зашифрованном виде, подробно об использовании OpenPGP читайте на страничке новостей безопасности.

Если группа подтвердит наличие проблемы в безопасности, то эта уязвимость может быть анонсирована совместно с устраняющим ее патчем. В данном случае Гвидо ван Россум публично сообщил об уязвимости, которую нашел Нилс, в issue #11662, включив патч.

 

Исправление проблемы


Патч, опубликованный Гвидо, ограничивает перенаправление следующими URL схемами: http://, https:// и ftp://. Использование FTP перенаправления было признано допустимым, оно часто используется системами зеркалирования серверов загрузки, которые иногда перенаправляют запросы на географически более близкие FTP сервера.

Теперь в Python версий 2.x, когда запрашивается перенаправление на неподходящую схему, метод redirect_internal класса FancyURLopener генерирует исключение IOError. Метод http_error_302 класса HTTPRedirectHandler ведет себя аналогично, только будет генерировать исключение HTTPError. В Python 3 такие же исправления внесены в работу модуля urllib.request. В патч включены два теста, проверяющие перенаправление как на правильные, так и на неправильные схемы.

Что касается пользователей Python, то последний выпуск Python 2.5, с доработкой в области безопасности, скоро появится. Несмотря на то, что плановые даты выпуска обновлений для версий 2.6, 2.7, 3.1 и 3.2 пока не определены, их исходный код был доработан для исправления данной уязвимости.

Комментариев нет:

Отправить комментарий