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

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