C'è un bug nell'implementazione Base32 in Apache Commons Codecs:
Example, there is no byte array value that can be encoded into the string "C5CYMIHWQUUZMKUGZHGEOSJSQDE4L===", but the existing Base32 implementation would not reject it but decode it into an arbitrary value which if re-encoded again using the same implementation would result in the string "C5CYMIHWQUUZMKUGZHGEOSJSQDE4K===".
Instead of blindly decoding the invalid string, the Base32 codec should reject it (eg by throwing IlleglArgumentException) to avoid security exploitation (such as tunneling additional information via seemingly valid base 32 strings).
Quello che non capisco è come un utente malintenzionato può utilizzare questo bug per eseguire il tunneling di ulteriori informazioni. L'utente malintenzionato invia una stringa base32 non valida e ottiene una stringa base32 leggermente diversa. Che danno può causare?