On Fri, 2014-08-22 at 12:47 +0200, Dirk-Willem van Gulik wrote:
> >> Found that some of below are indeed able to hang the regex stack (e.g. # 
> >> 2). However the more elaborate regex-es are blocked by:
> >> 
> >>    private final static Pattern WILDCARD_PATTERN = Pattern.compile( 
> >> "^[a-z0-9\\-\\*]+(\\.[a-z0-9\\-]+){2,}$", Pattern.CASE_INSENSITIVE);
> >>            ..
> >>            WILDCARD_PATTERN.matcher(identity).matches()
> >> 
> >> which we apply to the subjectAltName, CN, etc. So that is not too bad then 
> >> - assuming that that regep does not let them through. Which is likely - as 
> >> the only dangerous thing I see in there is a *.
> >> 
> > 
> > Thank you so much for your feedback. What I could do is validate both
> > the identity and the subjectAltName pattern by making sure they consist
> > of characters legal for domain names (alphanumeric, dash and asterisk in
> > case of subjectAltName) prior to doing regexp matching with them.
> 
> Right - but I am wondering if that means we end up in a rear guard battle. As 
> we then find IPv6 addresses containing ‚:’ and god knows what new TLDs may do 
> 5+ years hence.
> 

5+ is pretty much my retirement target ;-) 

Seriously, though, I would worry about UTF8 issues only once start
getting angry complaints from users. Right now I would rather be too
restrictive than too liberal.

> Now *all* that is allowed are ‚*’ — and as far as I know - only in string 
> (and not IPv4/IPv6) based entries.
> 
> So perhaps it is an option to compare things from the TLD down with a very 
> very simple loop.
> 
>       if (starts with a star) then
>               @a = array of FQDN split on ‚.'
>               @b = array of FQDN split on ‚.’
> 
>               if not right lenghts - bail
>               working from the topmost side working to last but one
>                       bail if not the same.
>               check if we have left just one entry on a and a wildcard on b.
> 
> i.e. avoid wildcards completely.

Please correct me if I am wrong but after rereading relevant RFCs I was
under impression that complex wild card expressions in subjectAltName
like 

a*b*c*d.mydomain.com

were perfectly legal. This was the primary reason why I felt the use of
regex matching was beneficial. Should we revert to supporting simple
'*', 'blah*' expressions only?

Oleg



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to