Skip to content

Commit 031c2a5

Browse files
authored
Merge pull request #2553 from drwetter/noCtrlCharInHeader
Remove crtl chars from HTTP header
2 parents 3cd027e + 2b36b33 commit 031c2a5

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

testssl.sh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2512,9 +2512,13 @@ run_http_header() {
25122512
# Quit on first empty line to catch 98% of the cases. Next pattern is there because the SEDs tested
25132513
# so far seem not to be fine with header containing x0d x0a (CRLF) which is the usual case.
25142514
# So we also trigger also on any sign on a single line which is not alphanumeric (plus _)
2515-
sed -e '/^$/q' -e '/^[^a-zA-Z_0-9]$/q' $HEADERFILE >$HEADERFILE.tmp
2515+
#
2516+
# Also we use tr here to remove any crtl chars which the server side offers --> possible security problem
2517+
# Only allowed now is LF + CR. See #2337
2518+
# awk, see above, doesn't seem to care
2519+
sed -e '/^$/q' -e '/^[^a-zA-Z_0-9]$/q' $HEADERFILE | tr -d '\000-\011\013\014\016-\037' >$HEADERFILE.tmp
25162520
# Now to be more sure we delete from '<' or '{' maybe with a leading blank until the end
2517-
sed -e '/^ *<.*$/d' -e '/^ *{.*$/d' $HEADERFILE.tmp >$HEADERFILE
2521+
sed -e '/^ *<.*$/d' -e '/^ *{.*$/d' $HEADERFILE.tmp >$HEADERFILE
25182522
debugme echo -e "---\n $(< $HEADERFILE) \n---"
25192523

25202524
HTTP_STATUS_CODE=$(awk '/^HTTP\// { print $2 }' $HEADERFILE 2>>$ERRFILE)
@@ -2589,7 +2593,7 @@ match_ipv4_httpheader() {
25892593

25902594
# Exclude some headers as they are mistakenly identified as ipv4 address. Issues #158, #323.
25912595
# Also facebook used to have a CSP rule for 127.0.0.1
2592-
headers="$(grep -Evai "$excluded_header" $HEADERFILE)"
2596+
headers="$(grep -Evai "$excluded_header" $HEADERFILE 2>/dev/null)"
25932597
if [[ "$headers" =~ $ipv4address ]]; then
25942598
pr_bold " IPv4 address in header "
25952599
while read line; do

0 commit comments

Comments
 (0)