Gå til indhold
← Tilbage til bloggen
politiksikkerhedhomebrewenterprisedevops

Sådan blokerer du farlige Homebrew-pakker i din organisation

En praktisk guide til it- og sikkerhedsteams om at identificere højrisiko Homebrew-pakker og håndhæve blokeringspolitikker på tværs af macOS- og Linux-udviklerflåder — uden at forstyrre udviklerens arbejdsgange.

EnterpriseBrew Team··8 min læsning

Når en udvikler kører brew install nmap på en virksomheds MacBook, er tre ting sande på samme tid: installationen lykkes på få sekunder, den logges ingen steder, og sikkerhedsteamet har ingen idé om, at det er sket. For de fleste organisationer er dette ikke hypotetisk — det er standardtilstanden for uadministreret Homebrew på virksomhedsmaskiner.

Denne guide dækker, hvordan man identificerer, hvilke Homebrew-pakker der udgør en risiko, hvordan man opbygger en forsvarlig politik omkring dem, og hvordan man håndhæver den politik på tværs af din flåde uden friktion.

Hvorfor Homebrew-pakkekontrol er vigtig

Homebrew installerer software direkte i brugerområdet uden rettighedsforhøjelse (elevation), uden godkendelses-workflow og uden en central log. For individuelle udviklere er dette en funktion. For it- og sikkerhedsteams, der administrerer hundredvis af macOS- og Linux-maskiner, er det en blind vinkel.

De praktiske risici falder i tre kategorier:

Netværksrekognosceringsværktøjer. Pakker som nmap, masscan og arp-scan giver en udvikler evnen til at kortlægge den interne netværkstopologi. Der er legitime anvendelser — sikkerhedsingeniører, netværksteams — men ubegrænset tilgængelighed på tværs af alle udviklermaskiner skaber unødvendig eksponering. En angriber, der kompromitterer en udviklerkonto, får de samme værktøjer.

Dataeksfiltreringsvektorer. Værktøjer som netcat (nc), socat og curl kombineret med visse flag kan flytte data ud af et netværk med minimal friktion. De fleste af disse har legitime anvendelser; spørgsmålet er, om hver brug skal være tilgængelig på hver maskine eller kun på maskiner, hvor der er en dokumenteret grund.

Adgangskode- og legitimationsværktøjer. john (John the Ripper), hashcat og lignende pakker er specialistværktøjer, der intet har at gøre på en standard udviklerarbejdsstation. Deres tilstedeværelse på en maskine er i sig selv en anomali, der er værd at undersøge.

Målet er ikke at låse udviklere ude fra værktøjer, de har brug for. Det er at sikre, at højrisikoværktøjer kræver eksplicit godkendelse — og at godkendelsen spores.

Identifikation af, hvilke pakker der skal blokeres

Start med en kategoribaseret ramme, og forfin derefter med din organisations faktiske risikoprofil.

Niveau 1: Bloker som standard, kræv sikkerhedsgodkendelse

Disse pakker har ingen rutinemæssig udvikleranvendelse og betydeligt misbrugspotentiale:

Formel Risiko
nmap Netværksportscanning og OS-fingeraftryk
masscan Højhastigheds netværksscanner (hurtigere end nmap)
netcat / ncat Rå TCP/UDP-forbindelser; almindelig i reverse shells
socat Multifunktionelt relæ; brugt i post-exploitation
john Adgangskode hash-cracking
hashcat GPU-accelereret adgangskode cracking
hydra Brute-force login-værktøj
aircrack-ng Wi-Fi-netværk cracking-suite
metasploit Penetration testing framework
sqlmap Automatiseret SQL-injektionsværktøj

Niveau 2: Tillad med begrundelse, log brug

Dette er dual-use værktøjer med legitime udviklerapplikationer, men med forhøjet risiko:

Formel Legitimeret brug Risiko
wireshark Netværksfejlfinding Fuld pakkeregistrering på virksomhedsnetværk
tcpdump Netværksinspektion på lavt niveau Samme som ovenfor
telnet Gammel systemadgang Ukrypterede legitimationsoplysninger i transit
rclone Cloud storage sync Dataeksfiltrering til personlig sky
restic Backup-værktøjer Eksfiltrering via backupkanal
proxychains-ng Netværk proxy-kædning Omgår virksomhedens web-proxy

Niveau 3: Godkend bredt, spor versioner

Dette er standardudviklerværktøjer, der er sikre at tillade, men som stadig bør spores til CVE-formål:

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

At spore versioner er vigtigt her: curl 8.0.1 er f.eks. påvirket af CVE-2023-38545 (CVSS 9.8). Du kan ikke handle på de oplysninger uden at vide, hvilke maskiner der har hvilken version installeret.

Opbygning af politikken

En blokeringspolitik, der ikke kommunikeres, er en politik, der genererer billetter (tickets). Før håndhævelse skal tre ting dokumenteres:

  1. Hvad der er blokeret og hvorfor. En udvikler, der kører enterprisebrew install nmap og får en generisk "blokeret af politik"-besked, vil enten oprette en billet i forvirring eller finde en løsning. En besked, der siger "nmap er blokeret af politik SEC-04 (netværksrekognosceringsværktøjer). Hvis du har brug for dette til autoriseret sikkerhedstestning, skal du anmode om en undtagelse på security@yourcompany.com" er handlingsorienteret.

  2. Undtagelsesprocessen. Definer, hvem der kan godkende undtagelser, SLA for at gøre det, og hvordan godkendelser registreres. En undtagelsesproces, der tager to uger, træner udviklere i at omgå politikken. En undtagelsesproces, der tager to timer, træner dem i at bruge den.

  3. Omfang efter team eller afdeling. Sikkerhedsingeniører har brug for nmap. Netværksingeniører har brug for wireshark. At blokere værktøjer fra de mennesker, der bruger dem legitimt — fordi værktøjet ikke bør være på hver maskine — er både kontraproduktivt og uretfærdigt. Afdelingsbestemte politikker giver dig mulighed for at blokere nmap som standard, mens du opretholder en eksplicit tilladelsesliste for sikkerhedsteamets maskiner.

Håndhævelse af politikken

Uden en central proxy er håndhævelse af politik ikke mulig på Homebrew-niveauet. Homebrew har ingen mekanisme for en central myndighed til at definere, hvad der kan og ikke kan installeres. Håndhævelse skal ske på et lag, der opsnapper installationsanmodningen.

Arkitekturen, der får dette til at fungere:

Udviklermaskine
  └─ enterprisebrew install nmap
        └─ POST /install {nmap}
              └─ politiktjek: nmap → blokeret (SEC-04)
                    └─ 403 svar med blokeringsårsag

Udvikleren downloader aldrig en bottle. Blokeringen er øjeblikkelig, årsagen er synlig, og forsøget logges.

Konfiguration af blokeringer via adminportalen

I EnterpriseBrew administreres blokeringspolitikker gennem administratordashboardet under Policy → Block List. Hver post har:

  • Formula name — nøjagtigt match med Homebrew-formelnavnet
  • Reason — vises til udvikleren, når installationen blokeres
  • Scope — globalt eller begrænset til specifikke afdelinger
  • Active — skift for at aktivere eller deaktivere uden at slette reglen

For at tilføje nmap til blokeringslisten:

  1. Naviger til Policy → Block List → Add Rule
  2. Indtast nmap som formelnavnet
  3. Indstil årsagen: Netværksscanningsværktøj — kræver sikkerhedsteamets godkendelse (indsend anmodning på security@yourcompany.com)
  4. Indstil omfang til Global eller begræns til specifikke afdelinger
  5. Gem

Reglen træder i kraft med det samme på tværs af alle tilsluttede udviklermaskiner. Ingen genstart, ingen MDM-push, ingen konfigurationsændring pr. maskine påkrævet.

Via API'et (til IaC / GitOps workflows)

Hvis du administrerer infrastruktur som kode, kan politikregler oprettes via REST API'et:

curl -X POST https://brew.yourcompany.internal/api/v1/policy/block \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "formula": "nmap",
    "reason": "Netværksscanningsværktøj — kræver sikkerhedsteamets godkendelse",
    "scope": "global"
  }'

Dette giver dig mulighed for at definere din blokeringsliste i en konfigurationsfil, versionere den i git og anvende den gennem en CI/CD-pipeline — det samme workflow, der bruges til enhver anden infrastrukturændring.

Hvad der sker, når en blokering udløses

Udvikleroplevelsen betyder noget. Når en blokering udløses, udsender CLI'en:

$ enterprisebrew install nmap
✗ nmap er ikke tilladt i henhold til din organisations politik.

  Årsag: Netværksscanningsværktøj — kræver sikkerhedsteamets godkendelse.
  For at anmode om en undtagelse skal du kontakte: security@yourcompany.com

  Politik: SEC-04 | Anvendt af: IT Security

Installationen afsluttes med en statuskode, der ikke er nul, så CI-pipelines, der utilsigtet forsøger at installere blokerede pakker, vil også fejle tydeligt.

I revisionsloggen (audit log) registreres hændelsen med status: blocked, formlen, udviklerens brugernavn, maskinens hostnavn og et tidsstempel. Hvis du har konfigureret alarmer, kan der sendes en Slack- eller PagerDuty-meddelelse, når der forsøges med en niveau 1-formel — hvilket i sig selv er et nyttigt signal: en person på en standard udviklermaskine forsøgte at installere en adgangskodekrakker.

Håndtering af legitime undtagelser

Undtagelsesflowet i EnterpriseBrew fungerer på afdelingsniveau:

  1. Udvikler anmoder om adgang via dit interne billetsystem
  2. Sikkerhedsteam gennemgår og godkender
  3. Administrator føjer formlen til den anmodende udviklers afdelingstilladelsesliste (eller opretter et nyt afdelingsomfang for use casen — f.eks. "Security Engineering")
  4. Udvikler kan installere formlen; installationen logges med de samme revisionsdetaljer som enhver anden installation

Den væsentligste forskel fra en generel tilladelsesliste er, at undtagelsen har et omfang: godkendelse af nmap for sikkerhedsteamet godkender det ikke for alle udviklere. Og godkendelsen registreres — hvis en revisor spørger "hvem har nmap installeret og hvorfor", findes svaret i politikloggen.

Måling af effekten

To uger efter aktivering af blokeringspolitikker skal du trække revisionsloggen og se på:

  • Blokeringsrate efter formel — hvilke pakker forsøges og blokeres oftest? Stor mængde på en niveau 1-formel (som netcat) kan indikere, at udviklere bruger den til noget legitimt, og undtagelsesprocessen bør strømlines.
  • Undtagelsesanmodninger — er godkendelserne hurtige nok til, at udviklere ikke omgår politikken?
  • CVE-eksponering — for niveau 3-pakker (godkendte, men sporede), hvor mange enheder har pakker med kendte CVE'er? Det er denne metrik, der betyder noget for revisorer.

Målet er ikke en nulforsøgsrate for blokeringer. Blokeringer forventes og er sunde — de er politikken, der fungerer. Metrikken at holde øje med er, om legitime use cases håndteres gennem undtagelsesprocessen (godt) eller gennem løsninger som direkte brew install-kommandoer, der omgår proxyen (dårligt, og detekterbart via huller i revisionsloggen).

Konklusion

Blokering af farlige Homebrew-pakker handler ikke om at forhindre udviklere i at udføre deres arbejde. Det handler om at sikre, at højrisikoværktøjer kræver eksplicit begrundelse, at begrundelsen registreres, og at organisationen kan besvare en revisors spørgsmål — "hvem har netværksscanningssoftware installeret og hvorfor?" — uden en to ugers undersøgelse.

Den tekniske implementering er ligetil, når politikken er defineret: en central proxy, der kontrollerer hver installationsanmodning i forhold til en blokeringsliste, logger hvert resultat og synliggør blokerede forsøg for sikkerhedsteamet. Det sværeste arbejde er at definere niveauerne, skrive klare blokeringsårsager og designe en undtagelsesproces, der er hurtig nok til, at udviklere bruger den.

Få processen rigtig, så følger værktøjerne med. Få værktøjerne rigtige, og processen bliver usynlig for udviklere — hvilket er præcis der, hvor den skal være.

Relaterede indlæg