Vue d'ensemble et chronologie de sécurité
Toutes les protections de Bromure tournent sur l'hôte, dans le proxy et le commutateur virtuel du réseau : l'échange d'identifiants, le pare-feu de sortie, les garde-fous, les vérifications de chaîne d'approvisionnement, la détection d'injection de prompt et la protection des données personnelles. Chaque fois que l'une d'elles prend une décision — échanger un identifiant, bloquer une connexion, vérifier un paquet, retenir un message — elle l'enregistre. La fenêtre Chronologie de sécurité montre ces décisions : une Vue d'ensemble des dernières 24 heures, et une Chronologie de chaque événement.
Elle répond à une autre question que le traçage. Une trace enregistre le trafic lui-même — « qu'est-ce que l'agent a envoyé ? » — et seulement quand vous activez le traçage. La Chronologie de sécurité enregistre ce que les moteurs de sécurité ont décidé à propos de ce trafic, et elle est toujours active : chaque machine, inscrite ou non, en mode privé ou non, sans rien à configurer.
Ouvrir la fenêtre
Choisissez Fenêtre → Chronologie de sécurité…, ou appuyez sur ⌘K et prenez Chronologie de sécurité. La fenêtre s'ouvre sur l'onglet Vue d'ensemble ; le contrôle segmenté en haut à gauche bascule entre Vue d'ensemble et Chronologie. Il y a une seule fenêtre pour toute l'application ; rechoisir l'élément de menu la ramène au premier plan.
L'onglet Vue d'ensemble
La Vue d'ensemble est intitulée Dernières 24 heures — « Ce que les moteurs de sécurité de Bromure ont décidé pour vos agents. » Elle a trois parties.
Les tuiles
Cinq tuiles comptent les événements des dernières 24 heures :
| Tuile | Compte |
|---|---|
| Bloqués | Chaque événement dont la décision a été un blocage (rouge dans la Chronologie), depuis n'importe quel moteur. |
| Autorisés | Chaque événement dont la décision a été de laisser passer quelque chose (vert dans la Chronologie), depuis n'importe quel moteur. |
| Identifiants relayés | Les événements de Courtage d'identifiants : échanges d'identifiants, tentatives d'exfiltration bloquées, et hôtes que vous avez autorisés depuis l'alerte de compromission. |
| Paquets vérifiés | Les événements de Chaîne d'approvisionnement : chaque récupération de paquet que le proxy a vue. |
| Données personnelles remplacées | Le nombre de valeurs de données personnelles que la protection des données personnelles a remplacées par des substituts — des valeurs, pas des requêtes. |
Cliquez une tuile pour sauter à l'onglet Chronologie. Identifiants relayés, Paquets vérifiés et Données personnelles remplacées l'ouvrent filtré sur leur moteur ; Bloqués et Autorisés l'ouvrent sur tous les moteurs, filtré sur ce résultat.
Protections
Le tableau Protections liste chaque machine de ce Mac, avec sa couleur, et montre quelles protections elle a activées — une coche verte pour activé, un tiret gris pour désactivé :
| Colonne | Cochée quand |
|---|---|
| Pare-feu | La machine a des règles de connexion sortante dans son volet Garde-fous, ou refuse le trafic non apparié. |
| Chaîne d'approvisionnement | Au moins une couche de chaîne d'approvisionnement est active (la barrière d'âge, OSV, socket.dev, le retrait de scripts ou l'invite de fichier de verrouillage). |
| Garde-fous | Les garde-fous restreignent effectivement quelque chose : un service dont la politique d'écriture n'est pas Désactivée, un garde-fou de base de données, une règle de connexion sortante, ou tout identifiant réglé sur Demander avant usage. Le contournement non sécurisé par requête (X-bromure-insecure) ne compte pas, puisqu'il relâche au lieu de restreindre. |
| Injection de prompt | Au moins un détecteur d'injection de prompt est actif. |
| Protection des données personnelles | L'interrupteur principal de la protection des données personnelles est actif avec au moins une catégorie. |
| Courtage d'identifiants | Toujours : l'échange d'identifiants ne peut pas être désactivé. |
Utilisez-le pour repérer une machine qui tourne avec moins de protections que les autres. Pour en changer une, ouvrez les réglages de cette machine (voir Référence des réglages).
Derniers blocages
Derniers blocages liste les blocages les plus récents des dernières 24 heures, les plus récents d'abord, jusqu'à huit : ce qui a été bloqué, le moteur et la décision, et il y a combien de temps. La liste est masquée quand rien n'a été bloqué.
L'onglet Chronologie
La Chronologie est un tableau unique de chaque événement, les plus récents d'abord :
| Colonne | Montre |
|---|---|
| Heure | Date et heure de la décision. |
| Espace de travail | La machine où cela s'est produit. Quand vous mettez des Mac distants en miroir, il indique Mac · machine. |
| Moteur | Quel moteur a décidé, avec son icône. |
| Condition | Ce que le moteur a vu : l'hôte, le paquet, l'extrait, la clé… Survolez pour le texte complet ; le texte peut être sélectionné et copié. |
| Décision | Ce qu'il a décidé, avec un code couleur. |
| (dernière colonne) | Pour les lignes du pare-feu, un bouton d'action rapide : Autoriser…, Bloquer… ou Règle… — voir Actions rapides du pare-feu. Pour un paquet bloqué par OSV ou socket.dev, Autoriser… → Toujours autoriser … dans cet espace de travail l'ajoute aux paquets de confiance de l'espace de travail (Autorisé désormais une fois que c'est fait) — voir Faire confiance à un paquet bloqué. |
Les couleurs se lisent de la même façon partout dans la fenêtre :
- Vert — autorisé : laissé passer, validé, signé.
- Rouge — bloqué : refusé, rejeté, retenu.
- Bleu — informatif : une transformation qui n'est ni un passage ni un blocage, comme un échange d'identifiant, une liste de versions filtrée par âge ou des scripts d'installation retirés.
La barre d'outils au-dessus du tableau le filtre :
- Filtrer les événements… correspond au texte dans le moteur, la condition, la décision, les noms de machine et de Mac.
- Le menu des moteurs (Tous les moteurs par défaut) liste les moteurs qui ont des événements.
- Le menu des résultats (Tous les résultats par défaut) restreint le tableau aux événements Bloqués ou Autorisés.
- Quand vous mettez au moins un Mac distant en miroir, un menu de machines apparaît : Toutes les machines, Ce Mac, ou un Mac distant.
- Le compte d'événements (« 8 événements ») reflète les filtres.
Effacer vide la fenêtre. Cela ne fait que masquer les événements : ils restent sur le disque, mais les événements effacés ne reviennent pas au redémarrage de l'application. Exporter… est décrit plus bas.
Les moteurs
| Moteur | Ce que ses lignes enregistrent | Exemples de décisions |
|---|---|---|
| Courtage d'identifiants | Les échanges d'identifiants sur le fil (Identifiants), les tentatives d'exfiltration, et les hôtes autorisés depuis l'alerte de compromission. | « remplacé par sk-a…9f » (bleu) ; « bloqué — tentative d'exfiltration, VM mise en pause » (rouge), ou « bloqué — tentative d'exfiltration (alertes désactivées, VM non mise en pause) » quand la machine a les alertes d'exfiltration désactivées ; « autorisé par l'utilisateur pour cette session » (vert) |
| Identifiant utilisé | Les signatures SSH et les signatures AWS SigV4 que l'hôte a effectuées pour l'agent. | « signé » (vert) |
| Pare-feu | Les verdicts du pare-feu de sortie, par hôte, port et protocole, avec la règle qui a décidé — ou « politique par défaut » quand aucune règle ne correspondait — pour les connexions directes comme pour celles passées par les réglages de proxy. L'hôte est le nom que le programme a demandé (www.wikipedia.org), pas le nom de CDN vers lequel il se résout. Une destination n'est signalée à nouveau qu'une fois passée une minute depuis son dernier signalement, ou aussitôt après un changement de règles ; les connexions autorisées ne sont listées que quand la machine les journalise, et leurs répétitions se replient en une ligne avec un compteur. Une connexion ouverte coupée parce que les règles ont changé a sa propre ligne. | « autoriser — allow tcp github.com:443 » (vert) ; « refuser — politique par défaut » (rouge) ; « connexion fermée — « allow tcp github.com:443 » ne l'autorise plus » (rouge) ; « refuser » (rouge) pour les connexions rejetées quelles que soient les règles (IPv6, QUIC, fragments IP) |
| Garde-fous | Les blocages de politique d'écriture (Garde-fous), avec la méthode et le chemin. | « bloqué — … » (rouge) |
| Chaîne d'approvisionnement | Chaque récupération de paquet, y compris les téléchargements .deb d'apt (Protection de la chaîne d'approvisionnement). | « vérifié », « téléchargé » (vert) ; « vérifié — versions plus récentes que le délai de refroidissement masquées », « scripts d'installation retirés » (bleu) ; « bloqué — … » (rouge) |
| Injection de prompt | Les détections, avec le détecteur, la source et un court extrait (Détection d'injection de prompt). | « journaliser », « autorisé » (vert) ; « bloqué » (rouge) |
| Protection des données personnelles | Les requêtes dans lesquelles des données personnelles ont été remplacées, avec les décomptes par type et l'hôte — jamais les valeurs (Protection des données personnelles) — et les requêtes dont l'analyse a épuisé le budget de modèle. | « remplacé par des substituts » (bleu) ; « partiel — budget de modèle atteint ; règles de motif seulement » (bleu) |
| Délégation entre agents | Chaque message qu'un agent a envoyé à un autre par délégation. | « relayé » (bleu) ; « retenu — injection de prompt » (rouge) |
| TLS amont | Les certificats amont que l'hôte a refusé de faire confiance, et les usages du contournement non sécurisé par requête. | « bloqué — … » (rouge) ; « autorisé — validation de certificat ignorée (X-bromure-insecure) ; aucun identifiant injecté » (vert) |
Actions rapides du pare-feu
Les lignes du pare-feu peuvent modifier sur-le-champ les règles de connexions sortantes de la machine. Utilisez le bouton de la dernière colonne de la ligne, ou faites un clic droit sur la ligne. Le changement est enregistré dans la machine et s'y applique immédiatement si elle tourne — sans redémarrage.
- Une connexion bloquée — Autoriser hôte:port ajoute une règle d'autorisation pour exactement cet hôte, ce protocole et ce port, placée en tête pour l'emporter sur la règle qui l'a bloquée. Quand l'hôte est un sous-domaine, Autoriser tout domaine:port est aussi proposé (par exemple
github.compourapi.github.com), qui couvre tous les sous-domaines — sauf sous les domaines de CDN et d'hébergement mutualisé (cloudflare.net,cloudfront.net,amazonaws.com,github.io,herokuapp.com…), où « tout » voudrait dire tous les clients de ce fournisseur. Les autres noms par lesquels l'hôte s'est résolu (ses alias de CDN) sont proposés ensuite comme hôtes exacts. Chacun propose Toujours, Pendant 15 minutes, Pendant 1 heure ou Jusqu'à l'arrêt de l'espace de travail ; une règle temporisée se désactive d'elle-même quand le temps est écoulé. Si la même règle existe déjà, le menu dit d'abord où elle en est (désactivée, ou active jusqu'à quand), de sorte que réautoriser ne la raccourcit jamais en silence. Si une règle de refus l'a bloquée, cette règle peut aussi être désactivée ou supprimée. - Une connexion autorisée par une règle — Désactiver la règle garde la règle mais l'empêche de correspondre (recochez-la dans l'éditeur pour la rétablir) ; Supprimer la règle l'efface. Les connexions que le changement refuse désormais sont coupées.
- Une connexion autorisée parce qu'aucune règle ne correspondait — Bloquer hôte (ou Bloquer tout domaine) ajoute une règle de refus vers lui pour tous les protocoles et tous les ports.
Les règles créées ici utilisent le nom que le programme a demandé, le même nom que vérifie le proxy, de sorte qu'elles tiennent quelle que soit la façon dont le programme se connecte.
Quand les règles ont changé depuis l'enregistrement de la ligne — un hôte bloqué autorisé depuis, ou l'inverse — le bouton indique Autorisé désormais ou Bloqué désormais et son menu nomme la règle (ou la politique par défaut) qui décide maintenant, au lieu de proposer à nouveau le même changement.
Les actions rapides n'apparaissent que pour les lignes qu'un changement de règle peut affecter : pas pour les rejets IPv6, QUIC ou de fragments, ni pour les blocages de méthodes HTTP des règles web. Sur les lignes d'un Mac distant, le bouton est grisé : changez les règles de cette machine dans ses réglages, sur le Mac qui la fait tourner.
Note : si les réglages de la machine sont ouverts, le tableau des règles reprend le changement. Les modifications non enregistrées sont conservées : le changement y est fusionné règle par règle, et une note au-dessus du tableau le signale. Si vos modifications ne peuvent pas être fusionnées (une règle qui ne s'analyse pas encore), la note propose Recharger (prendre les règles enregistrées) ou Garder mes modifications.
La Chronologie n'enregistre que des décisions de sécurité. Les lectures de fichiers, les commandes, les appels d'outils et l'usage des modèles n'y sont pas ; ils appartiennent au traçage.
Exporter des événements
Exporter… (dans la barre d'outils des deux onglets) enregistre les événements dans un fichier CSV, nommé bromure-security-<date>.csv par défaut. Depuis l'onglet Chronologie, il enregistre exactement ce que le tableau montre, filtres appliqués ; depuis l'onglet Vue d'ensemble, il enregistre chaque événement de la fenêtre. Les lignes sont les plus anciennes d'abord, avec les colonnes time (ISO 8601), machine (« This Mac » ou le nom du Mac distant), workspace, engine, condition, decision et outcome (allowed, blocked ou info).
Stockage et conservation
- Chaque événement est ajouté à un fichier quotidien dans
~/Library/Application Support/BromureAC/security-timeline/, une ligne JSON par événement, nommé<yyyy-MM-dd>.jsonl(dates UTC). - Les fichiers de plus de 90 jours sont supprimés.
- Au lancement, la fenêtre recharge les 5 000 événements les plus récents, et n'en tient au plus 5 000 en mémoire ; les plus anciens restent dans les fichiers.
- Les événements ne contiennent que des aperçus : des aperçus de jeton comme
sk-a…f9q3, des aperçus d'extrait, des décomptes de données personnelles. Aucune valeur secrète ou personnelle n'est écrite.
Les Mac distants
Les moteurs tournent sur le Mac qui héberge les machines. Quand un client distant met un autre Mac en miroir, il reçoit les événements les plus récents de ce Mac et les montre dans sa propre fenêtre Chronologie de sécurité, aux côtés des siens. Les événements de chaque Mac mis en miroir sont tenus à part de ceux de ce Mac, pour que le menu de machines puisse les séparer et que la colonne Espace de travail nomme le Mac.
Rapport avec la télémétrie d'entreprise
Sur un Mac inscrit auprès de bromure.io, les mêmes événements de moteur sont aussi envoyés à l'organisation comme événements cloud (credential.token_swap, egress.firewall, supply_chain.fetch, prompt_injection.detection, privacy.pii_swap et d'autres), sauf si la machine est en Mode privé. La Chronologie de sécurité locale en est indépendante : elle enregistre chaque événement, que le Mac soit inscrit ou non et que le mode privé soit actif ou non. Voir Traçage et audit et Entreprise.