Политики безопасности Django¶
Команда разработчиков Django твердо привержена ответственному информированию и раскрытию информации о проблемах, связанных с безопасностью. В связи с этим мы приняли и придерживаемся ряда политик, которые соответствуют этому идеалу и направлены на обеспечение своевременного выпуска обновлений безопасности для официального дистрибутива Django, а также для дистрибутивов сторонних разработчиков.
Сообщение о проблемах безопасности¶
Краткая версия: пожалуйста, сообщайте о проблемах безопасности по электронной почте security@djangoproject.com.
Большинство обычных ошибок в Django сообщается в нашем публичном экземпляре Trac, но из-за деликатного характера проблем безопасности мы просим не сообщать о них публично таким образом.
Вместо этого, если вы считаете, что нашли что-то в Django, что имеет последствия для безопасности, пожалуйста, отправьте описание проблемы по электронной почте по адресу security@djangoproject.com
. Почта, отправленная на этот адрес, попадает в команду безопасности <https://www.djangoproject.com/foundation/teams/#security-team>`_.
После отправки проблемы по электронной почте вы должны получить подтверждение от сотрудника службы безопасности в течение 48 часов, и в зависимости от того, какие действия будут предприняты, вы можете получить дополнительные последующие электронные письма.
Отправка зашифрованных отчетов
Если вы хотите отправить зашифрованное письмо (опционально), идентификатором открытого ключа для security@djangoproject.com
является 0xfcb84b8d1d17f80b
, и этот открытый ключ доступен на большинстве используемых серверов ключей.
Поддерживаемые версии¶
В любой момент времени команда Django обеспечивает официальную поддержку безопасности для нескольких версий Django:
- Ветка разработки master development branch, размещенная на GitHub, которая станет следующим основным релизом Django, получает поддержку безопасности. Проблемы безопасности, которые затрагивают только ветку разработки master, а не какие-либо стабильные выпущенные версии, исправляются публично, не проходя через disclosure process.
- Две последние серии релизов Django получают поддержку безопасности. Например, во время цикла разработки, ведущего к выпуску Django 1.5, поддержка будет предоставляться для Django 1.4 и Django 1.3. После выхода Django 1.5 поддержка безопасности Django 1.3 будет прекращена.
- Long-term support releases будет получать обновления безопасности в течение указанного периода.
Когда новые релизы выпускаются по соображениям безопасности, сопроводительное уведомление будет включать список затронутых версий. Этот список состоит исключительно из поддерживаемых версий Django: более старые версии также могут быть затронуты, но мы не проводим расследования, чтобы определить это, и не будем выпускать патчи или новые релизы для этих версий.
Как Django раскрывает проблемы безопасности¶
Наш процесс перехода от частного обсуждения проблемы безопасности к ее обнародованию включает в себя несколько этапов.
Примерно за неделю до обнародования информации мы отправляем два уведомления:
Во-первых, мы уведомляем django-announce о дате и приблизительном времени предстоящего выпуска безопасности, а также о серьезности проблем. Это делается для того, чтобы помочь организациям, которым необходимо убедиться, что у них есть сотрудники, способные справиться с нашими анонсами и обновить Django при необходимости. Уровни серьезности следующие:
Высокий:
- Удаленное выполнение кода
- SQL-инъекция
Умеренная:
- Межсайтовый скриптинг (XSS)
- Подделка межсайтового запроса (CSRF)
- Атаки на отказ в обслуживании
- Сломанная аутентификация
Низкий:
- Раскрытие чувствительных данных
- Нарушенное управление сеансами
- Недействительные перенаправления/переадресации
- Проблемы, требующие необычного варианта конфигурации
Во-вторых, мы уведомляем список people and organizations, состоящий в основном из поставщиков операционных систем и других распространителей Django. Это письмо подписано PGP-ключом кого-то из команды выпуска Django и состоит из:
- Полное описание проблемы и затронутых версий Django.
- Шаги, которые мы предпримем для устранения проблемы.
- Патч(и), если таковые имеются, которые будут применены к Django.
- Дата, когда команда Django применит эти исправления, выпустит новые релизы и публично раскроет проблему.
В день раскрытия информации мы предпримем следующие шаги:
- Примените соответствующий патч(и) к кодовой базе Django.
- Выпустите соответствующий релиз(ы), разместив новые пакеты в the Python Package Index и на сайте Django, а также пометив новый релиз(ы) в git-репозитории Django.
- Опубликовать публичную запись в официальном блоге разработчиков Django, подробно описав проблему и ее решение, указав на соответствующие патчи и новые релизы, и поблагодарив автора проблемы (если он желает быть публично идентифицированным).
- Опубликуйте уведомление в списках рассылки django-announce и oss-security@lists.openwall.com со ссылкой на запись в блоге.
Если проблема, о которой сообщается, считается особенно чувствительной к времени - например, из-за известного эксплойта в природе - время между предварительным уведомлением и публичным раскрытием может быть значительно сокращено.
Кроме того, если у нас есть основания полагать, что проблема, о которой нам сообщили, затрагивает другие фреймворки или инструменты в экосистеме Python/web, мы можем в частном порядке связаться и обсудить эти проблемы с соответствующими сопровождающими, а также скоординировать наше раскрытие и решение с ними.
Команда Django также поддерживает archive of security issues disclosed in Django.
Кто получает предварительное уведомление¶
Полный список людей и организаций, которые получают предварительное уведомление о проблемах безопасности, не оглашается и не будет оглашаться.
Мы также стремимся к тому, чтобы этот список был как можно меньше, чтобы лучше управлять потоком конфиденциальной информации до ее раскрытия. Таким образом, наш список уведомлений - это не просто список пользователей Django, и просто быть пользователем Django не является достаточным основанием для включения в список уведомлений.
В широком смысле получатели уведомлений о безопасности делятся на три группы:
- Поставщики операционных систем и другие распространители Django, которые предоставляют достаточно общий (т.е. не личный адрес электронной почты человека) контактный адрес для сообщений о проблемах с их пакетом Django, или для общих сообщений о безопасности. В любом случае, такие адреса не должны пересылаться в публичные списки рассылки или баг-трекеры. Адреса, которые перенаправляют на личную почту отдельного сопровождающего или контактного лица security-response, приемлемы, хотя частные трекеры безопасности или группы security-response являются предпочтительными.
- В каждом конкретном случае, отдельные сопровождающие пакетов, которые продемонстрировали приверженность реагированию и ответственному отношению к этим уведомлениям.
- В каждом конкретном случае, другие организации, которые, по мнению команды разработчиков Django, должны быть проинформированы о предстоящей проблеме безопасности. Как правило, в эту группу входят крупнейшие и/или наиболее подверженные серьезному воздействию известные пользователи или распространители Django, и от них требуется продемонстрировать способность ответственно получать, хранить конфиденциальность и действовать в соответствии с этими уведомлениями.
Запрос уведомлений¶
Если вы считаете, что вы или организация, которую вы уполномочены представлять, попадаете в одну из перечисленных выше групп, вы можете попросить добавить вас в список уведомлений Django, написав по электронной почте security@djangoproject.com
. Пожалуйста, используйте тему письма «Запрос на уведомление о безопасности».
Ваш запрос должен включать следующую информацию:
- Ваше полное, настоящее имя и название организации, которую вы представляете, если это применимо, а также ваша роль в этой организации.
- Подробное объяснение того, как вы или ваша организация соответствуете хотя бы одному из перечисленных выше критериев.
- Подробное объяснение того, почему вы запрашиваете уведомления о безопасности. Опять же, пожалуйста, помните, что это не просто список для пользователей Django, и подавляющему большинству пользователей следует подписаться на django-announce, чтобы получать предварительное уведомление о том, когда будет выпущен релиз безопасности, без подробностей проблем, а не запрашивать подробные уведомления.
- Адрес электронной почты, который вы хотели бы добавить в наш список уведомлений.
- Объяснение того, кто будет получать/просматривать почту, отправленную на этот адрес, а также информация о любых автоматических действиях, которые будут предприняты (например, подача конфиденциальной проблемы в систему отслеживания ошибок).
- Для физических лиц - идентификатор открытого ключа, связанного с вашим адресом, который может использоваться для проверки полученной от вас электронной почты и шифрования отправленной вам электронной почты, по мере необходимости.
После отправки ваш запрос будет рассмотрен командой разработчиков Django; вы получите ответ с уведомлением о результате рассмотрения вашего запроса в течение 30 дней.
Также следует помнить, что для любого человека или организации получение уведомлений о безопасности является привилегией, предоставляемой исключительно по усмотрению команды разработчиков Django, и что эта привилегия может быть отозвана в любой момент, с объяснением или без объяснения причин.