ZAP为什么会在这种情况下认为存在缓冲区溢出?

时间:2018-12-13 13:08:41

标签: security buffer-overflow zap

我正在发现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编写的,它具有绑定检查机制,这使得开发人员无法引入Buffer Overflow漏洞(与语言本身一样)。

那么,为什么ZAP仅仅看到此“错误500” +“连接已关闭”,为什么认为缓冲区溢出?

编辑:我检查了缓冲区溢出的扫描规则,并发现:https://github.com/zaproxy/zap-extensions/blob/master/src/org/zaproxy/zap/extension/ascanrules/BufferOverflow.java#L119

ZAP每次收到内部服务器错误时是否都会报告缓冲区溢出?

1 个答案:

答案 0 :(得分:2)

难以完全确定地检测到某些漏洞。 在这种情况下,ZAP提交了一个异常大的值,并且应用程序返回了错误。

如“其他信息”中所述,这可能是缓冲区溢出。由您决定是现在还是现在。您已经确定它不是,但是您可能还想更改该应用程序,以便在这些情况下不会返回500。