Приведенные ниже ресурсы являются своего рода стартовым набором для специалистов, которые хотят писать более безопасный код и научиться выявлять уязвимости, прежде чем код перейдет в продакшн.
The Basics of Web Application Security
В этой статье Кейд Кэрнс из ThoughtWorks и Дэниел Сомерфилд из New Relic описали восемь фишек безопасности при создании веб-приложений.
Security and Identity – Google’s Web Fundamentals
Эта статья поможет понять и разобраться в HTTPS и CSP, а также узнать, как определить, был ли взломан ваш сайт, и что с этим делать.
What should every programmer know about security?
Ответ на этот вопрос размещен на Stack Overflow. Он дает хорошую базу знаний в области ключевых принципов безопасности. Это такие принципы, как: не доверять никакому входному сигналу, использовать глубокую защиту, придерживаться принципа наименьших привилегий и использовать моделирование угрозы. В ответах также есть списки книг и учебных курсов.
Security by Design Principles — OWASP
Сообщество Open Web Application Security Project (OWASP) создало этот ресурс, чтобы специалисты могли получить рекомендации, необходимые для создания безопасных приложений на этапе проектирования. Там можно найти ключевые принципы безопасности, их определения и примеры, узнать о десяти самых распространенных угрозах на сегодняшний день.
Writing Security Code
Эта часто рекомендуемая книга была написана специалистами по безопасности Microsoft Майклом Ховардом и Дэвидом Лебланом. Наряду с методами безопасного кодирования, книга охватывает следующие темы:
- моделирование угроз
- проектирование процесса безопасности
- международные вопросы безопасности
- вопросы файловой системы
- добавление конфиденциальности к приложениям
- исследование кода безопасности
Джим Берд, технический директор BIDS Trading Technologies, говорит, что хоть книге и 15 лет, но основы безопасности программного обеспечения остаются неизменными.
The OWASP Top 10
В OWASP Top 10 перечислены наиболее распространенные на сегодняшний день угрозы безопасности в веб-приложениях. Несмотря на то, что некоторые специалисты уже устали слышать о Топ 10, есть веская причина, по которой эксперты по безопасности считают его одним из самых важных ресурсов в области безопасного кодирования. OWASP Top 10 является самым фундаментальным ресурсом по безопасности приложений, поэтому каждый уважающий себя специалист должен напрямую с ним работать. Список был обновлен в 2017 году, но он не сильно изменился за последнее десятилетие.
The OWASP Top 10 Mobile Risks
В OWASP также есть список Топ-10 угроз безопасности мобильных устройств. Мобильная безопасность требует уникального направления исследований, поэтому в дополнение к чтению этих ресурсов, не забудьте закрепить пройденный материал.
24 Deadly Sins of Software Security
Эта книга написана работниками Microsoft и генеральным директором Capsule 8. Она посвящена стандартным угрозам, когда дело доходит до недостатков безопасности в вашем коде. В ней можно найти и некоторые угрозы из OWASP, а также несколько других угроз, которые не входят в Top 10 OWASP.
OWASP Top 10 Proactive Controls
Один из ключевых ресурсов по обучению. Большинство ресурсов и учебных курсов сосредоточены на том, чтобы показать, как ваш код может быть атакован, и рассказать, что нужно делать, чтобы этого не произошло. Здесь же можно найти список действий, которые необходимо выполнить непосредственно для защиты кода.
Common Weakness Enumeration (CWE)
Это список наиболее распространенных угроз безопасности. Он включает в себя более 700 слабых мест, которые можно увидеть в исследованиях и разработках. Ресурс также полезен для разработчиков, которые хотят узнать о CVE.
DevOpsSec
Базовые знания безопасного кодирования безусловно важны, но также нужно знать, какие инструменты и процессы могут обеспечить безопасность кода на протяжении всего жизненного цикла разработки программного обеспечения. Эта книга от BIDS Trading Technologies’ Bird даст ясную практическую картину нескольких современных цепочек безопасного жизненного цикла и процессов, вдохновленных Etsy, Netflix и другими технически сильными, очень успешными компаниями.
Agile Application Security
Эта книга написана Лауром Белом, Ричем Смитом, Майклом Брунтоном-Споллом и Джимом Бердом. Она расширяет темы, описанные в книге DevSecOps, которая готовит специалистов ко многим техническим и организационным проблемам, с которыми они могут столкнуться при создании безопасного ПО.
OWASP Code Review Project
Проверка кода — важный шаг в обнаружении уязвимостей системы безопасности. Изучение того, как искать эти самые уязвимости, повысит шансы разработчиков избегать подобных ошибок.
How I learned to stop worrying (mostly) and love my threat model
Моделирование угроз — это то, что могут понять даже гуманитарии, работающие в Вашей организации. Шон Галлахер, редактор по информационной безопасности в Ars Technica, написал эту статью, чтобы каждый мог смоделировать конкретные ситуации.
OWASP Application Threat Modeling
OWASP Application Threat Modeling — это ресурс моделирования угроз. Он работает в три этапа:
- анализ приложения
- определение степени угрозы
- определение мер устранения или смягчения проблемы.
Джоанна Куриэль, специалист по безопасности приложений в банковской сфере, рекомендует OWASP, так как ресурс охватывает широкий спектр тем в области безопасности: безопасность PHP, защита iOS и Android, XML, saml и многое другое.
Developer-Driven Threat Modeling
В статье Дэнни Диллона, главного специалиста по безопасности EMC, объясняется, почему разработчикам необходимо пользоваться моделированием угроз. Автор описывает уникальный подход EMC к этому делу и объясняет, почему этот процесс должен быть полезен даже инженерам-программистам, у которых нет опыта в области безопасности.
Threat Modeling for Applications
Адам Каудилл, консультант по безопасности, описывает упрощенный процесс моделирования угроз, который можно быстро и легко задокументировать.
Defensive Programming
Защитное программирование – методика разработки ПО, предотвращающая случайное внедрение уязвимостей и обеспечивающая устойчивость к воздействию вредоносных программ и несанкционированному доступу. Эта статья рассматривает историю этого термина и анализирует проблемы защитного программирования.
The Defensive Coding Guide
Гайд по защитному программированию с примерами на C, C++, Java, Python, Shell/Bash, Go и Vala. Руководство от Red Hat также включает в себя инструкции о том, как реализовать, например, аутентификацию и авторизацию.
The Secure Coding Guide
Apple ориентирует этот ресурс на разработчиков iOS и mac OS. Тем не менее, здесь собрано довольно много универсальных советов. Некоторые из разделов акцентируют внимание на важности безопасности, избегании общих уязвимостей и проектировании безопасного пользовательского интерфейса.
The Art of Defensive Programming
Диего Мариани – инженер-программист на сайте Busuu. Он совмещает несколько старых и современных идей о защитном программировании в короткую статью с примерами из PHP. В статье также рассматриваются ключевые моменты небезопасного защитного программирования.
SAFECode
Сто сокровищница знаний по безопасности, которая включает в себя бесплатное онлайн-обучение, руководство по моделированию угроз и рекомендации по безопасной разработке приложений. Это также множество бесплатных, высококачественных ресурсов, которые постоянно пополняются.
Cyber Security Base
Бесплатный онлайн-курс, который отлично подходит для начала обучения безопасному кодированию. Он начинается с основ кибербезопасности и общих уязвимостей веб-приложений, а затем переходит к обнаружению, устранению и созданию уязвимостей. Далее курс затрагивает такие темы:
- безопасная архитектура
- сетевая безопасность
- криптография
- тестирование на проникновение
- CTF
Есть тесты и задания для каждого раздела. Все примеры представлены на Java (но вы можете выполнять задания на любом языке).
SEI CERT Coding Standards
Институт программной инженерии Карнеги-Меллон (SEI) собрал эти полезные правила и рекомендации по безопасному кодированию. Следует ознакомиться с безопасными стандартами кодирования для C, C++, Java, Perl и Android, а также прочитать о 10 лучших методах безопасного кодирования.
Cybrary
Cybrary – платформа с открытым исходным кодом, созданная для обучения безопасности и подготовки к сертификации. Контент бесплатный, но включает в себя бесценные материалы.
Open Security Training – Into to Security Coding
Сайт с открытым исходным кодом, наполненный учебными пособиями по различным темам компьютерной безопасности. Также здесь можно обучиться основам по стратегиям безопасного кодирования. Обучение включает в себя введение в оценку уязвимости, обзоры правильного кода, криптографию, эксплойты ПО и т. д.
Computer System Security – MIT Open Courseware
Один из самых надежных способов изучить основы в области безопасности – пройти курс колледжа MIT. Учебный план охватывает:
- моделирование угроз
- ксплойты
- сетевую безопасность
- аутентификацию
- мобильную безопасность
- экономику безопасности и т. д.
Аналогичные курсы по безопасности есть в Harvard edX, Stanford Online и Coursera.
Институт SANS чем-то схож с OWASP. На сайте есть бесплатные ресурсы для разработчиков и платные учебные курсы, включая программу, направленную на повышение квалификации разработчиков.
My experience with developer security training
Статья Роберта Оже расскажет вам о том, как отличить плохое обучение от хорошего и как построить такой план обучения, который будет удобен разработчикам.
Если вы ищете активные сообщества экспертов по безопасности, посетите подраздел NetSec. Там можно получить ответы на вопросы в области информационной безопасности. Если вы только начали разбираться, лучше всего подойдет подраздел NetSec students.