Политики безопасности 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 применит эти исправления, выпустит новые релизы и публично раскроет проблему.

В день раскрытия информации мы предпримем следующие шаги:

  1. Примените соответствующий патч(и) к кодовой базе Django.
  2. Выпустите соответствующий релиз(ы), разместив новые пакеты в the Python Package Index и на сайте Django, а также пометив новый релиз(ы) в git-репозитории Django.
  3. Опубликовать публичную запись в официальном блоге разработчиков Django, подробно описав проблему и ее решение, указав на соответствующие патчи и новые релизы, и поблагодарив автора проблемы (если он желает быть публично идентифицированным).
  4. Опубликуйте уведомление в списках рассылки django-announce и oss-security@lists.openwall.com со ссылкой на запись в блоге.

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

Кроме того, если у нас есть основания полагать, что проблема, о которой нам сообщили, затрагивает другие фреймворки или инструменты в экосистеме Python/web, мы можем в частном порядке связаться и обсудить эти проблемы с соответствующими сопровождающими, а также скоординировать наше раскрытие и решение с ними.

Команда Django также поддерживает archive of security issues disclosed in Django.

Кто получает предварительное уведомление

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

Мы также стремимся к тому, чтобы этот список был как можно меньше, чтобы лучше управлять потоком конфиденциальной информации до ее раскрытия. Таким образом, наш список уведомлений - это не просто список пользователей Django, и принадлежность к числу пользователей Django не является достаточным основанием для включения в список уведомлений.

В широком смысле получатели уведомлений о безопасности делятся на три группы:

  1. Поставщики операционных систем и другие распространители Django, которые предоставляют достаточно общий (т.е. не личный адрес электронной почты человека) контактный адрес для сообщений о проблемах с их пакетом Django, или для общих сообщений о безопасности. В любом случае, такие адреса не должны пересылаться в публичные списки рассылки или баг-трекеры. Адреса, которые перенаправляют на личную почту отдельного сопровождающего или контактного лица security-response, приемлемы, хотя частные трекеры безопасности или группы security-response являются предпочтительными.
  2. В каждом конкретном случае, отдельные сопровождающие пакетов, которые продемонстрировали приверженность реагированию и ответственному отношению к этим уведомлениям.
  3. В каждом конкретном случае, другие организации, которые, по мнению команды разработчиков Django, должны быть проинформированы о предстоящей проблеме безопасности. Как правило, в эту группу входят крупнейшие и/или наиболее подверженные серьезному воздействию известные пользователи или распространители Django, и от них требуется продемонстрировать способность ответственно получать, хранить конфиденциальность и действовать в соответствии с этими уведомлениями.

Субъекты аудита и сканирования безопасности

В соответствии с политикой, мы не добавляем эти типы организаций в список уведомлений.

Запрос уведомлений

Если вы считаете, что вы или организация, которую вы уполномочены представлять, попадаете в одну из перечисленных выше групп, вы можете попросить добавить вас в список уведомлений Django, написав по электронной почте security@djangoproject.com. Пожалуйста, используйте тему письма «Запрос на уведомление о безопасности».

Ваш запрос должен включать следующую информацию:

  • Ваше полное, настоящее имя и название организации, которую вы представляете, если это применимо, а также ваша роль в этой организации.
  • Подробное объяснение того, как вы или ваша организация соответствуете хотя бы одному из перечисленных выше критериев.
  • Подробное объяснение того, почему вы запрашиваете уведомления о безопасности. Опять же, пожалуйста, помните, что это не просто список для пользователей Django, и подавляющему большинству пользователей следует подписаться на django-announce, чтобы получать предварительное уведомление о том, когда будет выпущен релиз безопасности, без подробностей проблем, а не запрашивать подробные уведомления.
  • Адрес электронной почты, который вы хотели бы добавить в наш список уведомлений.
  • Объяснение того, кто будет получать/просматривать почту, отправленную на этот адрес, а также информация о любых автоматических действиях, которые будут предприняты (например, подача конфиденциальной проблемы в систему отслеживания ошибок).
  • Для физических лиц - идентификатор открытого ключа, связанного с вашим адресом, который может использоваться для проверки полученной от вас электронной почты и шифрования отправленной вам электронной почты, по мере необходимости.

После отправки ваш запрос будет рассмотрен командой разработчиков Django; вы получите ответ с уведомлением о результате рассмотрения вашего запроса в течение 30 дней.

Также следует помнить, что для любого человека или организации получение уведомлений о безопасности является привилегией, предоставляемой исключительно по усмотрению команды разработчиков Django, и что эта привилегия может быть отозвана в любой момент, с объяснением или без объяснения причин.

Предоставьте всю необходимую информацию

Если вы не предоставите требуемую информацию при первоначальном обращении, это будет засчитано вам при принятии решения об одобрении или неодобрении вашего запроса.

Вернуться на верх