Проверьте приложение на уязвимости
КраткоОткройте вкладку «Безопасность» и нажмите «Запустить проверку безопасности». За минуту-другую MonstarX проверит код по 33 правилам, прощупает работающее приложение как посторонний посетитель и поручит ИИ прочитать всё приложение целиком. Вы получите оценку от A до F и список замечаний, начиная с самых опасных: где проблема, чем она грозит и что поменять. Выберите, что исправить, — MonstarX исправит это обычной сборкой и проверит приложение заново. Результат можно скачать как отчёт.
Приложения, написанные быстро, обычно слишком доверяют браузеру: функция, которую может вызвать кто угодно; бронирование, которое ищется по номеру без проверки, чьё оно; цена, взятая прямо со страницы. Злоумышленники ищут именно такие бреши.
Вкладка Безопасность читает приложение так, как это сделал бы злоумышленник, перечисляет найденное, начиная с самого опасного, и помогает это исправить. Это небольшой пентест (тест на проникновение — проверка, при которой кто-то намеренно пытается взломать систему), встроенный в MonstarX.
Как запустить проверку безопасности?
Заголовок раздела «Как запустить проверку безопасности?»-
Откройте проект и нажмите Безопасность на верхней панели.
-
Нажмите Запустить проверку безопасности. Это займёт минуту-другую.
-
Части проверки завершаются одна за другой. Вкладку можно закрыть: проверка идёт на серверах MonstarX и продолжится без вас. Кнопка Отмена останавливает её и сохраняет всё, что уже найдено.
Пока идёт проверка, на значке вкладки Безопасность крутится индикатор, а потом появляется число нерешённых замечаний (его цвет зависит от самого опасного) или зелёная точка, если нерешённых нет. Чтобы проверить приложение снова, нажмите Проверить ещё раз вверху вкладки.
Что проверяется?
Заголовок раздела «Что проверяется?»Проверка состоит из трёх частей:
| Часть | Что делает | Стоимость |
|---|---|---|
| Проверка кода | 33 правила проходят по каждому файлу приложения: нет ли пропущенной проверки входа, изменения записей без проверки владельца, секретов прямо в коде, запросов к базе данных, собранных из текста, небезопасного HTML, непроверенных загрузок, неподтверждённых вебхуков и многого другого. | Бесплатно |
| Проверки работающего приложения | Запросы только на чтение к работающему приложению от имени постороннего посетителя без аккаунта: страницы для вошедших пользователей, адреса, которые отвечают кому угодно, доступ с чужих сайтов, а у опубликованного приложения — заголовки безопасности и файлы, которые никогда не должны быть доступны. | Бесплатно |
| Проверка с помощью ИИ | ИИ-модель читает всё приложение с учётом найденных замечаний, подтверждает или отклоняет их и ищет то, что можно заметить только при чтении: например, цену, которой приложение доверяет со страницы, или данные, которые страница отправляет, но никогда не показывает. | Тратит кредиты, как запрос в режиме Чат |
Если приложение опубликовано, проверки работающего приложения идут по опубликованной версии, иначе — по предпросмотру. В результатах указано, что именно проверялось.
Что такое OWASP Top 10 и CWE?
Заголовок раздела «Что такое OWASP Top 10 и CWE?»OWASP — некоммерческая организация, которая публикует Top 10 — самый известный список наиболее серьёзных видов угроз безопасности веб-приложений. Каждое замечание относится к одной из этих категорий, поэтому вы (или специалист по безопасности) сразу понимаете, что это за проблема:
| Простыми словами | |
|---|---|
| A01 Нарушен контроль доступа | Кто-то может увидеть или изменить чужое. |
| A02 Криптографические сбои | Секреты или коды хранятся или создаются ненадёжно. |
| A03 Инъекция | Текст, который кто-то вводит, выполняется как команда или код. |
| A04 Небезопасный дизайн | Логикой приложения можно злоупотребить, например бесконечно рассылать бесплатные письма или делать бронирования. |
| A05 Неправильная конфигурация безопасности | Слишком открытые настройки, например нет заголовков безопасности. |
| A06 Уязвимые и устаревшие компоненты | Старые программы с известными уязвимостями. |
| A07 Сбои идентификации и аутентификации | Ненадёжный вход или работа с сеансами. |
| A08 Нарушения целостности программного обеспечения и данных | Коду или данным извне доверяют без проверки. |
| A09 Сбои журналирования и мониторинга безопасности | Секреты попадают в журналы, или атаки остаются незамеченными. |
| A10 Подделка запроса на стороне сервера | Приложение можно заставить обращаться к адресам, которые выбирает злоумышленник. |
CWE (Common Weakness Enumeration) — пронумерованный каталог конкретных уязвимостей, например CWE-639: запись ищется по ID, который контролирует пользователь. Каждое замечание ссылается на свою категорию OWASP и, если есть, на страницу CWE, где можно почитать подробнее.
Как читать результаты?
Заголовок раздела «Как читать результаты?»Вверху показана оценка из 100 с буквой от A до F, нерешённые замечания по уровню опасности, что проверялось, сколько стоила проверка с помощью ИИ, и её краткий итог в нескольких предложениях.
Оценка начинается со 100 и уменьшается на 40 за каждое замечание уровня Критический, на 15 — Высокий, на 5 — Средний и на 1 — Низкий. Буква подсказывает, что делать дальше:
| Буква | Баллы | Что значит |
|---|---|---|
| A | 90–100 | Ничего серьёзного не найдено. |
| B | 75–89 | Есть кое-что, что стоит доработать. |
| C | 55–74 | Исправьте замечания высокой опасности, прежде чем приложением начнут пользоваться больше людей. |
| D | 35–54 | Серьёзные бреши: исправьте их до публикации. |
| F | 0–34 | В нынешнем виде приложение открыто для атак. |
У каждого замечания указаны уровень опасности, название, категория OWASP, CWE, источник (Проверка кода, Проверка работающего приложения или Проверка с помощью ИИ), насколько проверка уверена (Подтверждено, Вероятно или Нужна проверка), а также файл и строка. Нажмите замечание, чтобы открыть его:
- Код вокруг строки, где сама строка выделена.
- Что не так, Почему это важно и Что изменить — простыми словами.
- Комментарий Проверка ИИ: подтвердила ли она замечание и как.
- Кнопка Открыть в разделе «Код» переносит к файлу на вкладке «Код».
Если проверка с помощью ИИ считает замечание ложной тревогой, она пишет Проверка ИИ: вероятно, это не реальная проблема. Такое замечание остаётся в списке, в самом конце, но не влияет на оценку.
Под списком блок Что было проверено раскрывает все выполненные проверки, сгруппированные по категориям OWASP: с галочкой, числом замечаний или причиной, по которой проверка пропущена.
Как исправить найденное?
Заголовок раздела «Как исправить найденное?»-
Отметьте замечания, которые нужно исправить, или нажмите Выбрать все. Появится кнопка Исправить 2 замечания. Пока идёт сборка, она неактивна.
-
Нажмите её. MonstarX расскажет, что произойдёт, после чего нажмите Исправить 2 замечания ещё раз.
-
Каждое замечание становится задачей в плане функций (Безопасность: …; если план почти заполнен, замечания объединяются в одну задачу), а в чат уходит один запрос на сборку с пометкой «Безопасность». Он выполняется как любой запрос, сохраняет версию, а после него приложение может протестировать QA.
-
Когда сборка закончится, проверка запустится снова сама. Исчезнувшие замечания отмечаются как решённые (Исправлено конструктором: 2). Замечание, которое осталось, вернётся с пометкой Проблема остаётся после исправления.
Что, если замечание — не настоящая проблема?
Заголовок раздела «Что, если замечание — не настоящая проблема?»Откройте его, нажмите Отложить и укажите причину:
- Ложное срабатывание
- Принятый риск — вы знаете о проблеме и принимаете её.
- Решено другим способом
Отложенное замечание переходит в список Отложено и остаётся там при всех следующих проверках, даже если меняется другой код. Нажмите Вернуть, чтобы снова вернуть его в основной список.
Как скачать отчёт о безопасности?
Заголовок раздела «Как скачать отчёт о безопасности?»Нажмите Скачать отчёт внизу результатов. Вы получите файл Markdown (обычный текстовый документ, который открывается в любом редакторе) с названием проекта в имени, например vygul-sobak-moskva-security-report.md. Он устроен как отчёт о пентесте:
- Область проверки и метод — сколько правил прошло по скольким файлам, что проверялось запросами и что сделала проверка с помощью ИИ;
- Сводка — оценка, нерешённые замечания по уровню опасности и итог проверки ИИ;
- Замечания — каждое со ссылками на OWASP и CWE, местом в коде, фрагментом кода, описанием проблемы, тем, чем она грозит и что поменять;
- Решено после предыдущей проверки и Отложено владельцем — с вашими причинами;
- Проверки — каждая проверка и её результат.
Отчёт удобно отправить разработчику, клиенту или аудитору. Скачать его можно после того, как проверка остановилась.
Вопросы и ответы
Заголовок раздела «Вопросы и ответы»Проверка бесплатная?
Проверка кода и проверки работающего приложения бесплатны. Проверка с помощью ИИ тратит кредиты, как запрос в режиме Чат, и в результатах видно, сколько она стоила. Исправление замечаний тратит кредиты, как любая сборка.
Хорошая оценка значит, что приложение в безопасности?
Ни одна проверка не может этого гарантировать. Она находит то, что видят её правила, запросы и ИИ. Сначала исправьте критические замечания и замечания высокой опасности, проверьте приложение снова, а всё, что связано с деньгами или персональными данными, покажите специалисту, прежде чем приложением начнут пользоваться многие.
Проверять до публикации или после?
И до, и после. Проверьте до публикации, чтобы закрыть крупные бреши. И проверьте ещё раз, когда приложение будет опубликовано: некоторые проверки, например заголовков безопасности и файлов, которые никогда не должны быть доступны, работают только с опубликованным приложением.
Видят ли проверку люди, с которыми я поделился проектом?
Нет. Проверка называет каждое слабое место, поэтому вкладку Безопасность видит только владелец.
Проверяется ли код входа и базы данных самого MonstarX?
Нет. Эти части одинаковы во всех приложениях, и их поддерживает MonstarX. Проверяется код, написанный для вашего приложения, и само работающее приложение.
Что будет, если запустить проверку во время сборки?
Проверка дождётся окончания сборки (до 10 минут), чтобы проверить готовый код.