Ohjelmiston materiaaliluettelo (SBOM)
Ohjelmiston sisältämien komponenttien luettelointi
Ohjelmiston materiaaliluettelo (SBOM) on ilmainen Cyber Security Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Cyber Security Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mikä SBOM on
Software Bill of Materials (SBOM) on muodollinen, koneellisesti luettava luettelo kaikista ohjelmiston sisältämistä komponenteista: kirjastoista, niiden versioista, lisensseistä ja toimittajatiedoista.
Aivan kuten elintarvikkeen pakkausmerkinnät luettelevat ainesosat, SBOM:n avulla voitte vastata sekunneissa kysymykseen: sisältääkö tämä tuote X:n haavoittuvan version? Ilman SBOM:ää vastaus voi vaatia päiviä manuaalista kaivelua.
Miksi SBOM:t ovat nyt tärkeitä
Kun kriittinen haavoittuvuus tulee julki, ensimmäinen käytännön kysymys koskee altistumista: mitkä tuotteistamme sisältävät kyseisen komponentin?
Log4Shell-tapauksen aikana SBOM:t omistaneet organisaatiot hakivat luetteloistaan tarvittavat tiedot ja selvittivät tilanteen muutamassa tunnissa. Muut käyttivät viikkoja build-hakemistojen läpikäyntiin grepillä. Sääntelyviranomaiset ja suuret ostajat edellyttävät SBOM:ää yhä useammin hankinnan ehtona.
- Haavoittuvuuden vaikutusten nopea analysointi
- Lisenssien vaatimustenmukaisuus ja velvoitteiden seuranta
- Toimitusketjun läpinäkyvyys asiakkaille ja tarkastajille
SBOM:n standardimuodot
Kaksi avointa standardia hallitsee alaa. Työkalut voivat yleensä muuntaa muodosta toiseen.
- SPDX — Linux Foundationin standardi, erityisen hyvä lisenssitietojen käsittelyssä ja sääntelyviranomaisten laajasti hyväksymä
- CycloneDX — OWASP:n standardi, tietoturvapainotteinen ja tukee haavoittuvuus- sekä riippuvuussuhdetietoja
Älkää keksikö omaa muotoanne; SBOM:ien käyttäjät ja skannerit odottavat näitä standardeja.
Mitä tietueeseen kuuluu
Jokaisessa komponenttitietueessa on oltava riittävät tunnistetiedot, jotta se voidaan yhdistää haavoittuvuustietolähteisiin. Keskeiset kentät:
- nimi ja versio — täsmälliset, ei versioaluetta
- PURL (package URL) — yleiskäyttöinen tunniste, kuten
pkg:npm/lodash@4.17.21 - tiiviste — eheyden varmistamiseen
- lisenssi — SPDX-lisenssitunniste
- toimittaja — kuka sen tuotti
# A PURL uniquely identifies a component across ecosystems
pkg:npm/lodash@4.17.21
pkg:pypi/requests@2.31.0
pkg:golang/github.com/gin-gonic/gin@v1.9.1SBOM:n tuottaminen
Tuottakaa SBOM:t automaattisesti lähdekoodista tai kootusta artefaktista. Syft on yleinen eri ekosysteemien kanssa toimiva tuottaja, joka tuottaa molempien standardien mukaisia SBOM:iä.
# from a project directory (CycloneDX JSON)
syft dir:. -o cyclonedx-json=sbom.cdx.json
# from a container image (SPDX JSON)
syft my-app:1.4.0 -o spdx-json=sbom.spdx.json
# CycloneDX has native generators per ecosystem too
cyclonedx-npm --output-file sbom.jsonLähde-, build- ja ajonaikaiset SBOM:t
Eri vaiheissa tuotettu SBOM kuvaa eri asioita.
- Lähde-SBOM — mitä manifesti ilmoittaa; voi jättää paketoidun tai vendoroidun koodin huomiotta
- Build-SBOM — mitä build todellisuudessa otti mukaan; tarkin julkaisuja varten
- Ajonaikainen / käyttöön otetun ympäristön SBOM — mitä käynnissä olevassa levykuvassa todellisuudessa on, myös käyttöjärjestelmän paketit
Tuottakaa toimitusketjun varmistamista varten SBOM build-vaiheessa todellisesta artefaktista ja skannatkaa lopullinen kontti myös käyttöjärjestelmätason pakettien varalta.
SBOM:n skannaus haavoittuvuuksien löytämiseksi
SBOM:stä tulee tehokas, kun se syötetään täsmäyttimeen, joka yhdistää komponentit tunnettuihin CVE-tunnisteisiin. Näin SBOM:n tuottaminen ja analysointi voidaan erottaa toisistaan: voitte skannata vanhan SBOM:n sinä päivänä, kun uusi CVE tulee julki.
# match an SBOM against vulnerability databases
grype sbom:sbom.cdx.json
# OSV scanner consumes SBOMs directly
osv-scanner --sbom=sbom.spdx.json
# fail CI above a severity threshold
grype sbom:sbom.cdx.json --fail-on highVEX: mikä on hyödynnettävissä
SBOM saattaa osoittaa haavoittuvan komponentin, joka ei todellisuudessa ole hyödynnettävissä tuotteessanne, koska haavoittuvaa funktiota ei koskaan kutsuta. VEX (Vulnerability Exploitability eXchange) -asiakirja tallentaa tämän arvion.
VEX vähentää kohinaa: sen sijaan että jokainen asiakas panikoisi luettelossa olevan CVE:n vuoksi, voitte julkaista perustellun ilmoituksen not_affected-tilasta tai ilmoituksen affected-tilasta korjaustoimineen. Näin raakaluettelo muuttuu toimivaksi selvitykseksi.
SBOM:ien jakelu ja allekirjoittaminen
SBOM:ään voi luottaa vain, jos se on aito ja yhdistetty täsmälliseen artefaktiin, jota se kuvaa. Allekirjoittakaa se ja liittäkää se mukaan attestointina irrallisen tiedoston sijaan.
# attach a signed SBOM attestation to an image with cosign
cosign attest --predicate sbom.cdx.json \
--type cyclonedx \
my-registry/my-app:1.4.0
# verify the attached SBOM attestation
cosign verify-attestation --type cyclonedx my-registry/my-app:1.4.0SBOM:ien automatisointi CI:ssä
Manuaaliset SBOM:t vanhenevat heti. Kytkekää niiden tuottaminen putkeen, jotta jokainen julkaisu tuottaa ja tallentaa SBOM:n build-artefaktina, joka mieluiten allekirjoitetaan ja skannataan samassa työssä.
- Tuottakaa SBOM kootusta artefaktista, ei vain repositoriosta
- Tallentakaa SBOM:t version perusteella haettavaan rekisteriin
- Skannatkaa tallennetut SBOM:t uudelleen aikataulun mukaan uusia CVE-tietolähteitä vasten
- Estäkää julkaisut haavoittuvuusskannauksen tuloksen perusteella
Yleiset SBOM-ongelmat
SBOM:t epäonnistuvat huomaamatta, kun niitä käsitellään vain rastitettavana kohtana.
- Vanhentunut — tuotettu kerran eikä koskaan uudelleen
- Puutteellinen — käyttöjärjestelmän paketit sekä staattisesti linkitetty tai vendor-oitu koodi puuttuvat
- Vahvistamaton — siinä ei ole tiivistettä, joka yhdistäisi sen käyttöön otettuun artefaktiin
- Käyttämätön — tuotettu, mutta ei koskaan skannattu tai haettu
Tavoitteena ei ole kertaluonteinen JSON-tiedosto, vaan täsmällinen, uudelleen tuotettu, allekirjoitettu ja jatkuvasti skannattu SBOM.
Pikatesti: SBOM:n tarkoitus
Soveltakaa oppimaanne poikkeamatilanteeseen.
Kertaus: SBOM
Osaatte nyt luetteloida ohjelmistonne sisällön ja toimia näiden tietojen perusteella.
- SBOM on koneellisesti luettava luettelo kaikista komponenteista joko SPDX- tai CycloneDX-muodossa
- Tunnistakaa komponentit PURL-tunnisteen, version, tiivisteen ja lisenssin avulla
- Tuottakaa SBOM build-vaiheessa ja syöttäkää se sitten täsmäyttimelle (grype, osv-scanner) CVE-tunnisteiden löytämiseksi
- Käyttäkää VEX:ää ilmoittamaan todellinen hyödynnettävyys ja vähentämään vääriä hälytyksiä
- Allekirjoittakaa ja automatisoikaa SBOM:t CI:ssä; skannatkaa tallennetut SBOM:t uudelleen uusia tietolähteitä vasten
Seuraavaksi osoitatte allekirjoittamisen avulla, mistä artefaktit ovat peräisin.
Opi Cyber Security Academy tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 303
Usein kysytyt kysymykset
Onko oppitunti ”Ohjelmiston materiaaliluettelo (SBOM)” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Cyber Security Academy-oppimispolun 3 oppituntia, myös oppitunnin “Ohjelmiston materiaaliluettelo (SBOM)”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Ohjelmiston materiaaliluettelo (SBOM)”?
Ohjelmiston sisältämien komponenttien luettelointi Harjoittelet Cyber Security Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Cyber Security Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Cyber Security Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Ohjelmiston materiaaliluettelo (SBOM)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Cyber Security Academy-oppitunnilla?
Kyllä. Jokainen Cyber Security Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Toimitusketjun uhat
- Ohjelmiston materiaaliluettelo (SBOM)
- Riippuvuuksien ja artefaktien allekirjoittaminen
- CI/CD-putkien suojaaminen