缓冲区溢出 - ZAP 扫描报告 - 打字稿文件中的 Node JS 微服务

Buffer Overflow - ZAP Scanning report- Node JS microservice in typescript file

人物架构:

import JoiBase from '@hapi/joi';
import JoiDate from '@hapi/joi-date';

const Joi = JoiBase.extend(JoiDate);

const personSchema = Joi.object().keys({
  person: Joi.object().keys({
    personId: Joi.string().max(255).allow(null, '').required()
  }),
});

export default Joi.alternatives().try(
  personSchema,
);

POST: https://localhost:8080/api/personData/12345/change

POST 负载:

{"person":{"personId":"satishkonda"}}

Node js Web 服务使用人员模式验证请求负载。

为了使用 OWSAP ZAP 2.9.0 进行 DAST 扫描而调用上面的 rest post 请求得到以下缓冲区溢出介质扫描报告

缓冲区溢出错误的特点是覆盖了后台web进程的内存空间,这应该不是有意或无意修改的。 IP(指令指针)、BP(基址指针)和其他寄存器的值被覆盖会导致异常、段错误和其他进程错误发生。通常,这些错误会以意想不到的方式结束应用程序的执行。

我对 DAST SCAN 有点陌生。所以我试图通过搜索 google 找到根本原因,但没有用。请帮助解决这个问题

ZAP 是开源的,所以您可以自己查看扫描规则的源代码。可在此处获得:https://github.com/zaproxy/zap-extensions/blob/master/addOns/ascanrules/src/main/java/org/zaproxy/zap/extension/ascanrules/BufferOverflow.java

这会让你明白为什么它会触发你。

当然有可能结果是假阳性。

根据我的快速审查,它发送了一个巨大的参数值(2100 个字符)并检查内部服务器错误和 Connection: close.

的响应

如果这就是您的应用的行为方式:

  1. 也许它很脆弱。
  2. 也许它需要更强大的 error/input 处理。
  3. 也许该发现是误报,您将其过滤掉: