Во время теста на вторжение этап сопоставления позволяет определить степень поверхности атаки. Этот этап необходим, но не представляет особой ценности, доступ к исходному коду экономит время на сопоставлении и дает возможность посвящать больше времени поиску уязвимостей.
Обратите внимание, что этот этап может повлиять на объем пентеста в случае обнаружения новых уязвимостей. В зависимости от проекта область действия может быть соответствующим образом расширена, или новые обнаруженные части будут отражены в аудиторском отчете без включения в тесты на проникновение.
Обнаружение и использование уязвимостей
Наличие доступа к исходному коду также упрощает работу на этапах обнаружения и эксплуатации, чтобы перенаправить часть усилий на самые сложные исследования, требующие высокого уровня знаний.
Например, чтение исходного кода дает возможность напрямую проверять обновления различных компонентов приложения (библиотек и других компонентов), выявлять такого рода уязвимости. Чтение исходного кода также позволяет быстрее проверять определенные гипотезы, в частности при проверках прав, которые обычно занимают много времени.
На уровне эксплуатации типичный пример касается недостатков XSS: просмотр непосредственно в исходном коде, какие правила контроля были реализованы, упрощает обход XSS-фильтров. В конечном итоге это позволяет лучше оценить влияние XSS-уязвимостей в случае их успешного использования внешним злоумышленником.
Полнота тестирования
При пентесте может возникнуть вопрос о полноте, если это цель, предварительно оговоренная с клиентом.
Некоторые типы недостатков могут массово присутствовать в приложении. Доступ к исходному коду позволяет пентестерам понять происхождение проблемы и показать, где присутствуют недостатки.
Советы по исправлению
Этот аспект связан с замечаниями по поводу полноты. Выявление ошибок в исходном коде позволяет выявить все места, где присутствуют недостатки определенного типа. И поэтому предоставить соответствующие рекомендации по исправлению недостатков веб-приложения.
Вообще говоря, имея доступ к исходному коду, пентестеры могут давать более релевантные рекомендации, потому что меньше догадок или предположений о том, как построен код.
Ориентация и определение приоритетов определенных тестов
Обращение к исходному коду без его полного анализа может помочь в проведении исследований во время пентеста.
В частности, в случае неполного пентеста с ограниченным временем для поиска основных уязвимостей, присутствующих в приложении, просмотр исходного кода позволяет опытному пентестеру понять уровень его качества и расставить приоритеты для определенных тестов.
За или против предоставления исходного кода пентестерам
Как было сказано в самом начале этой статьи, этот вопрос нужно решать в соответствии с задачами, которые команда клиента поставила перед пентестом.
С нашей точки зрения, предоставление исходного кода имеет преимущества, так как позволяет оптимизировать пентест, не препятствуя проведению внешних тестов или с точки зрения обычного пользователя. Учтите, что для того же периметра предоставление доступа к исходному коду мало повлияет на бюджет сервиса, поскольку время, сэкономленное на одних задачах, можно реинвестировать в другие исследования.
Наш опыт показывает, что по мере проведения повторяющихся тестов на проникновение уровень безопасности веб-приложения повышается, поскольку разработчики передают отзывы о предыдущих проверках безопасности новым разработкам. В некоторых случаях результаты пентестов позволяют установить настоящую внутреннюю культуру безопасности, а также составить карту безопасности для команды разработчиков.
Вот почему мы рекомендуем после нескольких пентестов черного и серого ящиков для одной и той же области систематически предоставлять исходный код для следующих пентестов, чтобы продолжить анализ и сделать дополнительные рекомендации по безопасности.