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;
}
}