generated from srsk7896/pipeline-vibecoding
[Sécurité] Le PDF « anonymisé » embarque des graphiques non anonymisés #5
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Risque identifié
Pour produire un PDF, le navigateur prend une « photo » (image JPEG) de chaque graphique de la page de diagnostic interne, en clair, puis l'envoie au serveur. Le serveur l'insère telle quelle dans le PDF, y compris en profil « client ». La frise d'occupation porte des horodatages à la minute ou à la seconde, alors que le profil
client-2026.08promet « horodatages : date seule ».De plus, les graphiques couvrent tous les appels, même quand l'agent a restreint l'export à une sélection, aux appels non aboutis, aux entrants ou aux sortants.
Contexte / éléments fournis
internal/web/templates/layout.gohtml:339-345: siformat === "pdf", capture de tous les graphiques (charts[k].toBase64Image("image/jpeg", 0.92)), sans tenir compte deprofilni deperimetre.internal/web/export_handler.go:74-80: les images reçues (images) sont transmises àexport.PDFquel que soit le profil.internal/export/pdf.go:99-117: les images sont insérées telles quelles.internal/analysis/series.go:146,246: libellés de la frise aux formats"02/01 15:04"et"02/01 15:04:05".Scénario d'impact
Un agent produit, pour un client, un PDF anonymisé des seuls appels entrants. Le document annonce « version anonymisée », mais sa frise montre l'heure précise de tous les appels, entrants comme sortants. La promesse d'anonymisation n'est pas tenue, et le rapport peut circuler au-delà du client (installateur, mainteneur du PABX).
Remédiation proposée
layout.gohtml), ne remplirex-imagesque siprofil === "interne";export_handler.go), ignorerimagesquandprofile == export.ProfileClient(défense en profondeur : ne jamais faire confiance au navigateur).3-fonctions.md), pas par un correctif.Sévérité proposée
Élevée : un engagement d'anonymisation documenté n'est pas tenu, dans un livrable remis à l'extérieur d'Orange Business. La donnée exposée se limite à des horodatages précis (pas de numéros), ce qui en borne l'impact.
Critères de validation
POST /exporteravecprofil=client,format=pdfet un champimagesnon vide → le PDF produit ne contient aucun objet/Subtype /Image.profil=interne,format=pdf→ les images sont toujours incluses (non-régression FEAT-10).images, ou l'envoie vide.Priorité proposée
Haute : le correctif immédiat se résume à deux conditions, et il ferme la fuite.
Périmètre estimé
internal/web/export_handler.go) / interface (layout.gohtml)Questions ouvertes
Labels proposés
type:securitypriority:higharea:securityarea:backend