恶意代理通过发送不正确的响应来导致进程崩溃

作者: wangsh3创建于 2026年9月10日更新于 2026年9月10日

**漏洞描述** handle_proxy_read(第775-784行)调用m_proxy_data->res.consume(input)。如果headers_ready()为false,它会调用callback(general),并返回。然而,在第761行,m_proxy_data->timer已经被取消,且m_proxy_data没有被重置,导致连接资源(套接字,proxy_data)未清理,并依赖于上层初始化失败路径进行清理。更为关键的是,res.consume(http/impl/response.hpp)内部的解析在遇到格式不正确的头时可能会抛出一个std::exception(例如,由于状态行解析失败),而handle_proxy_read缺乏任何try/catch块。异常将通过Asio处理器传播;如果外部io_service.run()没有捕获它,则会导致进程终止(std::terminate)。恶意代理只需返回一个格式不正确的HTTP状态行即可触发此漏洞。

内容来源: zaphoyd/websocketpp