flawopen.com/Simulators/HTTP Request Smuggling
프록시-백엔드 간 지속 연결 파이프라인, 청크 전송 인코딩 경계 분석 및 소켓 큐 오염을 단계별로 검증하는 도구.
계산원과 요리사 사이의 컨베이어 벨트를 떠올려보세요. 햄버거 1개와 추가 주문서가 든 상자를 전달합니다. 계산원은 1개 주문으로 처리해 넘기지만, 요리사는 버거만 조리하고 주문서를 조리대에 남겨둡니다. 다음 손님이 샐러드를 주문할 때, 요리사는 그 손님의 카드로 남겨진 주문서를 결제해버립니다!
// Vulnerable HTTP parser logic
int http_parser_execute(http_parser *parser, const char *data, size_t len) {
if (parser->flags & F_CONTENT_LENGTH && parser->flags & F_CHUNKED) {
parser->body_read_mode = READ_CHUNKED;
return PARSE_CONTINUE;
}
}
// Hardened RFC 9112 section 6.1 compliant parser
int http_parser_execute(http_parser *parser, const char *data, size_t len) {
if ((parser->flags & F_CONTENT_LENGTH) && (parser->flags & F_CHUNKED)) {
parser->status_code = 400;
parser->connection_close = 1;
return PARSE_ERROR_INVALID_HEADER;
}
}