CheckMarx扫描HttpWebRequest代码报Path Traversal路径遍历漏洞如何解决
问题根因
CheckMarx本次告警大概率为静态扫描误报。你当前代码中从Cookie获取的Token仅作为Authorization请求头字段发送给目标接口,全程未参与本地文件路径构造,也不存在直接写入本地磁盘的逻辑,不存在真实的路径遍历风险。静态扫描工具是跟踪到用户可控的Cookie输入未经过滤就进入后续IO调用链,才触发了通用的路径遍历告警规则。
解决方案
- 增加Token合法性校验
根据你实际使用的Token格式(比如JWT、固定长度随机串等)添加格式校验逻辑,过滤掉/、\、..、%2e等可能用于路径构造的特殊字符,扫描工具识别到输入过滤逻辑后会自动消除告警。示例代码如下:
Dim cookie As HttpCookie = HttpContext.Current.Request.Cookies("token") If Not cookie Is Nothing AndAlso Not String.IsNullOrEmpty(cookie.Value) Then ' 此处正则根据你的Token实际规则调整,示例为JWT格式校验规则 Dim tokenValid As Boolean = Regex.IsMatch(cookie.Value, "^[A-Za-z0-9\-_.=]+$") If Not tokenValid Then Return String.Empty End If basicRequest.Headers.Add("Authorization", "service" + cookie.Value) End If
- 限制URL访问范围
对ExecuteURL方法的入参URL添加白名单校验,仅允许请求业务范围内的域名和路径,避免该方法被误用传入恶意路径,同时也能消除扫描工具的路径风险判定。 - 提交误报豁免
如果已经确认全链路逻辑不存在将请求头内容用于本地文件操作的场景,可以直接在CheckMarx平台提交该扫描项的误报豁免申请,审核通过后后续扫描不会再触发该告警。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

