这是一个功能请求,允许mime/multipart
包的Reader
用户在调用NewPart()
函数时指定加载到内存中的头数据限制。Reader.NewPart()
调用了net/textproto
包的Reader.ReadMIMEHeader()
函数,该函数没有任何限制地将所有头数据加载到内存中。mime/multipart
的Reader
也在net/http
包中用于解析multipart/form-data
POST请求,这意味着像Request.ParseMultipartForm
、Request.FormValue
、Request.FormFile
和Request.MultipartReader
这样的函数受到影响。
我认为这可以作为远程拒绝服务攻击的向量。
解决此问题的可能方法是限制HTTP请求体大小(在某些服务器(如nginx)中默认执行),但这对于需要接受大文件的POST请求的服务器(例如,文件托管服务)不适用。
类似情况的例子是net/http
包的Server
字段,它限制了头数据的数量,但没有限制正文。
2条答案
按热度按时间wn9m85ua1#
为了说明问题,以下是一个利用此漏洞的示例客户端代码:https://www.zerobin.net/?8db1a70f1608fb27#TzogmA1w8sPRNSnByLRcRrwHY0D7urscLFil6AbDdQA=
受其影响的测试服务器代码:https://www.zerobin.net/?6f1057f7dc78ba55#4/v39opPJuwZyqEF8xft8Iqvmkv0QPyhWC189EZy+HE=
这可能导致内存不足的情况,因此我建议在运行测试服务器的机器上关闭交换空间,并使用
nice -19
运行测试服务器。ni65a41a2#
See also #20169 .