Обучение на "Безопасного"и

Я'м архитектор безопасности, и я'м использоваться для определения безопасности проекта в спецификации, которая получает осуществляемые другими. Я недавно была поставлена задача обучения новых программистов, как проектировать и программы с использованием принципов и"Безопасного" и (и в ближайшем будущем "и приватностью-то"). У меня 30-45 минут (да, я знаю), и разговор должен быть язык агностик. Это значит, мне нужно представить действенные правила не могут быть применены к веб-разработчиков, разработчиков приложений и разработчиков инфраструктуры.

Я придумал 5 основных правил и дополнения:

  1. Доверия нет внутреннего/внешнего входа (охватывает канализации, переполнение буфера и т. д.)
  2. Наименьших привилегий для какого-либо субъекта, объекта или пользователя
  3. Не "не привилегия" по
  4. Безопасной, даже если дизайн известен/публичных
  5. Войти так, что кто-то незнакомый с системой могут отслеживать каждое действие

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

Каждое из этих правил может быть дополнен примерами из любого языка или приложения для конкретных указаний. Я считаю, что это ручки наиболее общих принципов и"Безопасного" от высокого уровня зрения. Я ничего не упустил?

Комментарии к вопросу (10)
Решение

Канонический ресурс для концепции обеспечения безопасности по дизайн "по защите информации в компьютерных систем" по Сэлцер и Шредер. Суть перегоняется в свои 8 принципов безопасного проектирования:

  1. Экономика механизм
  2. Безопасных настроек по умолчанию
  3. Полное посредничества
  4. Открытая конструкция
  5. Разделение привилегий
  6. Наименьших привилегий
  7. Наименее распространенным механизмом
  8. Психологическая приемлемость

Эти принципы, изложенные в 1974 году, до сих пор полностью применимы и сегодня.

Комментарии (2)

Это будет сложно научить принципам проектирования в 30 минут. Я согласен с другими, кто говорит, что вы должны получить их в некотором роде. Я разработал "по получению прав на" карточная игра, чтобы привлечь внимание людей, моделирование угроз, это может быть полезным. (https://blogs.microsoft.com/cybertrust/2010/03/02/announcing-elevation-of-privilege-the-threat-modeling-game/)

Обучение людей тому, как думать, как злоумышленник является очень сложным, это'ы легче научить их о несколько атак, как SQL-инъекция и межсайтовый скриптинг.

И наконец, если вы хотите, чтобы попытаться научить принципам, я сделал серию сообщений в блоге, иллюстрируя Сэлцер и Шредер со сценами из "Звездных войн": http://emergentchaos.com/the-security-principles-of-saltzer-and-schroeder

Комментарии (3)

Вместо того, чтобы сосредоточиться на правила и "соблюдайте эти 5 правил, и вы'вновь обеспечить себе", Я'd акцент на обучении разработчиков о нападавших, и как они думают. Вы можете'т действительно крышка 5 разных вещей, каждая из которых требует каких-то углубленных знаний, чтобы действительно правильно реализовать, так зачем пытаться?

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

Пример:

Несколько лет назад я просматривала 3-й партии веб-отчетности на базе продукта, и у нас был разработчик из поставщиков для создания некоторых отчетов с использованием продукта. Я спросил о безопасности и как она работает в своем продукте. Он продолжал делать "в представлении источника" на веб-странице отчета, и показать мне, как все было динамический HTML, и поэтому его нельзя взломать. Я сидел ошарашенный на минуту, но сказал ему, что это была'т действительно работоспособный безопасности, что вы можете'т доверять клиенту концу, бла-бла-бла.

Он вовсе'т поверьте мне, и спрашивает, как кто-либо сможет взломать этот продукт. Я подумал на минутку, сказал, что я'д подключить браузер к прокси-серверу и проверить, что запрос/ответ. (Сегодня я'd, просто используйте Тампер-данные плагин). Тогда он сказал, что это может быть "рубить века!&и" в этот момент я просто бросил мои руки в поражении, так как он'd уже решил, что его продукт был на "Безопасные" по. Единственный способ убедить его будет реально взломать его продукт, который был'т действительно стоит моего времени, поскольку я не'т собираетесь покупать товар.

Суть в том, что нужно начинать с потребностью в безопасности и то, что мы'вновь все против. Если они Дон'т понимаете, что это's игра окончена. По крайней мере, вы'МР внушить немного страха в них, что является хорошим мотиватором. От того, что я've видел много разработчиков Дон'т действительно на "достать", и они должны понимать, что они'вновь против первых. В первую очередь, чтобы быть в состоянии понять, почему они нуждаются в разработке безопасных приложений.

Люди на самом деле заинтересованы в безопасности, и вы могли бы сделать что-то. В противном случае я боюсь, что у вас присутствует по 35 минут будут только упасть на глухие уши.

Комментарии (4)

Вы можете захватить их внимание в первую очередь. Демо-атаки SQL-инъекции-это просто, понятно, и может подчеркнуть теме'ы значение. Вы можете ссылаться на него на протяжении всего разговора, как вы сделаете очки.

Мне нравится, что вы попадаете в границы доверия. С проверкой входных данных, Я'd удар, что более подробно. Проверка на длину первого, то учтите, белые списки и черные списки. Вы рекомендуете им попытаться автоматически исправить неправильные данные или плохого быть отвергнутым? Коснемся стратегий, которые вы'd рекомендую.

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

Я думаю, что там'ы возможность упомянуть принцип защиты в глубину. Очистки ввода является критической, но ниже его в код, требуя, параметризованные SQL поможет, даже если кто-то не попадает в лодку на входе.

Что касается лесозаготовки, убедитесь, что они понимают разницу между сообщение об ошибке отображается для пользователя, и содержимое файлов журналов. И будьте уверены, они не'т ничего лесозаготовки чувствительной.

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

30-45 минут ... ой. Вы можете вернуться к организатору и попросить два или три дня, посмотреть, какая реакция, что получает. Или, может, программа 10 семестра... в любом случае, удачи!

Комментарии (1)

Вы'ве получил жесткую задачу, очевидно, и все соображения говорят о вы'вэ упомянул, даст вам очень полную тарелку. Но я думаю, что какое-то упоминание или галстук обратно для всех'ы наиболее благоприятствуемой словом, редко реализуемые общей стратегии многоуровневой защиты, было бы весьма полезно для работы, если можно. Или, возможно, фраза это по-другому, и"надо ценить и создавать избыточность мер безопасности в отношении любой конкретной основной вектор угрозы в любом приличном дизайне безопасности.&и"

Вы'вновь создаете веб-приложение, и вы'повторно уверен, вы've получили надежный механизм, чтобы санировать любой & все усилия впрыска код из входного? Что's хороший. Теперь предположим, креативный атакующий находит недостаток, которую вы даже никогда и не думал, недостаток, который позволяет действительно противные, мощный код, чтобы получить в передней части вашего фактического применения. Вы разрабатываете & закаливание логику приложения с мыслью, что, возможно, нужно признать, что сценарий, или ты так и будешь считать, что так у вас то, что вы видите как сильный, надежный единственный защитный механизм против получения кода перед вашего приложения вы можете перенести ваш фокус на другие вещи? Потому что разница между этими двумя выбор часто будет разница между прибывающими на то, что может быть нехило безопасности и придумывают что почти наверняка быть хрупкие конструкции безопасности.

(Примечание: как я'м пишу это, я'м понимая примере опираясь на очистки ввода, как идеальная защита-это'т лучше, потому что в реальном мире мы живем в сегодня, надеюсь, компетентные разработчики впадают в искушение взять что-то, как известно, чтобы быть очень несовершенными очистки ввода, как скала, непробиваемая линия обороны. Надеюсь. Но вы принимаете мою широкую точка точка... )

Комментарии (1)