Commit 5156af1
[MINOR] Apply proper RFC 4515 / RFC 4514 escaping in LDAP realms
LDAP search filter and DN substitutions in LdapRealm and
ActiveDirectoryGroupRealm previously used either no escaping or RFC 4514
(Distinguished Name) escaping where RFC 4515 (Search Filter) escaping is
required. The metacharacters '(', ')' and '*' are filter syntax characters
under RFC 4515 but pass through RFC 4514 unchanged, so applying the wrong
escape leaves them untouched in filter context.
Changes:
- Add LdapFilterEncoder.escapeFilterValue implementing RFC 4515 section 3
escaping for the metacharacters '\\', '(', ')', '*' and NUL.
- Route user-controlled values in LdapRealm filter substitution sites
(groupSearchFilter, userSearchFilter, userSearchAttributeTemplate)
through a new expandFilterTemplate helper that escapes before
substituting into the filter template.
- Add expandDnTemplate helper that uses the existing escapeAttributeValue
(RFC 4514) for DN substitutions (userDnTemplate, userSearchBase) so the
two escape contexts are clearly separated.
- Apply LdapFilterEncoder.escapeFilterValue at the two String.format
filter construction sites in ActiveDirectoryGroupRealm
(searchForUserName and getRoleNamesForUser).
- Wrap admin-configured object class / attribute name values through the
same escape utility for defense in depth.
Tests:
- LdapFilterEncoderTest (14): unit coverage of the escape utility and the
RFC 4514 vs 4515 character set distinction.
- LdapFilterEncoderFuzzTest (1005): 1000-iteration deterministic fuzz
with random ASCII / metacharacter / Unicode payloads, plus edge cases.
- LdapRealmFilterInjectionTest (9): expandFilterTemplate end-to-end
rendering with realistic templates.
- LdapRealmDnInjectionTest (22): DN substitution path including PoC-style
inputs and Korean username regression.
- ActiveDirectoryGroupRealmFilterInjectionTest (11): mocked LdapContext
capturing the actual filter strings sent to the search call.
- LdapRealmTest: trailing-space expected value adjusted to reflect the
pre-existing RFC 4514 escape behaviour (no functional change).
All 1068 tests in the LDAP realm test set pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 036c8a0 commit 5156af1
9 files changed
Lines changed: 728 additions & 13 deletions
File tree
- zeppelin-server/src
- main/java/org/apache/zeppelin/realm
- test/java/org/apache/zeppelin/realm
Lines changed: 6 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
255 | 255 | | |
256 | 256 | | |
257 | 257 | | |
258 | | - | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
259 | 261 | | |
260 | 262 | | |
261 | 263 | | |
| |||
301 | 303 | | |
302 | 304 | | |
303 | 305 | | |
304 | | - | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
305 | 309 | | |
306 | 310 | | |
307 | 311 | | |
| |||
Binary file not shown.
Lines changed: 35 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
385 | | - | |
| 385 | + | |
| 386 | + | |
386 | 387 | | |
387 | 388 | | |
388 | 389 | | |
389 | | - | |
| 390 | + | |
390 | 391 | | |
391 | 392 | | |
392 | 393 | | |
| |||
886 | 887 | | |
887 | 888 | | |
888 | 889 | | |
889 | | - | |
| 890 | + | |
890 | 891 | | |
891 | 892 | | |
892 | 893 | | |
893 | 894 | | |
894 | 895 | | |
895 | | - | |
| 896 | + | |
896 | 897 | | |
897 | 898 | | |
898 | 899 | | |
899 | | - | |
| 900 | + | |
| 901 | + | |
900 | 902 | | |
901 | | - | |
902 | | - | |
903 | | - | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
904 | 907 | | |
905 | 908 | | |
906 | | - | |
| 909 | + | |
907 | 910 | | |
908 | 911 | | |
909 | 912 | | |
| |||
1026 | 1029 | | |
1027 | 1030 | | |
1028 | 1031 | | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
1029 | 1055 | | |
Lines changed: 176 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
0 commit comments