From 2c8c545556c5a93a59d1271eb6dd4d818682a059 Mon Sep 17 00:00:00 2001 From: Harry Smith Date: Mon, 17 Feb 2020 13:55:03 +0000 Subject: [PATCH] DWN-31929 : add further XSS attacks to test --- .../connect/web/UserInfoInterceptor.java | 4 +- .../web/UserInfoInterceptorSpec.groovy | 62 ++++++++++++++++++- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java index 3c4f764e4..92aab1cd1 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/web/UserInfoInterceptor.java @@ -54,9 +54,7 @@ import com.google.gson.JsonSerializer; */ public class UserInfoInterceptor extends HandlerInterceptorAdapter { - private final Whitelist whitelist = Whitelist.relaxed() - .removeTags("a") - .removeProtocols("img", "src", "http", "https"); + private final Whitelist whitelist = Whitelist.none(); private Gson gson = new GsonBuilder() .registerTypeHierarchyAdapter(GrantedAuthority.class, new JsonSerializer() { diff --git a/openid-connect-common/src/test/groovy/org/mitre/openid/connect/web/UserInfoInterceptorSpec.groovy b/openid-connect-common/src/test/groovy/org/mitre/openid/connect/web/UserInfoInterceptorSpec.groovy index 5dd47daa6..dd8933e62 100644 --- a/openid-connect-common/src/test/groovy/org/mitre/openid/connect/web/UserInfoInterceptorSpec.groovy +++ b/openid-connect-common/src/test/groovy/org/mitre/openid/connect/web/UserInfoInterceptorSpec.groovy @@ -3,20 +3,22 @@ package org.mitre.openid.connect.web import org.mitre.openid.connect.model.DefaultUserInfo import org.mitre.openid.connect.model.UserInfo import spock.lang.Specification +import spock.lang.Unroll class UserInfoInterceptorSpec extends Specification { private def userInfoInterceptor = new UserInfoInterceptor() // CVE-2020-5497 -> https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server/issues/1521 - def 'User Info is sanitised before making it back to the webpage'() { + @Unroll + def 'User Info is sanitised before making it back to the webpage with payload #payload'() { given: 'A user name with a malicious payload' UserInfo userInfo = new DefaultUserInfo() userInfo.setSub('12318767') - userInfo.setName("Test Test") + userInfo.setName("Test" + payload + " Test") userInfo.setPreferredUsername('Test') - userInfo.setGivenName("Test") + userInfo.setGivenName("Test" + payload) userInfo.setFamilyName('Test') userInfo.setEmail('test@test.com') userInfo.setEmailVerified(true) @@ -36,6 +38,60 @@ class UserInfoInterceptorSpec extends Specification { userInfo.getPreferredUsername() == 'Test' userInfo.getFamilyName() == 'Test' userInfo.getEmail() == 'test@test.com' + + where: + + payload | _ + "" | _ + "" | _ + "" | _ + "" | _ + "" | _ + "" | _ + "
" | _ + "" | _ + "