Безопасность при разработке
При разработке eXpress применялись различные подходы и практики SDL и OWASP Web Security Testing Guide.
SDL — это процесс который позволяет убедиться в необходимом уровне безопасности разрабатываемой системы. SDL базируется на основе практик направленных на обучение команды, подготовке отчетности и анализе безопасности разрабатываемой системы и имплементацией направленных на улучшение безопасности механизмов.
Реализованные практики SDL и OWASP Web Security Testing Guide:
- моделирование угроз;
- безопасное кодирование;
- тестирование безопасности;
- статический анализ исходного кода;
- динамический анализ кода;
- тестирование на проникновение;
- экспертиза исходного кода.
Статический анализ кода
Разработка ПО обеспечивает проведение регулярного статического анализа исходного кода программы с целью выявления потенциально уязвимых конструкций и недостатков. По результатам анализа проводят доработку программы. Для организации работ, выполняемых в процессах жизненного цикла ПО, в документации разработчика будут отражены потенциально уязвимые конструкции в исходном коде программы (при выявлении).
При проведении статического анализа проекты всех сервисов проверяются статическим анализатором Sobelow (для языка программирования elixir и Eslint для Front-end).
Динамический анализ кода
Разработка ПО обеспечивает проведение динамического анализа кода программы с целью выявления уязвимостей программы. Тесты, выполняемые в рамках динамического анализа кода программы, разрабатываются с учетом:
- проекта архитектуры программы, в том числе информации о заимствованных у сторонних разработчиков ПО компонентах;
- результатов моделирования угроз безопасности информации (перечень выявленных потенциальных угроз безопасности информации);
- результатов статического анализа исходного кода программы (перечень выявленных потенциально уязвимых конструкций в исходном коде - программы);
- результатов экспертизы исходного кода программы (перечень выявленных потенциально уязвимых конструкций в исходном коде программы).
При проведении динамического анализа используется следующее программное обеспечение:
- GitLab CI/CD;
- разработанные модульные тесты;
- Excoverals.
Инструментальное тестирование
В процессе разработки продукта проводится ежегодное тестирование на проникновение методом белого, серого и черного ящика с привлечением внешних организаций, специализирующихся на данном направлении. Каждый раз при внедрении продукта, заказчики проводят индивидуальные проверки безопасности и тест на проникновение во внутренней инфраструктуре.
ГОСТ 56939-2016 Разработка безопасного программного обеспечения
Предотвращение появления и устранение уязвимостей программы достигается путем реализации разработчиком программного обеспечения и мер по разработке безопасного ПО в процессах жизненного цикла ПО, установленных ГОСТ Р 56939-2016. eXpress соответствует требованиям данного стандарта.
На уровне руководства организации утверждено "Руководство по разработке безопасного ПО" и реализованы следующие меры:
- меры по разработке безопасного программного обеспечения, реализуемые при выполнении анализа требований к программному обеспечению, а именно определение требований по безопасности, предъявляемые к разрабатываемому ПО;
-
меры по разработке безопасного программного обеспечения, реализуемые при выполнении проектирования архитектуры программы, а именно:
-
моделирование угроз безопасности информации;
-
уточнение проекта архитектуры программы с учетом результатов моделирования угроз безопасности информации;
-
-
меры по разработке безопасного программного обеспечения, реализуемые при выполнении конструирования и комплексирования программного обеспечения, а именно:
-
использование при разработке ПО идентифицированных инструментальных средств;
-
создание программы на основе уточненного проекта архитектуры программы;
-
создание (выбор) и использование при создании программы порядка оформления исходного кода программы;
-
статический анализ исходного кода программы;
-
экспертиза исходного кода программы.
-
-
меры по разработке безопасного программного обеспечения, реализуемые при выполнении квалификационного тестирования программного обеспечения, а именно выполнение:
-
функционального тестирования программы;
-
тестирования на проникновение;
-
динамического анализа кода программы;
-
фаззинг-тестирования программы.
-
-
меры по разработке безопасного программного обеспечения, реализуемые при выполнении инсталляции программы и поддержки приемки программного обеспечения, а именно:
-
обеспечение защиты ПО от угроз безопасности информации, связанных с нарушением целостности, в процессе его передачи пользователю;
-
поставка пользователю эксплуатационных документов.
-
-
меры по разработке безопасного программного обеспечения, реализуемые при решении проблем в программном обеспечении в процессе эксплуатации, а именно:
-
реализация и использование процедуры отслеживания и исправления обнаруженных ошибок ПО и уязвимостей программы;
-
систематический поиск уязвимостей программы.
-
-
меры по разработке безопасного программного обеспечения обеспечения, реализуемые в процессе менеджмента документацией и конфигурацией программы, а именно:
-
реализация и использование процедуры уникальной маркировки каждой версии ПО;
-
использование системы управления конфигурацией ПО.
-
-
меры по разработке безопасного программного обеспечения, реализуемые в процессе менеджмента инфраструктурой среды разработки программного обеспечения, а именно:
-
защита от несанкционированного доступа к элементам конфигурации;
-
резервное копирование элементов конфигурации;
-
регистрация событий, связанных с фактами изменения элементов конфигурации.
-
-
меры по разработке безопасного программного обеспечения, реализуемые в процессе менеджмента людскими ресурсами, а именно:
-
периодическое обучение сотрудников;
-
периодический анализ программы обучения сотрудников.
-
Артефакты, подтверждающие реализацию мер, представлены в виде документов с описанием реализации мер.