Vuonna 2026 raportoitiin päivässä 131% enemmän CVE:itä kuin edellisenä vuonna.

Vertailu

CRACI vs. Syft ja Grype

Syft ja Grype ovat Anchoren ilmaisia työkaluja SBOM:ien generointiin ja niissä olevien haavoittuvuuksien etsimiseen. Ne ovat vain niin kattavia kuin se, mitä Syft löytää levyltä. CRACI tallentaa komponenttiluettelon buildin ajon aikana.

Päivitetty

Lyhyt vastaus

Syft on suosittu avoimen lähdekoodin SBOM-generaattori, ja Grype on sen rinnalle tehty haavoittuvuusskanneri. Yhdessä ne kattavat generoinnin ja täsmäytyksen ilmaiseksi, missä tahansa putkessa. CRACI on GitHub Actions -runneri, joka tallentaa, mitä kukin buildi haki, kertoo, onko tallenne kattava, hallitsee, mihin buildi voi muodostaa yhteyden, ja valvoo jatkuvasti sitä, mitä toimitettiin. Ero yhdellä rivillä: Syft rakentaa SBOM:n jälkikäteen tiedostoista, ja se, kuinka paljon se löytää, riippuu sen konfiguraatiosta ja siitä, mitä levyllä on sen ajohetkellä. CRACI havainnoi sen ja seuraa tallentamansa sisällön haavoittuvuuksia, joten yksi tuote hoitaa molempien työn.

Ominaisuus CRACI Syft ja Grype
Ajaa buildisi Jobit ajetaan CRACI:n runnereilla CLI-vaiheita missä tahansa putkessa
Riippuvuudet tallennetaan buildista Havainnoidut haut, myös välimuistin paketit Catalogerit lukevat tiedostot jälkikäteen
SBOM:n kattavuus Ilmoitetaan jobeittain ja välimuisteittain Riippuu siitä, mitkä catalogerit ajettiin ja mitä levyllä oli
Egress-käytäntö runnerilla Oletuksena estävä tai salliva, estää virhetilanteessa Niiden toiminta-alueen ulkopuolella
Allekirjoitettu näyttö Ei allekirjoitettuja alkuperätietoja Syft luo allekirjoitettuja in-toto-SBOM-attestaatioita
Haavoittuvuuksien täsmäytys Koottuna buildien ja repositorioiden yli Grype, EPSS, KEV ja riskipisteytys
Toimitettujen SBOM:ien valvonta Valvotut SBOM:t arvioidaan jatkuvasti uudelleen Skannaa SBOM:t uudelleen Grypellä omassa aikataulussasi
CI:n kaataminen vakavuusrajan ylittyessä Käytäntöportit estävät buildit löydösten perusteella; raja-arvoja ei mainita grype --fail-on
Muiden kuin itse buildattujen kuvien ja hakemistojen skannaus Tallentaa ajamansa buildit Kuvat, hakemistot, arkistot ja SBOM:t
Muut kuin GitHub Actions Toistaiseksi GitHub Actions; GitLab CI ja Jenkins tiekartalla Mikä tahansa CI tai paikallinen CLI
Hinta $0.002 vCPU-minuutilta ($0.004 2 vCPU:lla), laskutetaan sekunneittain; ei kuukausimaksua eikä SBOM-kohtaista veloitusta Ilmainen ja avointa lähdekoodia Apache-2.0-lisenssillä. Anchore Enterprise on erillinen maksullinen tuote.
  • Sisältyy
  • Osittain
  • Ei sisälly
  • Tiekartalla

Missä Syft ja Grype ovat hyviä

Syft and Grype: verkkosivusto
anchore.com

Syft on "a CLI tool and Go library for generating a Software Bill of Materials (SBOM) from container images and filesystems." Se tunnistaa kymmeniä paketointijärjestelmiä Alpinesta, Debianista ja RPM:stä Go:hon, Pythoniin, Javaan, JavaScriptiin, Rubyyn, Rustiin, PHP:hen ja .NETiin. Se kirjoittaa CycloneDX-, SPDX- ja omaa Syft JSON -muotoaan, muuntaa muotojen välillä ja voi luoda allekirjoitettuja SBOM-attestaatioita in-toto-määrittelyn mukaisesti.

Grype skannaa konttikuvia, tiedostojärjestelmiä ja SBOM:ia tunnettujen haavoittuvuuksien varalta. Se priorisoi löydökset EPSS:n, KEV:n ja riskipisteytyksen avulla, tukee OpenVEXiä tulosten suodattamiseen, ja sen --fail-on-lippu kaataa putken, kun se löytää valitsemasi vakavuustason tai sitä vakavampia haavoittuvuuksia. Anchore huomauttaa, että Grype "runs entirely locally and doesn't send any data to external services," tietokantansa lataamista lukuun ottamatta.

Molemmat ovat Apache-2.0-lisensoituja, ja niitä sponsoroi Anchore, jonka kaupallinen alusta Anchore Enterprise "builds on open source Syft and Grype." Tämä sivu käsittelee avoimen lähdekoodin työkaluja.

Syft on vahva, kun sen edessä ovat oikeat tiedostot. Kun se osoitetaan lähdepuuhun, johon riippuvuudet on commitoitu, kuten ollama/ollama, sen oletusskannaus ratkaisee ne versioineen, pakettien URL-osoitteineen ja niiden välisine riippuvuussuhteineen.

Yksi lippu muuttaa vastauksen

Syft valitsee catalogerinsa skannaustyypin mukaan, ja sen dokumentaatio selittää miksi: "files that hint at the intent to install software do not have enough information in them to determine the exact version." Catalogereilla on tageja, kuten declared, installed, image ja directory, ja liput, kuten --select-catalogers ja --override-default-catalogers, muuttavat joukkoa.

Versiossa v1.51.1 syft cataloger list näyttää, että node_modules-hakemistoa lukeva JavaScript-cataloger on merkitty kuva- ja installed-skannauksille eikä kuulu hakemistoskannauksen oletusjoukkoon. Asennetussa checkoutissa yksi lippu siis ratkaisee, luetaanko node_modules-hakemiston npm-paketteja lainkaan. Sama työkalu, sama versio, sama puu.

Kääntöpuoli on yhtä tärkeä. Mikään yksittäinen konfiguraatio ei ole oikea kaikkialla:

  • Puhtaassa express 5.2.1 -checkoutissa, jossa ei ole lukitustiedostoa, oletusskannauksella ei ole npm-riippuvuuksia ratkaistavana, ja se palauttaa sen, mitä muuta se tunnistaa, kuten GitHub Actionsin ja työnkulkutiedostot.
  • Kytke installed-catalogerit päälle ja osoita ne lähdepuihin sellaisina kuin ne on commitoitu, kun mitään ei ole vielä asennettu, eikä niillä ole juuri mitään luettavaa.
  • Repositorio, jossa ei ole lainkaan riippuvuusmanifestia, ei anna skannaukselle yhtään riippuvuustiedostoa luettavaksi, konfiguraatiosta riippumatta.

Mikään tästä ei ole bugi. Syft raportoi sen, mitä sen edessä olevat tiedostot tukevat, kuten on suunniteltu. Käytännön seuraus on, että SBOM riippuu kahdesta päätöksestä, jotka jonkun on tehtävä oikein jokaisessa putkessa: mitkä catalogerit ajetaan ja asennettiinko riippuvuudet ennen skannausta. Ja Grype voi täsmäyttää vain sen, mitä Syft listasi. SBOM:sta puuttuva komponentti ei koskaan päädy haavoittuvuushakuun, joten skannaus näyttää sen osalta puhdasta.

Missä CRACI on erilainen

CRACI:ssa ei ole catalogereita valittavana, koska se ei lue puuta jälkikäteen. Vaihdat runs-on-arvoksi craci, ja pakettitietoinen välityspalvelin tallentaa, mitä jobi hakee npm-, PyPI-, RubyGems-, Composer-, Cargo-, Go-, Nix-, OCI-, apt-, apk- ja Git-lähteistä sekä latausesiasetuksilla. CI-välimuistista palautetut paketit kantavat näyttönsä mukanaan. Tulos CycloneDX- tai SPDX-muodossa sisältää transitiiviset riippuvuudet, joita buildi todella käytti.

  • Kattavuus on näkyvissä. Jokainen jobi ja välimuisti merkitään tilaan Complete, Complete with connections, Incomplete, Unavailable tai Not recorded.
  • Buildi on hallinnassa. Egress-käytäntö (oletuksena estävä tai salliva, 24 valmista ohjelmistolähteiden esiasetusta) validoidaan ennen jobin alkua, ja virhetilanteessa liikenne estetään.
  • Alkuperätiedot. API palauttaa SBOM:t, verkkojäljet ja alkuperätiedot. CRACI ei allekirjoita alkuperätietoja; Syftin attestaatio allekirjoittaa SBOM:n.
  • Valvonta. Valvotut SBOM:t arvioidaan jatkuvasti uudelleen, ja löydökset kootaan buildien ja repositorioiden yli.

Grype tekee yhä asioita, joita CRACI ei tee. VEX-suodatus ja muiden kuin itse buildattujen kuvien skannaus ovat Grypen aluetta. CRACI:n käytäntöportit voivat kaataa buildin; sen raja-arvohälytykset ovat tiekartalla.

Inventaario siitä, mitä on käytössä missäkin

CRACI:n inventaarionäkymä näyttää tarkalleen, mitkä ohjelmistoversiot ovat käytössä missäkin tuotteessa, maailmanlaajuisesti. Kun uusi haavoittuvuus ilmenee, näet, mitkä tuotteet ajavat haavoittuvaa versiota, sen sijaan että kokoaisit tiedon julkaisutiedotteista ja taulukoista.

Siirtyminen Syftistä ja Grypestä

CRACI:lla ei ole SBOM:ia generoitavana eikä skannausvaihetta ylläpidettävänä. Runneri tallentaa SBOM:n buildin ajon aikana, ja CRACI tarkistaa sitä uusien haavoittuvuuksien varalta myös buildin valmistuttua. Syft ja Grype ovat edelleen työkaluja kuville ja kolmansien osapuolten ohjelmistoille, joita et ole itse buildannut, sekä GitHub Actionsin ulkopuolisille putkille.

Kyberkestävyyssäädöstä varten

EU:n kyberkestävyyssäädös (Cyber Resilience Act, CRA) edellyttää, että valmistajat dokumentoivat kunkin tuotteen komponentit, SBOM mukaan lukien, ja käsittelevät niiden haavoittuvuudet. Syft ja Grype voivat tuottaa ja tarkistaa tuon SBOM:n, ja näyttöketju kustakin julkaisusta sen SBOM:iin jää sinun rakennettavaksesi. CRACI tallentaa SBOM:n buildeittain ja vie sen CycloneDX- tai SPDX-muodossa. Se automatisoi merkittävän osan siitä ohjelmistotoimitusketjun näkyvyydestä ja näytöstä, jota yritykset tarvitsevat laajempaan CRA-vaatimustenmukaisuusprosessiinsa. Lue mikä CRA on ja SBOM-generointi buildin aikana.

Vertaa tallennettua SBOM:ia Syftin tulokseen

Varaa demo, niin ajamme yhden GitHub Actions -työnkulkusi CRACI:lla ja vertaamme sen SBOM:ia siihen, mitä Syft löytää samasta commitista.

Varaa demo