Go pprof 调试信息泄露漏洞
- [1. 漏洞原理](#1. 漏洞原理)
- [2. 漏洞危害](#2. 漏洞危害)
- [3. 漏洞修复](#3. 漏洞修复)
1. 漏洞原理
net/http/pprof 是 Go 标准库用于在运行时导出 runtime profiling 数据(heap、cpu、goroutine、block 等)的工具;通常通过在程序中 import _ "net/http/pprof" 注册一组 HTTP 路径(以 /debug/pprof/ 为前缀)
当这些端点未经访问控制就对外暴露时,会把进程内部状态与运行时信息(函数名、调用栈、内存分配分布、goroutine 列表、命令行参数等)泄露给任意请求者
2. 漏洞危害
1、敏感信息泄露
一些函数名、调用栈、内存分配分布、goroutine 列表、命令行参数等,一般来讲没什么大用,算低危的信息泄漏
2、拒绝服务攻击
GET /debug/pprof/profile?seconds=5 --- 生成 5 秒 CPU profile,pprof 的生成本身是极其消耗 CPU 和内存的操作。攻击者可以轻易地通过反复请求 profile(CPU 剖析)或 heap(内存堆剖析)端点对服务进行拒绝服务攻击
3. 漏洞修复
不要在公网直接暴露 /debug/pprof