Специалист по безопасной разработке приложений
Обязанности
- Работа с анализаторами кода 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;
Технические вопросы для собеседования
- Какие базовые меры безопасности вы знаете и как можно интегрировать их в процесс разработки?
- Какой подход вы бы использовали для проверки безопасности написанного вами кода?
- Что вы знаете о защите веб-приложений от простых атак, таких как SQL-инъекции и XSS?
- Какие способы хранения паролей вы знаете?
- Как бы вы организовали базовую аутентификацию пользователей?
- Как правильно работать с библиотеками и зависимостями в ваших проектах?
- Что важно учитывать при разработке API?
- Как бы вы защитили приложение от атаки типа MITM (человек посередине)?
- Как избежать ошибок, связанных с управлением памятью?
- Какие практики вы бы применяли для организации работы микросервисов?
Практические задания
- Разработать простой модуль аутентификации с базовой защитой от брутфорс-атак
- Создать скрипт для проверки безопасности паролей
- Разработать утилиту для базового сканирования уязвимостей в коде
- Создать демонстрационный проект защищенного хранения конфиденциальных данных
- Разработать базовый компонент безопасного логирования
Кейсы
Кейс 1: Защита формы регистрации
Задача: Спроектировать и реализовать защищенную форму регистрации пользователей
Кейс 2: Простая система контроля доступа
Задача: Создать базовую систему управления правами пользователей
Кейс 3: Мониторинг базовых сетевых аномалий
Задача: Разработать простой инструмент для выявления подозрительной сетевой активности