漏洞概述 该漏洞涉及在HTTP隧道请求头中拒绝CR/LF字符。具体而言,当尝试在HTTP隧道请求头中包含控制字符(如CR/LF)时,系统会抛出 异常。 影响范围 此漏洞影响使用 模块进行HTTP隧道连接的Python应用程序。如果应用程序在隧道请求头中使用了控制字符,可能会导致安全漏洞或程序崩溃。 修复方案 修复方案包括在 和 方法中添加对控制字符的检查,并在检测到控制字符时抛出 异常。此外,还增加了相应的测试用例来验证修复的有效性。 POC代码 以下是修复后的相关代码块: 测试用例 以下是新增的测试用例: ```python def test_invalid_headers(self): with self.assertRaisesRegex(ValueError, 'Invalid header'): conn.putheader(name, value) def test_invalid_tunnel_headers(self): cases = ( ('Invalid\rName', 'ValidValue'), ('Invalid\rName', 'ValidValue'), ('Invalid\rName', 'ValidValue'), ('\rInvalidName', 'ValidValue'), ('\nInvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue'), ('InvalidName', 'ValidValue')