GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak najít chyby zabezpečení v kontejnerech a souborech pomocí Grype

Grype je open-source skener zranitelnosti, který najde slabá místa v obrazech kontejnerů a adresářích souborového systému. Grype je vyvinut společností Anchore, ale funguje jako samostatný binární soubor, se kterým se snáze manipuluje než s Anchore Engine.

Známé zranitelnosti se do vašeho softwaru dostávají prostřednictvím zastaralých balíčků operačního systému, ohrožených závislostí programovacích jazyků a nezabezpečených základních obrazů. Aktivní skenování vašich artefaktů vás informuje o problémech dříve, než je najdou zlomyslní aktéři. Zde je návod, jak pomocí Grype najít problémy ve vašem kódu a kontejnerech.

Instalace Grype

Grype je distribuován jako předkompilovaný binární soubor v deb , rpm , zdroj Linux a formáty Mac. Nejnovější verzi si můžete stáhnout z GitHubu a nainstalovat ji pomocí správce balíčků vašeho systému nebo zkopírováním binárního souboru do umístění ve vaší cestě. Případně použijte instalační skript k automatizaci procesu:

curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

Spuštěním grype zkontrolujte, zda váš binární soubor funguje příkaz. Zobrazí se dokumentace k dostupným příkazům.

Základní skenování

Ve své nejjednodušší podobě používá Grype jediný argument, který určuje obraz kontejneru nebo cestu k souborovému systému, který se má skenovat. Chcete-li naskenovat obrázek, zadejte platnou značku registru. Grype použije dostupné přihlašovací údaje Dockeru k získání obrázků z Docker Hub a soukromých registrů.

grype alpine:latest

Můžete také skenovat archiv obrázků, který byl exportován z Docker:

grype saved-image.tar

Grype si při prvním spuštění stáhne svou databázi zranitelnosti. V současné době to váží asi 90 MB. Jakmile bude databáze dostupná, Grype stáhne obraz Dockeru, zkatalogizuje software v něm a analyzuje známé zranitelnosti přítomné v databázi.

Výsledky se zobrazí v tabulce ve vašem terminálu. Každá chyba zabezpečení zahrnuje její CVE ID, název postiženého balíčku a úroveň jeho závažnosti. Když bude problém opraven v pozdější verzi, uvidíte číslo verze této aktualizace v FIXED-IN sloupec. To vám pomůže zjistit, zda lze zranitelnost snadno vyřešit pomocí jednoduché aktualizace správce balíčků.

Grype umí pracovat s balíčky pro všechny nejoblíbenější distribuce Linuxu. Podporuje také Ruby Gems, balíčky NPM a Yarn, závislosti Python Eggs, Wheels a Poetry a moduly Java ve formátech JAR, WAR, EAR, JPI a HPI.

Prohledávání souborových systémů

Grype může skenovat cesty souborového systému na vašem počítači. To vám umožní objevit zranitelná místa v úložištích zdrojového kódu ještě předtím, než vytvoříte obrázek. Chcete-li použít tuto funkci, zadejte cestu k adresáři pomocí dir: schéma:

grype dir:/example-dir

Grype vyhledá kompatibilní soubory vnořené pod daným kořenovým adresářem. Každý nalezený soubor bude indexován a zkontrolován na zranitelnosti.

Skenování souborového systému odhaluje stejné typy zranitelnosti jako skenování obrázků kontejnerů. Pokud pracujete s velkým adresářovým stromem, může dokončení skenování trvat několik minut.

Filtrování chyb zabezpečení

Jsou podporovány dva příznaky filtrování, aby se přehled rozšířil pouze na zranitelnosti nebo možnosti řešení, které vás zajímají:

  • --only-fixed – Zobrazovat pouze zranitelnosti, které byly opraveny v pozdější verzi postiženého balíčku.
  • --fail-on high – Při high okamžitě ukončete s chybovým kódem -nalezena zranitelnost na úrovni. Místo high můžete nahradit jakoukoli podporovanou úroveň chyb (kritická, vysoká, střední nebo nízká). .

Ignorování chyb zabezpečení

Chyby zabezpečení lze ignorovat a skrýt tak falešně pozitivní výsledky nebo problémy, které jste se rozhodli neřešit, možná proto, že nejsou relevantní pro vaše použití balíčku.

Chcete-li chybu zabezpečení ignorovat, musíte vytvořit vlastní konfigurační soubor Grype ve formátu YAML. Přidejte CVE chyby zabezpečení pod ignore nejvyšší úrovně pole:

ignore:
  - vulnerability: CVE-2021-12345

Podporována jsou i další pole, jako je tato varianta, která ignoruje všechny problémy vyplývající z balíčků NPM:

ignore:
  - package:
      type: npm

Uložte konfigurační soubor do .grype.yaml nebo .grype/config.yaml ve vašem pracovním adresáři. Použije se automaticky při příštím spuštění kontroly Grype. Globální konfigurační soubor ~/.grype.yaml je také podporováno. Soubor ve vašem pracovním adresáři bude za běhu sloučen s globálním.

Chyby zabezpečení neovlivní výstupní kód Grype, pokud jsou ignorovány. Přehled JSON je přesune do samostatného ignoredMatches pole, zatímco sestavy tabulky terminálu je zcela vylučují. Pokud zranitelnost ignorujete, nezapomeňte zdokumentovat, proč byla přijata, aby každý přispěvatel pochopil riziko.

Používání SBOM

Grype může pracovat s SBOM generovanými Syft, dalším z projektů Anchore. Syft indexuje vaše obrázky kontejnerů a vytváří seznam závislostí, které obsahují.

Pomocí Syft vytvořte SBOM pro váš obrázek ve formátu JSON:

syft alpine:latest -o json > alpine-sbom.json

Poté spusťte skenování Grype pomocí SBOM:

grype sbom:/alpine-sbom.json

Grype zkontroluje odkazovaný obrázek, zda neobsahuje nové zranitelnosti vyplývající z jeho kusovníku. Pokračujte v používání Grype se svým SBOM k monitorování nových problémů se závislostmi obrázků, které jste již auditovali a indexovali.

Přizpůsobení výstupu Grype

Grype poskytuje čtyři různé výstupní formátovače, mezi kterými můžete přepínat pomocí -o Příznak CLI:

  • table – Výchozí člověkem čitelná tabulka pro spotřebu v terminálu.
  • json – Zpráva ve formátu JSON obsahující mnohem komplexnější informace o každé zranitelnosti a také podrobnosti o databázi Grype používané pro skenování. Soubory JSON jsou vhodné pro dlouhodobou archivaci a porovnávání nebo je lze použít jako artefakty sestavení CI.
  • cyclonedx – Report kompatibilní s CycloneDX ve formátu XML, který je připraven k použití v dalších nástrojích podporujících SBOM a seznamy zranitelností.
  • template – Tento pokročilý formátovač vám umožňuje vytvářet vlastní sestavy v libovolných formátech.

template formatter přijímá šablonu Go, která bude použita k vykreslení výstupu sestavy. Chcete-li použít tento formátovač, nezadávejte jej jménem – místo toho předejte cestu k souboru obsahujícímu vaši šablonu Go:

grype alpine:latest -o output-template.tmpl

Šablona by měla používat syntaxi šablony Go k odkazování na proměnné, které poskytuje Grype. Můžete vytvořit jakýkoli druh formátu souboru, který potřebujete, například stránku HTML, soubor Markdown nebo vlastní strukturu JSON. Dokumenty Grype obsahují příklad vytvoření souboru CSV z dostupných proměnných.

Databáze zranitelností

Databáze zranitelností uchovává podrobnosti o všech zranitelnostech, které Grype zná. Po stažení bude verze uložená v mezipaměti znovu použita, dokud nebude k dispozici aktualizace. Ruční interakce s databází obvykle nejsou nutné.

V některých situacích může být nutné vynutit stažení databáze. Může to být způsobeno tím, že před spuštěním skenování nastavujete server se vzduchovou mezerou. Použijte grype db check a grype db update příkazy pro kontrolu a stažení novější verze databáze.

Jakmile bude databáze k dispozici, kontroly budou fungovat, i když je váš systém offline. Automatickou kontrolu aktualizací databáze Grype můžete zakázat nastavením GRYPE_DB_AUTO_UPDATE proměnná prostředí na false ve vaší skořápce.

Přehled

Grype vás upozorní na zranitelnosti uvnitř vašich kontejnerů a na vašem souborovém systému. Jako samostatný binární soubor CLI je snazší začít s ním než s úplnou instalací Anchore.

Pokud přemýšlíte, který byste si měli vybrat, hodnota Anchore spočívá v jeho rozšiřitelnosti a pokročilých možnostech konfigurace. S Anchore Engine můžete definovat své vlastní sady zásad na základě bran, spouštěčů a akcí. Ty vám umožní přesně přizpůsobit skeny vašemu konkrétnímu prostředí. Grype poskytuje efektivnější prostředí, když chcete pouze seznam známých zranitelností ve svém obrázku.

Bez ohledu na to, co si vyberete, použití určité formy aktivního skenování zranitelnosti vás bude informovat o slabinách vašeho dodavatelského řetězce softwaru. Pro plně integrovaný přístup použijte Grype jako součást vašeho kanálu CI, abyste byli upozorněni na nové zranitelnosti, jakmile je kód potvrzen.


Docker
  1. Jak najít velké soubory linux pomocí příkazů find a du

  2. Jak najít soubory s určitou podcestou?

  3. Jak hledat soubory podle velikosti a přípony?

  1. Jak najít soubory pomocí příkazu fd v Linuxu

  2. Jak najít všechny soubory končící na .rb s Linuxem?

  3. Najít soubory a rozbalit je (s mezerami)

  1. Jak najít konfigurační soubory MySQL, PHP a Apache

  2. Jak zjistit počet souborů v adresáři a podadresářích

  3. Odstranění souborů pomocí rm pomocí find a xargs