Skip to content

Commit ac8dc9d

Browse files
Fix missing HttpOnly cookie vulnerability detection (#5662)
1 parent 0b8d732 commit ac8dc9d

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

dd-java-agent/agent-iast/src/main/java/com/datadog/iast/util/CookieSecurityDetails.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ void addAttribute(String name, String value) {
2020
if ("SECURE".equalsIgnoreCase(name)) {
2121
isSecure = true;
2222
}
23-
if ("HTTPONLY".equalsIgnoreCase(name) && "true".equalsIgnoreCase(value)) {
23+
if ("HTTPONLY".equalsIgnoreCase(name)) {
2424
isHttpOnly = true;
2525
}
2626
if ("SAMESITE".equalsIgnoreCase(name) && "strict".equalsIgnoreCase(value)) {

dd-java-agent/agent-iast/src/test/groovy/com/datadog/iast/util/CookieSecurityParserTest.groovy

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,22 @@ class CookieSecurityParserTest extends Specification {
2929
isSameSiteStrict == badCookie.isSameSiteStrict()
3030

3131
where:
32-
header | cookieName | isSecure | isHttpOnly | isSameSiteStrict
33-
"user-id=7" | "user-id" | false | false | false
34-
"user-id=7;Secure" | "user-id" | true | false | false
35-
"user-id=7;Secure;HttpOnly=true" | "user-id" | true | true | false
36-
"CUSTOMER=WILE_E_COYOTE; version='1'" | "CUSTOMER" | false | false | false
37-
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT" | "CUSTOMER" | false | false | false
38-
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT;SameSite=Lax;HttpOnly=true" | "CUSTOMER" | false | true | false
39-
"PREF=ID=1eda537de48ac25d:CR=1:TM=1112868587:LM=1112868587:S=t3FPA-mT9lTR3bxU;expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com" | "PREF" | false | false | false
40-
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT; Secure" | "CUSTOMER" | true | false | false
41-
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT; path=\"/acme\";SameSite=Strict" | "CUSTOMER" | false | false | true
32+
header | cookieName | isSecure | isHttpOnly | isSameSiteStrict
33+
"user-id=7" | "user-id" | false | false | false
34+
"user-id=7;Secure" | "user-id" | true | false | false
35+
"user-id=7;Secure;HttpOnly" | "user-id" | true | true | false
36+
"CUSTOMER=WILE_E_COYOTE; version='1'" | "CUSTOMER" | false | false | false
37+
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT" | "CUSTOMER" | false | false | false
38+
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT;SameSite=Lax;HttpOnly" | "CUSTOMER" | false | true | false
39+
"PREF=ID=1eda537de48ac25d:CR=1:TM=1112868587:LM=1112868587:S=t3FPA-mT9lTR3bxU;expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com" | "PREF" | false | false | false
40+
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT; Secure" | "CUSTOMER" | true | false | false
41+
"CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT; path=\"/acme\";SameSite=Strict" | "CUSTOMER" | false | false | true
4242
}
4343

4444

4545
void 'parsing multi cookie header'() {
4646
given:
47-
String headerValue = "A=1;Secure;HttpOnly=true;SameSite=Strict;version='1',B=2;Secure;SameSite=Strict,C=3"
47+
String headerValue = "A=1;Secure;HttpOnly;SameSite=Strict;version='1',B=2;Secure;SameSite=Strict,C=3"
4848
when:
4949
final badCookies = new CookieSecurityParser(headerValue).getCookies()
5050

@@ -59,12 +59,12 @@ class CookieSecurityParserTest extends Specification {
5959

6060
badCookies.get(1).getCookieName() == 'B'
6161
badCookies.get(1).isSecure()
62-
! badCookies.get(1).isHttpOnly()
62+
!badCookies.get(1).isHttpOnly()
6363
badCookies.get(1).isSameSiteStrict()
6464

6565
badCookies.get(2).getCookieName() == 'C'
66-
! badCookies.get(2).isSecure()
67-
! badCookies.get(2).isHttpOnly()
68-
! badCookies.get(2).isSameSiteStrict()
66+
!badCookies.get(2).isSecure()
67+
!badCookies.get(2).isHttpOnly()
68+
!badCookies.get(2).isSameSiteStrict()
6969
}
7070
}

0 commit comments

Comments
 (0)