Почему ZAP считает, что в этой ситуации переполнение буфера? - PullRequest
0 голосов
/ 13 декабря 2018

Я открываю для себя ZAP и его активный сканер.Я попытался выполнить активное сканирование одного из уязвимых магазинов BodgeIT.На странице basket.jsp внутренний код выглядит следующим образом:

stmt = conn.prepareStatement("INSERT INTO BASKETCONTENTS (BasketID, ProductID, Quantity, PriceToPay) VALUES (" + basketId + ", " + productId + ", " + Integer.parseInt(quantity) + ", " + price + ")"); // add it in the basket in the DB

Предполагается, что переменная quantity является целым числом, значение которого получено из запроса клиента в качестве параметра POST.

ZAP обнаружил, что при предоставлении нечислового значения сервер возвращает ошибку 500 и закрывает соединение:

enter image description here

enter image description here

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

Итак, почему ZAP считает, что имеется переполнение буфера, просто видя эту «ошибку 500» + «соединение закрыто»?

Редактировать : я проверил правило сканирования на переполнение буфераи нашел это: https://github.com/zaproxy/zap-extensions/blob/master/src/org/zaproxy/zap/extension/ascanrules/BufferOverflow.java#L119

Сообщает ли ZAP переполнение буфера каждый раз, когда получает внутреннюю ошибку сервера?

1 Ответ

0 голосов
/ 13 декабря 2018

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

Как указано в «Другой информации», это потенциально переполнение буфера.Вам решать, если это или сейчас.Вы определили, что это не так, но вы также можете изменить приложение, чтобы оно не возвращало 500 в этих случаях.

...