Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting')
The product receives data from an HTTP agent/component, and it places this data in HTTP response headers without neutralizing CRLF sequences.
An attacker can inject CRLF sequences into HTTP headers to create additional headers or response body content. This can lead to cache poisoning, cross-site scripting, or other attacks.
Comment corriger cette vulnérabilité
Stratégies de prévention pour HTTP Response Splitting basées sur 3 règles de détection Shoulder.
Strip CRLF characters from user input before setting HTTP headers
package main - import "net/http" - - func handler(w http.ResponseWriter, r *http.Request) { - lang := r.URL.Query().Get("lang") - // Vulnerable: user input set as header value - w.Header().Set("Content-Language", lang) + import ( + "net/http" + "strings" + ) + + func sanitizeHeaderValue(s string) string { + s = strings.ReplaceAll(s, "\r", "") + s = strings.ReplaceAll(s, "\n", "") + return s + } + + func handler(w http.ResponseWriter, r *http.Request) { + lang := r.URL.Query().Get("lang") + // Safe: CRLF characters stripped + w.Header().Set("Content-Language", sanitizeHeaderValue(lang)) w.Write([]byte("OK")) }
Strip CRLF characters from user input before using in HTTP headers
- from flask import request, make_response - - @app.route('/download') - def download(): - filename = request.args.get('filename') - response = make_response("content") - response.headers['Content-Disposition'] = f'attachment; filename="{filename}"' + import re + from flask import request, make_response + + def sanitize_header(value): + return re.sub(r'[\r\n]', '', str(value)) + + @app.route('/download') + def download(): + filename = request.args.get('filename', '') + safe_filename = sanitize_header(filename) + response = make_response("content") + response.headers['Content-Disposition'] = f'attachment; filename="{safe_filename}"' return response
Trouvez les vulnérabilités dans votre code
Utilisez Shoulder pour scanner votre code à la recherche de patterns Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting'). 3 règles.
# Scan with Shoulder CLI npx @shoulderdev/cli trust --cwe=113 # Or scan entire project npx @shoulderdev/cli trust .
Règles de Détection (3)
Ce qu'il faut surveiller lors des revues de code
Ces patterns indiquent des vulnérabilités potentielles Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting'). Recherchez-les lors des revues de code et des audits de sécurité.
Scannez votre base de code pour Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting')
Shoulder CLI trouve les motifs vulnérables dans toute votre base de code.