Рубрики
Uncategorized

Как сохранить ваш код в безопасности

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

От devops to devsecops (3 серии части)

Фотографии из Шахадат Шечул на Бессмысленно

Сначала я хочу подчеркнуть, что учиться от Cybersecurity Ventures Институт, который сказал:

Затраты на ущерб кибербезопасности будут подняться до 11,5 млрд долларов в 2019 году, а бизнес будет жертвами атаковать вымоготы каждые 14 секунд в то время.

Риски кибербезопасности собираются расти и снова и в течение следующих нескольких лет, и он уже широко распространен, поэтому вы должны рассмотреть безопасность как Defacto Для вашей организации и подумайте о в том числе в корнях из любой функции, которую вы собираетесь развиваться.

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

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

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

📷 Большая картинка

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

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

Таким образом, вы должны попытаться ответить на эти вопросы:

Потому что кто-то сказал мне, что я должен? Я глубоко думаю, что у меня есть к Почему я хочу улучшить безопасность?
Организация? Технический стек? Где я должен толкать первым?
Организация? Технический стек? Что будет самым простым

🤔 Как добиться этого?

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

  1. Добавление команды безопасности для обучения дизайнерским комитетом.

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

  3. Написать документацию о том, как надежно кодировать, обрабатывать секреты, управлять исходным кодом и т. Д… Так что новички могут ссылаться на это.

  4. Добавьте SAST (например, CheckMarx, покрытие и т. Д.) В вашем CI/CD для проверки качества кода в условиях безопасности.

  5. Добавьте инструмент для проверки предупреждений уязвимости безопасности (CVE).

  6. Добавьте инструмент для проверки зависимостей и, если была раскрыта публичная уязвимость, которая должна потребовать обновления.

  7. Прибор вашего автоматизированного тестирования на добавление случаев использования безопасности

  8. Выполните тест на проникновение в вашем приложении

Все это то, что мы называем Безопасность по дизайну и Devsecops Отказ

Если я должен классифицировать все это в эти две категории.

SEC Team Part Tech Community Community Безопасность по дизайну
Обучение безопасным развитием командам Безопасность по дизайну
Написать код … Безопасность по дизайну
Добавить SAST в CI / CD Devsecops.
Проверьте CVE автоматически Devsecops.
Проверьте уязвимые зависимости Devsecops.
Безопасное тестирование Devsecops.
Тестирование проникновения в вашем приложении Безопасность по дизайну

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

1. SEC Team Part of Tech Concept Commitee 👨⚖️

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

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

У вас есть технический комитет дизайна (или что-то подобное)?

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

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

У многих компаний, с которыми я работал, контроллер по техническому дизайну Tech — это комитет, в котором архитекторы, инженеры программного обеспечения для ведущих программ и OPS должны говорить о решении, чтобы решить, как оно должно быть реализовано на более высоком уровне. Это Идеально Спот, чтобы добавить безопасность в список.

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

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

2. Обучение безопасным развитием командам 👨🏫

Я был разработчиком менее десяти лет. В эти годы я разработал много приложений, в основном на iOS (некоторые другие на .NET Framework 😉). Оглядываясь назад, я могу сказать, что поставлял несколько дерьмовых промокновений с точки зрения безопасности. Применение само по себе было совершенным. Он очень хорошо работал, было быстро, не было много следов в памяти, было идеально разработано и т. Д. Но с точки зрения безопасности, если бы я должен был задерживаться ее сейчас, я бы смеялся над собой.

Это потому, что я был плохой разработчиком? Конечно, не Отказ Это было, потому что я не тренировался с точки зрения безопасности программного обеспечения? Наверняка Отказ

Это важнее, чем когда-либо, что каждый разработчик становится разработчиком безопасности

Безопасное разработка программного обеспечения определенно не то, что приходит инстинктивно. Если у вас нет широкого интереса к безопасности программного обеспечения, у вас есть более чем достаточно, чтобы учиться в программной части, над которой вы работаете (был IOS, Android, Nodejs, базы данных и т. Д.). Так зачем потратить некоторое время на безопасность, поскольку его не требуется вашим руководством (мы можем оглянуться назад на предыдущие части этого поста).

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

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

Много Хорошая подготовка онлайн существуют. Много Хорошие книги можно купить тоже.

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

3. Напишите код поведения, чтобы написать безопасное программное обеспечение 👨🎨

Теперь, когда ваши команды обучены и убеждены в написании безопасного программного обеспечения с нуля, они должны полагаться на лучшие практики, определенные на уровне организации. Так что новички знали бы, как делать вещи, не спрашивая. Для этого правила писать код безопасного способа должен быть четко определен на вашей документации. Например, «Как хранить данные Datas в ваших базах данных». Каждое данные отличаются, и не все данные должны быть зашифрованы, вы должны сделать его кристаллы, что, что, когда и как хранить данные. Или как использовать закрепление сертификата на приложении Android.

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

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

4. Добавить Sast в CI/CD 👷

Я предполагаю, что у вас есть постоянная интеграция/непрерывная доставка (CI/CD) трубопровод. Если у вас есть так, есть очень простой способ добавления безопасности на вашем CI/CD-трубопроводе. Вы можете добавить статическое программное обеспечение для тестирования безопасности приложений для вас CI/CD-трубопровод.

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

Вы можете добавить его в разную часть вашего конвейера CI/CD. Это может быть в самом конце, прежде чем ваши женкинс собирается создать свое приложение. Или каждый раз, когда кто-то подталкивает код в кодовую базу.

Это зависит от того, что вы хотите достичь. Тем не менее, я не рекомендую сделать это слишком часто (каждый раз, когда кто-то толкает код, кажется мне слишком много).

5. Проверьте CVE автоматически 🤖

Многие исследователи безопасности проводят время в поисках уязвимостей на Softwares и раскрывать уязвимости ответственно. Эти уязвимости известны как «обычные уязвимости и экспозиции» и собрались на конкретных веб-сайтах, таких как Cdeetails например.

Некоторые инструменты, такие как Рентген Например, можно автоматически проверить, если ваше программное обеспечение имеет некоторые раскрытые уязвимости.

Вы можете установить его в вашем CI/CD-трубопроводе.

6. Проверьте уязвимые зависимости 🤝

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

Рентген Можно автоматически проверять, если ваше программное обеспечение имеет некоторые раскрытые уязвимости в зависимостях, которые вы используете. Зависимость Из GitHub можно сделать так хорошо автоматически. Но я действительно люблю Снайк Чтобы проверить все известные недостатки из ваших зависимостей.

Это особенно полезно, если вы используете библиотеки с открытым исходным кодом в вашей кодовой базе.

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

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

7. Безопасное тестирование 🤖.

В конце конвейера у вас есть рабочее приложение, которое можно проверить. Как проверить его фокусирование на безопасности?

Во-первых, вы можете попытаться сосредоточиться на OwASP топ 10 Для вашего технического стека (мобильный, веб, и т. Д…). OwASP защищает приближение к безопасности приложений как на людей, процессу и технологическую проблему, поскольку наиболее эффективные подходы к безопасности применения включают улучшения во всех этих областях.

Позвольте сказать, что вы собираетесь проверить приложение iOS, вы можете следовать за Руководство по тестированию мобильной безопасности написано Фондом OWASP.

Это поможет вам настроить свой тестирующий завод (JailBoken iPhone, укорененный Android и т. Д.), а затем сосредоточиться на наиболее распространенных уязвимостях на этих устройствах. Если вы можете быть уверены, что вы не уязвимы для этих недостатков, вы действительно выемки над соревнователем. 😉

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

8. Pentest Ваше приложение 🕵️

В конце концов, вы можете сделать Pentest в вашем приложении. Это имеет стоимость Но это помещает вас в реальную атаку сценариев.

Если у вас есть красная команда в вашей компании (что, вероятно, означает, что вы организации довольно зрелые), это их работа для проникновения проникновения по тестированию вашего приложения. На более распространенном подходе вы можете купить тестирование проникновения в вашем приложении от компаний. Их Pentesters собираются попытаться найти уязвимости в вашем приложении.

Это идеальный подход. Но у вас должны быть некоторые ресурсы в вашей компании, чтобы справиться со всеми уязвимостями, которые обнаружили Pentesters. Если вы этого не сделаете, вы знаете, что вы рискуете, вы потратили много денег Но вы не улучшили свою безопасность.

Так что это возвращается, чтобы принести безопасность на уровне организации. Вы должны иметь некоторые выделенные ресурсы (App Security Engineer), чтобы правильно справиться с этим, чтобы объяснить уязвимости разумным образом к команде разработки, чтобы следовать за тем, что уязвимости правильно исправлены и тестируют ее. Он также может добавить новый сценарий теста для этих уязвимостей (на этапе 7).

Быстрая победа Действия 🤜 🤛

1. Тренироваться или нанять кого-то

Если у вас нет никого, кто посвящен безопасности, либо Поезд кого-то взять эту роль или Нанять кого-то Отказ

2. Добавить безопасность в свою линию управления

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

3. От разработчиков для разработчиков безопасности

Научите своих разработчиков стать командой разработчиков безопасности. Это может быть либо через внутреннее обучение, либо в обучении.

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

Долгосрочные действия ⏳

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

1. Ориентированный на безопасность кода отзывы

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

2. Расширить знания о безопасности к нетехнологичным функциям

Тем не менее, это то, что требует времени, и где должны быть вовлечены команды. Обеденные сеансы Brown Bag — это хороший способ не забывать, что безопасность является постоянным процессом, а не односторонним билетом.

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

Так что вы не можете остановиться и сказать «Это живут, все кончено для меня. Следующая функция, пожалуйста !!! «

3. Инструмент ваш трубопровод CI

С точки зрения хорошей практики, инструментируя ваш CI/CD-трубопровод на следующем шаге, чтобы пойти. Добавьте зависимости Chek, автоматический тест на основе вашей бизнес-логики и знания приложения.

4. План тестирования проникновения

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

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

От devops to devsecops (3 серии части)

Оригинал: «https://dev.to/shostarsson/how-to-keep-your-code-secure-2pag»