分析HTTP请求以降低HTTP走私攻击HTTP数据接收不同步攻击的风险

2024-02-28 06:10

本文主要是介绍分析HTTP请求以降低HTTP走私攻击HTTP数据接收不同步攻击的风险,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面的话

HTTP/1.1自1991年至2014年,已经走过了一段很长的发展历程:

  • HTTP/0.9– 1991
  • HTTP/1.0– 1996
  • HTTP/1.1
  • RFC 2068– 1997
  • RFC 2616- 1999
  • RFC 7230- 2014

这也就意味着,互联网中各种各样的服务器和客户端,可能会存在很多安全问题,这也会给HTTP走私攻击(HTTP数据接收不同步攻击)创造了机会。

\

遵循最新的RFC建议似乎很简单。然而,对于已经存在一段时间的大型系统,它可能会带来很多在系统可用性方面令人无法接受的影响。

http_desync_guardian这个工具库便应运而生,该工具可以帮助广大研究人员分析HTTP请求,以防止HTTP走私攻击(HTTP数据接收不同步攻击)的发生,同时还能够兼顾安全性和可用性。该工具可以将请求进行分类,并并提供针对每一层的处理建议。

该工具既可以分析原始的HTTP请求Header,也可以对那些已经被HTTP引擎分析过的请求数据进行二次分析。

工具特性

1、服务的统一性是关键。这意味着请求分类、日志记录和度量必须在后台进行,并使用最少的可用设置(例如,日志文件目的地址)。

2、关注可审查性。测试套件不需要关于库/编程语言的知识,而只需要关于HTTP协议的知识即可。因此,它很容易审查、贡献代码和重复使用。

3、安全性对于用户来说是最重要的。

4、轻量级,开销非常小,并且处理请求不需要额外开销。

支持的HTTP版本

该工具主要针对的是HTTP/1.1,具体可以参考提供的覆盖测试用例。

HTTP/1.1的前身不支持连接重用,这限制了HTTP去同步的机会,但是一些代理可能会将此类请求升级到HTTP/1.1,并重新使用后端连接,这可能会导致恶意HTTP/1.0请求。这也就是为什么我们选择使用与HTTP/1.1相同的标准来分析它们。对于其他协议版本,可以参考这篇【文档】。

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/aws/http-desync-guardian.git
复制代码

C代码使用

这个工具库主要使用的是C/C++开发的HTTP引擎,工具安装配置方法如下:

1、安装cbindgen:

cargo install --force cbindgen
复制代码

2、生成Header文件:

C:

cbindgen --output http_desync_guardian.h --lang c
复制代码

C++:

cbindgen --output http_desync_guardian.h --lang c++
复制代码

3、运行下列命令,其中相关代码位于“
./target/release/libhttp_desync_guardian.*”文件:

cargo build --release
复制代码
#include "http_desync_guardian.h"/** http_engine_request_t - already parsed by the HTTP engine*/static int check_request(http_engine_request_t *req) {http_desync_guardian_request_t guardian_request = construct_http_desync_guardian_from(req);http_desync_guardian_verdict_t verdict = {0};http_desync_guardian_analyze_request(&guardian_request, &verdict);switch (verdict.tier) {case REQUEST_SAFETY_TIER_COMPLIANT:// The request is good. green lightbreak;case REQUEST_SAFETY_TIER_ACCEPTABLE:// Reject, if mode == STRICTEST// Otherwise, OKbreak;case REQUEST_SAFETY_TIER_AMBIGUOUS:// The request is ambiguous.// Reject, if mode == STRICTEST// Otherwise send it, but don't reuse both FE/BE connections.break;case REQUEST_SAFETY_TIER_SEVERE:// Send 400 and close the FE connection.break;default:// unreachable codeabort();}}
复制代码

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

了解更多

了解讨论网络安全和领取网络安全的学习资料
添加专属网络安全学习资料辅导
QQ:2853028582;
备注:T1

  

这篇关于分析HTTP请求以降低HTTP走私攻击HTTP数据接收不同步攻击的风险的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/754593

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别