Специалист по безопасной разработке приложений

Обязанности

  • Работа с анализаторами кода SAST/DAST/SCA и т.д., разбор отчетов, разработка правил анализа;
  • Ручной анализ кода;
  • Взаимодействовие с разработчиками в рамках процесса управления уязвимостями;
  • Проведение консультаций по безопасной разработке;
  • Анализ безопасности архитектуры ПО;
  • Автоматизация различных задач AppSec и развитием инструментов безопасной разработки;
  • Участие в создании и развитии процессов безопасной разработки;
  • Консультирование продуктовых команд по устранению уязвимостей и вопросам безопасности;
  • Работа с инструментами SAST, SCA, OSA;
  • Проведение анализа архитектуры приложений и моделирование угроз;

Знания и навыки

  • Знание OWASP Top 10 (Web/Mobile/Desktop);
  • Знание одного из скриптовых языков Python/Bash/JS;
  • Знание принципов защиты веб-приложений и умение исправлять найденные уязвимости;
  • Знание процессов разработки;
  • Знание основных подходов к безопасной разработке и тестирования безопасности программного обеспечения (методологии DevSecOps, DevOps, OWASP);
  • Знание основ нормативного регулирования бюджетирования и закупок;
  • Знание нормативных актов Банка России, ФСТЭК России, ФСБ России, приказы, другие нормативные документы, регламентирующие защиту информации при осуществлении банковской деятельности, организацию работы по защите информационных банковских систем, правила оформления договоров в части защиты информации;
  • Знание BPMN нотация для описания процессно-сервисных моделей;
  • Знание принципов процесса DevSecOps;
  • Знание современных подходов к управлению проектами и процессами при проектировании и разработке ПО (Agile, Scrum, Kanban и пр.);
  • Знания современных угроз для веба и мобильных приложений и методы их устранения, включая OWASP Top 10 и OWASP Mobile Top 10, OWASP API Top 10, OWASP MASVS, MASTG;
  • Знания современных протоколов авторизации (SAML 2.0, OpenID Connect);
  • Знание двух языков программирования: C/Си++ и Python (как мин. на уровне джуна);
  • Понимание принципов и ознакомительный опыт работы с любым из инструментирующих фаззеров;
  • Понимание принципов и ознакомительный опыт работы с (на выбор): отладчиками, средствами сбора покрытия, средствами анализа распространения помеченных данных;
  • Понимание современных методик разработки (Agile, Scrum);
  • Понимание архитектуры современных веб-приложений на базе микросервисной архитектуры;
  • Понимание архитектуры распределенных информационных систем/микросервисов;
  • Понимание принципов работы веб-приложений (REST/SOAP/JSON);
  • Понимание работы протоколов и технологий (HTTP/s, TCP/IP, OSI);
  • Навыки поиска уязвимостей с помощью ручного анализа кода и в режиме Blackbox;

Опыт

  • Опыт работы с компилятором из консоли;
  • Опыт применения моделей зрелости или фреймворков безопасной разработки;
  • Опыт работы с инструментами безопасности классов SAST / DAST / OSA / SCA / CA / ASOC;
  • Опыт разработки на одном или нескольких языках: Go/Python/C++/C#/JS/Java/PHP;
  • Опыт настройки CI/CD конвейера: GitLab CI/Jenkins;
  • Опыт работы по направлению Application Security не менее 2 лет;
  • Опыт работы со сканерами уязвимостей WEB и API (Burp Suite Professional, Burp Suite Enterprise edition или аналоги);
  • Опыт проведения анализа защищенности веб-приложений, умение эксплуатировать найденные уязвимости;
  • Опыт работы с анализаторами кода и разработки правил для них;
  • Опыт работы с уязвимостями в зависимостях. Анализ уязвимостей в прямых и транзитивных зависимостях;

Дополнительно

  • Опыт участия в CTF;
  • Опыт работы с Kubernetes/Openshift и публичными облаками AWS, Azure, SberCloud и другими;
  • Понимание подходов к обеспечению безопасности мобильных приложений Android/iOS;

Технические вопросы для собеседования

  1. Какие базовые меры безопасности вы знаете и как можно интегрировать их в процесс разработки?
  2. Какой подход вы бы использовали для проверки безопасности написанного вами кода?
  3. Что вы знаете о защите веб-приложений от простых атак, таких как SQL-инъекции и XSS?
  4. Какие способы хранения паролей вы знаете?
  5. Как бы вы организовали базовую аутентификацию пользователей?
  6. Как правильно работать с библиотеками и зависимостями в ваших проектах?
  7. Что важно учитывать при разработке API?
  8. Как бы вы защитили приложение от атаки типа MITM (человек посередине)?
  9. Как избежать ошибок, связанных с управлением памятью?
  10. Какие практики вы бы применяли для организации работы микросервисов?

Практические задания

  1. Разработать простой модуль аутентификации с базовой защитой от брутфорс-атак
  2. Создать скрипт для проверки безопасности паролей
  3. Разработать утилиту для базового сканирования уязвимостей в коде
  4. Создать демонстрационный проект защищенного хранения конфиденциальных данных
  5. Разработать базовый компонент безопасного логирования

Кейсы

Кейс 1: Защита формы регистрации

Задача: Спроектировать и реализовать защищенную форму регистрации пользователей

Кейс 2: Простая система контроля доступа

Задача: Создать базовую систему управления правами пользователей

Кейс 3: Мониторинг базовых сетевых аномалий

Задача: Разработать простой инструмент для выявления подозрительной сетевой активности