Réseau
BER est un ensemble de règles qui transforme des données structurées en une suite d'octets transportable sur un réseau. Il décrit notamment le type, la longueur et la valeur de chaque élément, mais ne chiffre rien.
Rôle : BER encode des structures définies avec ASN.1, par exemple les messages échangés par LDAP. Chaque élément embarque une étiquette, une longueur et une valeur, ce qui permet au destinataire de reconstruire le message.
Sur le réseau : Sur une connexion LDAP en clair, BER reste parfaitement lisible après décodage. Un `tcpdump` sur le port 389 peut donc exposer un mot de passe de bind simple, les filtres de recherche et les attributs retournés.
À ne pas confondre : BER est un format d'encodage, pas un mécanisme de confidentialité. Pour protéger les données, il faut ajouter un chiffrement de transport comme TLS, ou utiliser LDAP sur une connexion sécurisée.
Ce qui arrive si on s'en passe
BER encode, il ne protège pas : ni confidentialité, ni intégrité, ni authenticité. Le placer sous une couche de transport chiffrée et signée, jamais l'inverse. À l'entrée, la garde consiste à borner le décodage avant de le lancer : taille maximale du message, profondeur d'imbrication limitée, refus des longueurs indéfinies et des encodages non minimaux, quota mémoire par élément. Toute structure destinée à être signée ou comparée passe par une forme canonique (DER), car deux encodages BER différents peuvent porter la même valeur. L'alerte collective repose sur la journalisation des rejets de parsage avec leur motif : une hausse de longueurs aberrantes ou d'imbrications profondes signale une campagne de fuzzing. La réponse d'essaim isole le décodeur dans un processus contraint, afin qu'un dépassement reste sans effet sur le reste du service.
Comment le mettre en place
Pour vérifier la malléabilité de BER, monter un labo minimal : prendre une petite structure ASN.1 (un entier, une chaîne, une séquence), puis produire plusieurs encodages BER valides de la même valeur, longueur définie contre longueur indéfinie, entier avec octet de tête superflu, chaîne fragmentée en segments constructed. Faire relire ces variantes par deux bibliothèques différentes, et comparer les octets bruts, les empreintes SHA-256 et les décisions d'acceptation. Le résultat attendu : des flux binaires distincts, donc des empreintes distinctes, pour une valeur sémantiquement identique. Cela prouve que BER ne fournit aucune forme canonique et qu'aucune signature, aucun cache ni aucun contrôle d'égalité ne doit reposer sur ses octets. DER existe pour ça.
Explication de la marmotte
Imagine une boîte contenant plusieurs objets. Pour que quelqu'un puisse la vider correctement, chaque objet porte une étiquette, indique sa taille et contient sa valeur. BER applique cette même méthode aux messages échangés entre ordinateurs. Le destinataire sait où commence chaque information et comment la lire. En revanche, les objets ne sont pas cachés dans la boîte. Si le message circule sans protection, une personne qui l'observe peut donc voir son contenu, y compris un mot de passe.
Où ce terme est utilisé
- Grand-père Castor raconte : bind LDAP en clair, corrigé (1 occurrence)
