缓冲区溢出 - 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
.
的响应
如果这就是您的应用的行为方式:
- 也许它很脆弱。
- 也许它需要更强大的 error/input 处理。
- 也许该发现是误报,您将其过滤掉:
人物架构:
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
.
如果这就是您的应用的行为方式:
- 也许它很脆弱。
- 也许它需要更强大的 error/input 处理。
- 也许该发现是误报,您将其过滤掉: