Vai al contenuto
← Torna al blog
policysicurezzahomebrewenterprisedevops

Come bloccare i pacchetti Homebrew pericolosi nella tua organizzazione

Una guida pratica per i team IT e di sicurezza sull'identificazione dei pacchetti Homebrew ad alto rischio e sull'applicazione di policy di blocco sui dispositivi degli sviluppatori macOS e Linux, senza interrompere i flussi di lavoro.

Team di EnterpriseBrew··10 min lettura

Quando uno sviluppatore esegue brew install nmap su un MacBook aziendale, tre cose sono vere contemporaneamente: l'installazione riesce in pochi secondi, non viene registrata da nessuna parte e il team di sicurezza non ha idea che sia successo. Per la maggior parte delle organizzazioni, questa non è un'ipotesi: è lo stato predefinito di un Homebrew non gestito sulle macchine aziendali.

Questa guida illustra come identificare quali pacchetti Homebrew presentano un rischio, come creare una policy difendibile attorno ad essi e come applicare tale policy su tutta la flotta aziendale senza attriti.

Perché il controllo dei pacchetti Homebrew è importante

Homebrew installa il software direttamente nello spazio utente senza elevazione dei privilegi, senza un flusso di lavoro di approvazione e senza un log centrale. Per i singoli sviluppatori, questa è una funzionalità. Per i team IT e di sicurezza che gestiscono centinaia di macchine macOS e Linux, è un punto cieco.

I rischi pratici si dividono in tre categorie:

Strumenti di ricognizione di rete. Pacchetti come nmap, masscan e arp-scan danno a uno sviluppatore la capacità di mappare la topologia della rete interna. Ci sono usi legittimi (ingegneri della sicurezza, team di rete), ma la disponibilità illimitata su tutte le macchine degli sviluppatori crea un'esposizione non necessaria. Un aggressore che compromette un account sviluppatore ottiene gli stessi strumenti.

Vettori di esfiltrazione dati. Strumenti come netcat (nc), socat e curl combinati con determinati flag possono spostare i dati fuori da una rete con il minimo attrito. La maggior parte di questi ha usi legittimi; la domanda è se ogni utilizzo debba essere disponibile su ogni macchina o solo sulle macchine in cui c'è un motivo documentato.

Strumenti per password e credenziali. john (John the Ripper), hashcat e pacchetti simili sono strumenti specialistici che non hanno motivo di essere presenti su una workstation standard per sviluppatori. La loro presenza su una macchina è di per sé un'anomalia che vale la pena indagare.

L'obiettivo non è impedire agli sviluppatori di accedere agli strumenti di cui hanno bisogno. L'obiettivo è garantire che gli strumenti ad alto rischio richiedano un'approvazione esplicita e che l'approvazione sia tracciata.

Identificare quali pacchetti bloccare

Inizia con un framework basato su categorie, per poi perfezionarlo con il reale profilo di rischio della tua organizzazione.

Livello 1: Bloccare per impostazione predefinita, richiedere l'approvazione di sicurezza

Questi pacchetti non hanno un uso quotidiano per gli sviluppatori e presentano un significativo potenziale di abuso:

Formula Rischio
nmap Scansione delle porte di rete e fingerprinting del sistema operativo
masscan Scanner di rete ad alta velocità (più veloce di nmap)
netcat / ncat Connessioni TCP/UDP raw; comune nelle reverse shell
socat Relè multiuso; utilizzato in fase di post-exploitation
john Cracking degli hash delle password
hashcat Cracking delle password accelerato da GPU
hydra Strumento di login brute-force
aircrack-ng Suite di cracking per reti Wi-Fi
metasploit Framework per penetration test
sqlmap Strumento automatizzato per SQL injection

Livello 2: Consentire con giustificazione, registrare l'utilizzo

Si tratta di strumenti a duplice uso con applicazioni legittime per gli sviluppatori ma con un rischio elevato:

Formula Uso legittimo Rischio
wireshark Debug di rete Acquisizione completa dei pacchetti sulle reti aziendali
tcpdump Ispezione di rete a basso livello Lo stesso di sopra
telnet Accesso a sistemi legacy Credenziali in chiaro in transito
rclone Sincronizzazione dell'archiviazione cloud Esfiltrazione di dati verso il cloud personale
restic Strumenti di backup Esfiltrazione tramite canale di backup
proxychains-ng Concatenamento di proxy di rete Bypassa il web proxy aziendale

Livello 3: Approvare in generale, tracciare le versioni

Si tratta di strumenti di sviluppo standard che possono essere consentiti in sicurezza ma che dovrebbero comunque essere tracciati ai fini delle CVE:

jq, wget, curl, git, ripgrep, fd, bat, fzf, htop, tmux, vim, neovim, python@3.x, node, go, rust

Il monitoraggio delle versioni è importante in questo caso: curl 8.0.1, ad esempio, è interessato dalla CVE-2023-38545 (CVSS 9.8). Non è possibile agire su tali informazioni senza sapere quali macchine hanno installato quale versione.

Costruire la policy

Una policy di blocco che non viene comunicata è una policy che genera ticket di supporto. Prima dell'applicazione, documenta tre cose:

  1. Cosa è bloccato e perché. Uno sviluppatore che esegue enterprisebrew install nmap e riceve un messaggio generico "bloccato dalla policy" aprirà un ticket di supporto per confusione o troverà una soluzione alternativa. Un messaggio che dice "nmap è bloccato dalla policy SEC-04 (strumenti di ricognizione di rete). Se hai bisogno di questo per test di sicurezza autorizzati, richiedi un'eccezione a security@yourcompany.com" è invece fruibile.

  2. Il processo di eccezione. Definisci chi può approvare le eccezioni, gli SLA per farlo e come vengono registrate le approvazioni. Un processo di eccezione che richiede due settimane insegna agli sviluppatori ad aggirare la policy. Un processo di eccezione che richiede due ore insegna loro a utilizzarlo.

  3. Ambito per team o dipartimento. Gli ingegneri della sicurezza hanno bisogno di nmap. Gli ingegneri di rete hanno bisogno di wireshark. Bloccare gli strumenti alle persone che li usano legittimamente — perché lo strumento non dovrebbe essere su ogni macchina — è controproducente e ingiusto. Le policy per dipartimento ti consentono di bloccare nmap per impostazione predefinita mantenendo un'allowlist (lista consentita) esplicita per le macchine del team di sicurezza.

Applicare la policy

Senza un proxy centrale, l'applicazione delle policy non è possibile a livello di Homebrew. Homebrew non ha alcun meccanismo per consentire a un'autorità centrale di definire cosa può e non può essere installato. L'applicazione deve avvenire a un livello che intercetta la richiesta di installazione.

L'architettura che fa funzionare questo meccanismo:

Macchina dello sviluppatore
  └─ enterprisebrew install nmap
        └─ POST /install {nmap}
              └─ controllo della policy: nmap → bloccato (SEC-04)
                    └─ risposta 403 con motivo del blocco

Lo sviluppatore non scarica mai alcun pacchetto. Il blocco è istantaneo, il motivo è visibile e il tentativo viene registrato.

Configurazione dei blocchi tramite il portale di amministrazione

In EnterpriseBrew, le policy di blocco vengono gestite tramite la dashboard di amministrazione in Policy → Block List. Ogni voce ha:

  • Formula name — corrispondenza esatta al nome della formula di Homebrew
  • Reason — mostrato allo sviluppatore quando l'installazione è bloccata
  • Scope — globale o limitato a dipartimenti specifici
  • Active — interruttore per abilitare o disabilitare senza eliminare la regola

Per aggiungere nmap alla lista dei blocchi:

  1. Vai a Policy → Block List → Add Rule
  2. Inserisci nmap come nome della formula
  3. Imposta il motivo: Strumento di scansione di rete — richiede l'approvazione del team di sicurezza (invia richiesta a security@yourcompany.com)
  4. Imposta l'ambito su Global o limitalo a dipartimenti specifici
  5. Salva

La regola ha effetto immediatamente su tutte le macchine degli sviluppatori connesse. Nessun riavvio, nessun push MDM, nessuna modifica di configurazione necessaria per ogni macchina.

Tramite l'API (per flussi di lavoro IaC / GitOps)

Se gestisci l'infrastruttura come codice, le regole di policy possono essere create tramite l'API REST:

curl -X POST https://brew.yourcompany.internal/api/v1/policy/block \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "formula": "nmap",
    "reason": "Strumento di scansione di rete — richiede l'approvazione del team di sicurezza",
    "scope": "global"
  }'

Questo ti consente di definire la tua blocklist in un file di configurazione, aggiornarne la versione in git e applicarla tramite una pipeline CI/CD: lo stesso flusso di lavoro utilizzato per qualsiasi altra modifica all'infrastruttura.

Cosa succede quando scatta un blocco

L'esperienza dello sviluppatore è importante. Quando scatta un blocco, la CLI emette:

$ enterprisebrew install nmap
✗ nmap non è consentito dalla policy della tua organizzazione.

  Motivo: Strumento di scansione di rete — richiede l'approvazione del team di sicurezza.
  Per richiedere un'eccezione, contatta: security@yourcompany.com

  Policy: SEC-04 | Applicato da: IT Security

L'installazione si chiude con un codice di stato diverso da zero, in modo che anche le pipeline CI che provano inavvertitamente a installare pacchetti bloccati falliranno chiaramente.

Nell'audit log, l'evento viene registrato con status: blocked, la formula, il nome utente dello sviluppatore, l'hostname della macchina e un timestamp. Se hai configurato degli avvisi, può essere inviata una notifica Slack o PagerDuty quando viene tentata una formula di Livello 1 — il che è di per sé un segnale utile: qualcuno su una macchina di sviluppo standard ha cercato di installare un password cracker.

Gestione delle eccezioni legittime

Il flusso delle eccezioni in EnterpriseBrew funziona a livello di dipartimento:

  1. Lo sviluppatore richiede l'accesso tramite il sistema di ticketing interno
  2. Il team di sicurezza esamina e approva
  3. L'amministratore aggiunge la formula all'allowlist del dipartimento dello sviluppatore richiedente (o crea un nuovo ambito dipartimentale per il caso d'uso, ad esempio "Ingegneria della sicurezza")
  4. Lo sviluppatore può installare la formula; l'installazione viene registrata con lo stesso dettaglio di controllo di qualsiasi altra installazione

La differenza fondamentale rispetto a un'allowlist generale è che l'eccezione è definita per un ambito: l'approvazione di nmap per il team di sicurezza non lo approva per tutti gli sviluppatori. E l'approvazione viene registrata: se un revisore chiede "chi ha installato nmap e perché", la risposta si trova nel log della policy.

Misurare l'effetto

Due settimane dopo aver abilitato le policy di blocco, estrai l'audit log e analizza:

  • Tasso di blocco per formula — quali pacchetti vengono tentati e bloccati più spesso? Un volume elevato su una formula di Livello 1 (come netcat) potrebbe indicare che gli sviluppatori la stanno utilizzando per scopi legittimi e il processo di eccezione dovrebbe essere semplificato.
  • Richieste di eccezione — le approvazioni sono abbastanza veloci da impedire agli sviluppatori di aggirare la policy?
  • Esposizione CVE — per i pacchetti di Livello 3 (approvati ma monitorati), quanti dispositivi hanno pacchetti con CVE note? Questa è la metrica che conta per i revisori.

L'obiettivo non è un tasso di tentativi di blocco pari a zero. I blocchi sono previsti e sani: indicano che la policy funziona. La metrica da monitorare è se i casi d'uso legittimi vengono gestiti tramite il processo di eccezione (buono) o tramite soluzioni alternative come i comandi brew install diretti che bypassano il proxy (cattivo e rilevabile tramite lacune nel log di controllo).

Conclusione

Bloccare i pacchetti Homebrew pericolosi non significa impedire agli sviluppatori di svolgere il proprio lavoro. Significa garantire che gli strumenti ad alto rischio richiedano una giustificazione esplicita, che la giustificazione sia registrata e che l'organizzazione possa rispondere alla domanda di un revisore — "chi ha installato il software di scansione di rete e perché?" — senza un'indagine di due settimane.

L'implementazione tecnica è semplice una volta definita la policy: un proxy centrale che controlla ogni richiesta di installazione rispetto a una blocklist, registra ogni risultato e segnala i tentativi bloccati al team di sicurezza. Il lavoro più difficile è definire i livelli, scrivere chiare ragioni di blocco e progettare un processo di eccezione abbastanza veloce in modo che gli sviluppatori lo utilizzino.

Imposta il processo in modo corretto e gli strumenti seguiranno. Imposta gli strumenti in modo corretto e il processo diventerà invisibile per gli sviluppatori, che è esattamente come dovrebbe essere.

Articoli correlati