forumСоздать тему

Разбираем принятый код — с чего начать ревью по OWASP Top 10?

MMustafa E***УчастникУчастник сообщества
Дата регистрации
февр. 2024 г.
Сообщение
83
#1

Мы — технологический стартап из Далласа из 6 человек, разрабатываем логистический софт. Сторонняя веб-студия разработала нам клиентский портал и модуль отслеживания заказов с бюджетом в 45.000 USD. Проект сдан, контракт на поддержку с агентством завершен, и кодовую базу мы приняли на сопровождение своими силами — двумя штатными разработчиками.

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

Каким рискам стоит отдать приоритет при ревью кода по OWASP Top 10 без профильной команды безопасности? Какие паттерны нужно искать в коде вручную помимо статических анализаторов, и на каком этапе уже не обойтись без внешнего профессионального аудита?

HHande T***Участник
Должность
Оператор ввода данных
Отрасль
Оптовая торговля продуктами питания
Тип организации
производство
Дата регистрации
апр. 2025 г.
Сообщение
62
Самый полезный#2

Короткий ответ: для команд разработки без безопасников критически важная отправная точка при ревью — это проверка использования параметров в запросах к БД и валидация контроля доступа. Чтобы выявить логические уязвимости повышения привилегий которые не видят автоматические сканеры бизнес-логику придется проверять вручную.

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

Второй и самый трудоемкий этап — проверка бизнес-логики. При поиске проблем с контролем доступа (Broken Access Control — самая частая уязвимость в OWASP) действуйте так: 1) Проверьте слой, сопоставляющий входящие ID объектов с текущим авторизованным пользователем, 2) Убедитесь что ролевой доступ проверяется строго на бэкенде для каждого эндпоинта, а не только скрывается в интерфейсе, 3) Замените все сырые SQL-запросы со склейкой строк на параметризованные.

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

SSultan Ö***Эксперт
Должность
Оператор ввода данных
Отрасль
Спорт и фитнес
Тип организации
стартап на ранней стадии
Дата регистрации
февр. 2023 г.
Сообщение
10
#3

Для ручного поиска отлично подходит греп по паттернам: 1) вызовы БД с конкатенацией переменных прямо в запросе, 2) ключи и секреты в открытом виде, 3) блоки перехвата ошибок, которые выплевывают наружу клиенту системные трейсы. Поиск по этим паттернам займет всего пару часов.

SSelin U***УчастникУчастник сообщества
Дата регистрации
март 2026 г.
Сообщение
2
#4

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

İİsmail K***Ветеран
Должность
Тестировщик
Отрасль
Э-коммерция
Тип организации
среднее предприятие
Дата регистрации
сент. 2022 г.
Сообщение
3
#5

Сначала проверьте зависимости сторонних библиотек проекта. Запустите встроенные команды аудита безопасности в вашем пакетном менеджере и обновите пакеты с известными уязвимостями. Чаще всего самые большие дыры от аутсорс-агентств остаются именно из-за старых библиотек.

AAycan K***Участник
Должность
Директор магазина
Отрасль
Кейтеринг
Тип организации
компания из 20 человек
Дата регистрации
март 2024 г.
Сообщение
132
#6

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

DDoruk A***Участник
Должность
Генеральный координатор
Отрасль
Автомобильная промышленность (субподряд)
Тип организации
компания из 20 человек
Дата регистрации
окт. 2022 г.
Сообщение
18

Doki · Тест на проникновение · 2024

#7

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

edit: исправил несколько опечаток.

ZZeynep I***УчастникУчастник сообщества
Дата регистрации
апр. 2023 г.
Сообщение
55
#8

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

HHasan U***УчастникУчастник сообщества
Дата регистрации
май 2024 г.
Сообщение
41
#9

Архитектура мультиарендная (multi-tenant)? То есть все клиенты сидят в одной базе данных? Если да, то главным фокусом ревью должна стать изоляция данных, чтобы один клиент ни при каких условиях не получил доступ к таблицам другого.

DDeniz A***ЭкспертУчастник сообщества
Дата регистрации
авг. 2025 г.
Сообщение
164
#10

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

MMustafa A***УчастникУчастник сообщества
Дата регистрации
нояб. 2024 г.
Сообщение
14
#11

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

ZZerrin Y***Участник
Должность
Директор по производству
Отрасль
Розница
Тип организации
семейный бизнес
Дата регистрации
окт. 2022 г.
Сообщение
11
#12

Очень актуальная тема. Если не зафиксировать это письменно с самого начала, потом возникнут споры.

Пишите, если есть вопросы, отвечу по мере возможности.

EErcanУчастник
Должность
Бухгалтер
Дата регистрации
сент. 2024 г.
Сообщение
92
#13

Частично согласен, частично нет. Большая часть потерь времени копится на задачах, ожидающих согласования.

MMetin Y***Участник
Должность
Технический директор
Отрасль
кожа
Тип организации
индивидуальный предприниматель
Дата регистрации
сент. 2024 г.
Сообщение
43
#14

Позвольте подвести итог сказанному выше. Ошибка, сделанная на стороне owasp топ 10 обзор кода, обычно исправима, но дорого.

Оставлю как заметку, пригодится.

IIrmak B***Эксперт
Должность
Финансовый директор
Отрасль
Логистика
Тип организации
компания в составе холдинга
Дата регистрации
июль 2023 г.
Сообщение
150
#15

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

То, что делают все, не значит что это правильно. Удачи.

LLeyla Ö***УчастникУчастник сообщества
Дата регистрации
февр. 2025 г.
Сообщение
38
#16

Здесь есть ловушка, не могу промолчать. Люди защищают не процесс а привычку. Сопротивление идет оттуда.

Проверено опытом.

PPerihanУчастник
Должность
Корпоративные коммуникации
Тип организации
региональный дилер
Дата регистрации
дек. 2023 г.
Сообщение
118
#17

Посмотрю с другой стороны, я на стороне поставщика. Не полагайтесь на одну меру защиты; действуйте слоями.

Пытаться сделать это в одиночку — самый дорогой путь. Я бы пошел этим путем.

İİsmail K***Новый участник
Должность
Бакалея
Тип организации
среднее предприятие
Дата регистрации
дек. 2024 г.
Сообщение
22

Doki · Настройка управления логами · 2025

#18

сохранил.

MMelis K***УчастникУчастник сообщества
Дата регистрации
апр. 2023 г.
Сообщение
29
#19

В целом верно, но один момент упущен... Прежде чем принимать решение посмотрите какие данные у вас есть.

Если напишете результат здесь, это поможет и другим.

RRecep S***УчастникУчастник сообщества
Дата регистрации
май 2025 г.
Сообщение
342
#20

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

Пытаться сделать это в одиночку — самый дорогой путь.

Написать ответ