Visão geral e linha do tempo de segurança

Todas as proteções do Bromure correm no anfitrião, dentro do proxy e do comutador de rede virtual: a troca de credenciais, a firewall de saída, as salvaguardas, as verificações da cadeia de fornecimento, a deteção de injeção de prompt e a proteção de dados pessoais. Cada vez que uma delas toma uma decisão — troca uma credencial, bloqueia uma ligação, verifica um pacote, retém uma mensagem — ela registra-a. A janela Linha do tempo de segurança mostra essas decisões: uma Visão geral das últimas 24 horas, e uma Linha do tempo de cada evento.

Responde a uma pergunta diferente do rastreio. Um rastro registra o próprio tráfego — «o que é que o agente enviou?» — e só quando liga o rastreio. A Linha do tempo de segurança registra o que os motores de segurança decidiram sobre esse tráfego, e está sempre ligada: em todas as máquinas, inscritas ou não, em modo privado ou não, sem nada para configurar.

Abrir a janela

Escolha Janela → Linha do tempo de segurança…, ou prima ⌘K e escolha Linha do tempo de segurança. A janela abre no separador Visão geral; o controlo segmentado no canto superior esquerdo alterna entre Visão geral e Linha do tempo. Há uma só janela para toda a aplicação; escolher o item de menu outra vez trá-la para a frente.

O separador Visão geral

A janela Linha do tempo de segurança no separador Visão geral: «Últimas 24 horas» com cinco mosaicos (4 Bloqueadas, 5 Permitidos, 2 Credenciais intermediadas, 2 Pacotes verificados, 0 Dados pessoais trocados), uma tabela Proteções com uma linha para cada uma de Payments API, Web app e Data pipeline e as colunas Firewall, Cadeia de fornecimento, Salvaguardas, Injeção de prompt, Proteção de dados pessoais e Intermediação de credenciais, e uma lista Últimos bloqueios com um bloqueio de firewall, um bloqueio de salvaguardas e um bloqueio de injeção de prompt

A Visão geral tem por título Últimas 24 horas — «O que os motores de segurança do Bromure decidiram para os seus agentes.» Tem três partes.

Mosaicos

Cinco mosaicos contam os eventos das últimas 24 horas:

MosaicoConta
BloqueadasTodos os eventos cuja decisão foi um bloqueio (vermelho na Linha do tempo), de qualquer motor.
PermitidosTodos os eventos cuja decisão foi deixar algo passar (verde na Linha do tempo), de qualquer motor.
Credenciais intermediadasEventos de Intermediação de credenciais: trocas de credenciais, tentativas de exfiltração bloqueadas, e anfitriões que permitiu a partir do alerta de comprometimento.
Pacotes verificadosEventos de Cadeia de fornecimento: cada obtenção de pacote que o proxy viu.
Dados pessoais trocadosO número de valores de dados pessoais que a proteção de dados pessoais trocou por substitutos — valores, não pedidos.

Clique num mosaico para saltar para o separador Linha do tempo. Credenciais intermediadas, Pacotes verificados e Dados pessoais trocados abrem-no filtrado pelo respetivo motor; Bloqueadas e Permitidos abrem-no em todos os motores, filtrado por esse resultado.

Proteções

A tabela Proteções lista cada máquina deste Mac, com a sua cor, e mostra que proteções tem ligadas — um visto verde para ligada, um traço cinzento para desligada:

ColunaAssinalada quando
FirewallA máquina tem regras de ligação de saída no painel de Salvaguardas, ou recusa tráfego sem correspondência.
Cadeia de fornecimentoPelo menos uma camada da cadeia de fornecimento está ligada (a barreira de idade, OSV, socket.dev, a remoção de scripts ou o aviso de lockfile).
SalvaguardasAs salvaguardas restringem efetivamente algo: um serviço com uma política de escrita diferente de Desligada, uma salvaguarda de base de dados, uma regra de ligação de saída, ou qualquer credencial definida como Perguntar antes de usar. O contorno insegura por pedido (X-bromure-insecure) não conta, já que relaxa em vez de restringir.
Injeção de promptPelo menos um detetor de injeção de prompt está ligado.
Proteção de dados pessoaisO interruptor principal da proteção de dados pessoais está ligado com pelo menos uma categoria.
Intermediação de credenciaisSempre: a troca de credenciais não pode ser desligada.

Use-a para detetar uma máquina que corre com menos proteções do que as outras. Para mudar alguma, abra as definições dessa máquina (ver Referência de Definições).

Últimos bloqueios

Últimos bloqueios lista os bloqueios mais recentes das últimas 24 horas, os mais recentes primeiro, até oito: o que foi bloqueado, o motor e a decisão, e há quanto tempo. A lista fica oculta quando nada foi bloqueado.

O separador Linha do tempo

A janela Linha do tempo de segurança no separador Linha do tempo: um campo Filtrar eventos…, o menu Todos os mecanismos, «8 eventos», os botões Exportar… e Limpar, e uma tabela com as colunas Hora, Workspace, Mecanismo, Condição e Decisão a listar linhas de Proteção de dados pessoais, Injeção de prompt, Cadeia de fornecimento, Firewall e Intermediação de credenciais, com cores azul, vermelho e verde

A Linha do tempo é uma tabela única de todos os eventos, os mais recentes primeiro:

ColunaMostra
HoraData e hora da decisão.
WorkspaceA máquina onde aconteceu. Quando espelha Macs remotos, mostra Mac · máquina.
MecanismoQue motor decidiu, com o respetivo ícone.
CondiçãoO que o motor viu: o anfitrião, o pacote, o fragmento, a chave… Passe o cursor para o texto completo; o texto pode ser selecionado e copiado.
DecisãoO que decidiu, com código de cores.
(última coluna)Nas linhas da firewall, um botão de ação rápida: Permitir…, Bloquear… ou Regra… — ver Ações rápidas da firewall. Para um pacote bloqueado pelo OSV ou pelo socket.dev, Permitir… → Sempre permitir … neste espaço de trabalho acrescenta-o aos pacotes confiáveis do espaço de trabalho (Permitido agora depois disso) — ver Confiar num pacote bloqueado.

As cores leem-se da mesma maneira em toda a janela:

  • Verde — permitido: deixado passar, aprovado, assinado.
  • Vermelho — bloqueado: negado, recusado, retido.
  • Azul — informativo: uma transformação que não é nem passagem nem bloqueio, como uma troca de credencial, uma lista de versões filtrada por idade ou scripts de instalação removidos.

A barra de ferramentas acima da tabela filtra-a:

  • Filtrar eventos… procura texto no motor, na condição, na decisão e nos nomes de máquina e de Mac.
  • O menu de motores (Todos os mecanismos por omissão) lista os motores que têm eventos.
  • O menu de resultados (Todos os resultados por omissão) restringe a tabela a eventos Bloqueadas ou Permitidos.
  • Quando espelha pelo menos um Mac remoto, aparece um menu de máquinas: Todas as máquinas, Este Mac, ou um Mac remoto.
  • A contagem de eventos («8 eventos») reflete os filtros.

Limpar esvazia a janela. Apenas oculta os eventos: eles ficam em disco, mas os eventos limpos não voltam quando a aplicação reinicia. Exportar… está descrito abaixo.

Os motores

MotorO que as suas linhas registramExemplos de decisões
Intermediação de credenciaisTrocas de credenciais no fio (Credenciais), tentativas de exfiltração, e anfitriões permitidos a partir do alerta de comprometimento.«trocado por sk-a…9f» (azul); «bloqueado — tentativa de exfiltração, VM em pausa» (vermelho), ou «bloqueado — tentativa de exfiltração (alertas desligados, VM não posta em pausa)» quando a máquina tem os alertas de exfiltração desligados; «permitido pelo utilizador nesta sessão» (verde)
Credencial usadaAssinaturas SSH e assinaturas AWS SigV4 que o anfitrião fez pelo agente.«assinado» (verde)
FirewallVereditos da firewall de saída, por anfitrião, porta e protocolo, com a regra que decidiu — ou «política predefinida» quando nenhuma regra correspondeu — tanto para ligações diretas como para as feitas através das definições de proxy. O anfitrião é o nome que o programa pediu (www.wikipedia.org), não o nome de CDN para que resolve. Um destino só volta a ser reportado quando passou um minuto desde o último relato, ou de imediato depois de as regras mudarem; as ligações permitidas só são listadas quando a máquina as regista, e as suas repetições juntam-se numa linha com uma contagem. Uma ligação aberta cortada porque as regras mudaram tem a sua própria linha.«permitir — allow tcp github.com:443» (verde); «negar — política predefinida» (vermelho); «ligação fechada — “allow tcp github.com:443” já não a permite» (vermelho); «negar» (vermelho) para ligações descartadas independentemente das regras (IPv6, QUIC, fragmentos IP)
SalvaguardasBloqueios de política de escrita (Salvaguardas), com o método e o caminho.«bloqueado — …» (vermelho)
Cadeia de fornecimentoCada obtenção de pacote, incluindo transferências .deb do apt (Proteção da Cadeia de Fornecimento).«verificado», «transferido» (verde); «verificado — versões mais recentes do que o período de espera ocultadas», «scripts de instalação removidos» (azul); «bloqueado — …» (vermelho)
Injeção de promptDeteções, com o detetor, a origem e um pequeno fragmento (Deteção de injeção de prompt).«registar», «permitido» (verde); «bloqueado» (vermelho)
Proteção de dados pessoaisPedidos em que dados pessoais foram trocados, com contagens por tipo e o anfitrião — nunca os valores (Proteção de dados pessoais) — e pedidos cuja análise esgotou o orçamento de modelo.«trocado por substitutos» (azul); «parcial — orçamento de modelo atingido; só regras de padrão» (azul)
Delegação entre agentesCada mensagem que um agente enviou a outro por delegação.«retransmitida» (azul); «retida — injeção de prompt» (vermelho)
TLS upstreamCertificados upstream em que o anfitrião recusou confiar, e usos do contorno insegura por pedido.«bloqueado — …» (vermelho); «permitido — validação de certificado ignorada (X-bromure-insecure); nenhuma credencial injetada» (verde)

Ações rápidas da firewall

As linhas da firewall podem alterar no momento as regras de ligações de saída da máquina. Use o botão na última coluna da linha, ou clique com o botão direito na linha. A alteração é guardada na máquina e aplica-se de imediato se estiver em execução — sem reinício.

  • Uma ligação bloqueada — Permitir anfitrião:porta acrescenta uma regra de permissão para exatamente esse anfitrião, protocolo e porta, colocada em primeiro lugar para ganhar à regra que a bloqueou. Quando o anfitrião é um subdomínio, também é oferecido Permitir todo o domínio:porta (por exemplo github.com para api.github.com), que cobre todos os subdomínios — exceto nos domínios de CDN e de alojamento partilhado (cloudflare.net, cloudfront.net, amazonaws.com, github.io, herokuapp.com…), onde «todo» significaria todos os clientes desse fornecedor. Os outros nomes pelos quais o anfitrião foi resolvido (os seus aliases de CDN) são oferecidos a seguir como anfitriões exatos. Cada um oferece Sempre, Por 15 minutos, Por 1 hora ou Até o espaço de trabalho parar; uma regra temporizada desliga-se sozinha quando o tempo acaba. Se a mesma regra já existir, o menu diz primeiro como está (desligada, ou ligada até quando), para que voltar a permitir nunca a encurte em silêncio. Se foi uma regra de recusa que a bloqueou, essa regra também pode ser desligada ou removida.
  • Uma ligação permitida por uma regra — Desativar a regra mantém a regra mas impede-a de corresponder (volte a marcá-la no editor para a recuperar); Remover a regra apaga-a. As ligações que a alteração agora recusa são cortadas.
  • Uma ligação permitida porque nenhuma regra correspondeu — Bloquear anfitrião (ou Bloquear todo o domínio) acrescenta uma regra de recusa para ele em todos os protocolos e portas.

As regras criadas aqui usam o nome que o programa pediu, o mesmo nome que o proxy verifica, para que se mantenham seja qual for a forma como o programa se liga.

Quando as regras mudaram desde que a linha foi registada — um anfitrião bloqueado entretanto permitido, ou o contrário — o botão mostra Permitido agora ou Bloqueado agora e o seu menu indica a regra (ou a política predefinida) que decide agora, em vez de oferecer de novo a mesma alteração.

As ações rápidas só aparecem nas linhas que uma alteração de regras pode afetar: não nas descartadas de IPv6, QUIC ou fragmentos, nem nos bloqueios de métodos HTTP de regras web. Nas linhas de um Mac remoto o botão fica desativado: altere as regras dessa máquina nas suas definições, no Mac que a executa.

Nota: se as definições da máquina estiverem abertas, a tabela de regras recebe a alteração. As edições não guardadas são mantidas: a alteração é fundida com elas regra a regra, e uma nota acima da tabela indica-o. Se as suas edições não puderem ser fundidas (uma regra que ainda não é válida), a nota oferece Recarregar (usar as regras guardadas) ou Manter as minhas edições.

A Linha do tempo registra apenas decisões de segurança. Leituras de ficheiros, comandos, chamadas de ferramentas e uso de modelos não estão nela; pertencem ao rastreio.

Exportar eventos

Exportar… (na barra de ferramentas de ambos os separadores) guarda os eventos num ficheiro CSV, chamado bromure-security-<data>.csv por omissão. Do separador Linha do tempo guarda exatamente o que a tabela mostra, com os filtros aplicados; do separador Visão geral guarda todos os eventos da janela. As linhas vão dos mais antigos para os mais recentes, com as colunas time (ISO 8601), machine («This Mac» ou o nome do Mac remoto), workspace, engine, condition, decision e outcome (allowed, blocked ou info).

Armazenamento e retenção

  • Cada evento é acrescentado a um ficheiro diário em ~/Library/Application Support/BromureAC/security-timeline/, uma linha JSON por evento, chamado <yyyy-MM-dd>.jsonl (datas UTC).
  • Os ficheiros com mais de 90 dias são eliminados.
  • No arranque, a janela recarrega os 5000 eventos mais recentes, e guarda no máximo 5000 em memória; os mais antigos ficam nos ficheiros.
  • Os eventos guardam apenas pré-visualizações: pré-visualizações de token como sk-a…f9q3, pré-visualizações de fragmentos, contagens de dados pessoais. Nenhum valor secreto ou pessoal é escrito.

Macs remotos

Os motores correm no Mac que aloja as máquinas. Quando um cliente remoto espelha outro Mac, recebe os eventos mais recentes desse Mac e mostra-os na sua própria janela Linha do tempo de segurança, ao lado dos locais. Os eventos de cada Mac espelhado são guardados à parte dos deste Mac, para que o menu de máquinas os possa separar e a coluna Workspace nomeie o Mac.

Relação com a telemetria empresarial

Num Mac inscrito no bromure.io, os mesmos eventos de motor são também enviados à organização como eventos na nuvem (credential.token_swap, egress.firewall, supply_chain.fetch, prompt_injection.detection, privacy.pii_swap e outros), a não ser que a máquina esteja em Modo privado. A Linha do tempo de segurança local é independente disso: registra todos os eventos, esteja o Mac inscrito ou não e esteja o modo privado ligado ou não. Ver Rastreio e Auditoria e Empresa.