Hur man använder Trivy för att hitta sårbarheter i Docker-behållare

0
160

En Trivy-skanning inspekterar din Dockerfiles basbild för att hitta olösta sårbarheter som dina containrar kommer att ärva. Trivy kan också titta på operativsystemspaket och källkodsberoenden som läggs till via populära pakethanterare.

Trivy har tre skanningstyper: behållare, Git-arkiv och filsystemkatalog. Vi fokuserar på containerskanningar i den här artikeln. Trivy-dokumenten ger mer information om hur du kan analysera din källkod och dess miljö.

Installera Trivy

Trivy finns på de mest populära Linux-distributionerna. Du kan behöva lägga till utvecklarens arkiv. Du hittar rätt länk för din distribution i Trivy-dokumenten.

Om du föredrar att använda en specifik version kan du ladda ner en binärversion från projektets GitHub-utgivningssida. Det finns också ett automatiskt installationsskript som laddar ner lämpligt binärt för ditt operativsystem.

Slutligen fick Trivy en egen Docker-avbildning som du kan använda istället för ren metallinstallation :

docker run –rm -v trivy-cache: /root/.cache/-v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy: senaste annonsen

Detta kommando binder din trivy-cache-katalog till Trivy-behållarens cacheväg. Detta förbättrar prestandan genom att låta Trivy cache-data utanför Docker mellan skanningar.

Din värd Docker-uttag monteras också i behållaren. Detta låter Trivy skanna andra behållare som körs på värden. Nu är du redo att börja hitta sårbarheter.

First Run

Trivys containermotor stöder lokala och fjärrbilder. Det fungerar med Docker, Podman, exporterade bildarkiv (dockerspara) och bilder i register som Docker Hub och GitHub Container Registry.

Du kan starta en grundläggande genomsökning med trivy image-kommandot. Detta accepterar en bildtagg.

trivy image my-image: senaste

Trivy laddar ner sin sårbarhetsdatabas vid första körningen. Databasen kommer att cachas och återanvändas för framtida genomsökningar.

Skanningsresultat skickas direkt till din terminal. Sammanfattningen högst upp visar det upptäckta containeroperativsystemet och en uppdelning av hittade sårbarheter efter svårighetsgrad. Tabellen ger en fullständig lista över utgåvor, inklusive biblioteket som var och en hittades i, en beskrivning och ett CVE-ID när det är tillgängligt. >

Trivy stöder flera flaggor så att du kan anpassa dess utdata. Det kommer som standard att visa alla upptäckta sårbarheter om inga flaggor finns. Detta kan inkludera sårbarheter som inte har lappats i uppströmsprojektet.

Annons

Du kan utesluta ofixerade problem genom att lägga till –ignore-unfixed-flaggan. Detta minskar bullret genom att dölja problem som du inte kan lösa.

trivy image –ignore-unfixed my-image: latest

Ibland kanske du vill medvetet acceptera en sårbarhet. Inte alla frågor påverkar alla projekt lika. Om du inte påverkas eller om du är villig att ta risken kommer Trivy att låta dig utelämna specifika CVE-ID: n från dina skanningar.

Lägg till en .trivyignore-fil i din arbetskatalog. Ange en lista med CVE-ID, ett på varje rad. Trivy hittar och använder filen när du kör en skanning. CVE-filer som finns i .trivyignore dyker inte upp i skanningsutgången. Det är en bra idé att lägga till en kommentar till varje CVE du utesluter; Detta säkerställer att andra deltagare informeras om varför risken har accepterats.

# .trivyignore # Det här problemet är inte relevant för vår användning CVE-2021-1234

Filtreringssårbarheter

Du kan filtrera för att visa sårbarheter av en viss typ med – vuln-typ flagga. Detta accepterar antingen bibliotek eller os som ett värde.

Att använda biblioteket kommer att avslöja problem som uppstår till följd av beroende av programmeringsspråk. OS-alternativet omfattar genomsökningen till operativsystempaket.

Annons

Du kan också filtrera efter svårighetsgraden. Detta hjälper dig att fokusera på de frågor som spelar roll genom att dölja relativt obetydliga sårbarheter. Skicka in en kommaseparerad lista över CVSS-allvarlighetsnivåer för att inkludera:

trivy image –ververity MEDIUM, HIGH, CRITICAL my-image: latest

Nu någon & # 8220; låg & # 8221; allvarlighetsproblem kommer att utelämnas från rapporten.

Skräddarsy rapportutdata

Trivy är som standard en visuell tabell avsedd för konsumtion i en terminal. Du kan få JSON i maskin som kan analyseras i stället genom att lägga till –format json.

Det finns också stöd för anpassade utskriftsstilar med hjälp av mallar. Flera mallar ingår, till exempel xml och html:

trivy image –format template @ contrib/html.tpl -o scan.html my-image: senaste

Denna genomsökning ger en HTML-rapport som sparas i scan.html. Grafiska rapporter kan vara snabbare att läsa och lättare att dela, särskilt när många problem hittas.

Använda Trivy In CI

Du kan enkelt integrera Trivy i dina CI-skript. Observera att utgångskoden alltid är 0 som standard, även om det finns svagheter. Lägg till flaggan –exit-code 1 för att få Trivy att gå ut med en kod som inte är noll om det finns problem.

Annons

Du har flera alternativ för att få Trivy in i dina byggnader. Officiella integrationsmönster är tillgängliga för populära CI-leverantörer inklusive GitHub, GitLab, Travis och CircleCI.

När du bygger bilder i din pipeline kan du antingen köra Trivy på den slutliga build-utgången eller använda verktyget i behållaren. Docker: s flerstegsbyggnader låter dig referera till Trivy-bilden och avbryta byggnaden om en skanning misslyckas. Se till att du använder filsystemsläget istället för bilden när du skannar den löpande behållaren inifrån.

KOPIERA –från = aquasec/trivy: senaste/usr/local/bin/trivy/usr/local/bin/trivy KÖR trivy filsystem – exit-code 1 –no-progress/

Det är vanligtvis bäst att köra Trivy i slutet av din Dockerfile, efter alla dina programberoende är installerade. Kör rm/usr/local/bin/trivy efteråt för att minska storleken på din slutliga bild.

Server Mode

Trivy kan köras i klientserver läge. Detta flyttar sårbarhetsdatabasen till servern, så klienter behöver inte behålla sina egna versioner.

Trivy-binärer kommer med inbyggt serverläge. Kör trivy server för att starta en serverinstans på din maskin. Standardporten är 4594; du kan ändra detta genom att lägga till –listen localhost: 8080 och ange den valda porten.

Servern hämtar sårbarhetsdatabasen när den startar. Det kommer att leta efter uppdateringar i bakgrunden och dra nya versioner automatiskt.

Annons

Du ansluter en Trivy-klient till din server med trivy client:

trivy client –remote http : //localhost: 8080 bild min-bild: senaste

Om du behöver autentisering, lägg till en –token-flagga till servern och klientkommandona. Servern accepterar bara nya klienter om de presenterar rätt token.

Sammanfattning

Med Trivy för att skanna dina Docker-behållare kan du hitta sårbarheter innan de blir ett problem i produktion. Du kan vara mer säker på dina behållare genom att regelbundet söka efter föråldrade OS-paket och programmeringsspråkberoende.

Trivy förvärvar sina sårbarhetslistor från flera olika källor. Vissa av dessa källor anger endast icke-kommersiell användning, så du bör kontrollera att ditt projekt är kompatibelt innan du lägger till Trivy i dina byggnader.