Cyber Security Academy · Oppitunti

Ohjelmiston materiaaliluettelo (SBOM)

Ohjelmiston sisältämien komponenttien luettelointi

Oppitunti 2/413 vaihetta

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.1

SBOM: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.json

Lä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 high

VEX: 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.0

SBOM: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.

Aloita maksutta

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

  1. Toimitusketjun uhat
  2. Ohjelmiston materiaaliluettelo (SBOM)
  3. Riippuvuuksien ja artefaktien allekirjoittaminen
  4. CI/CD-putkien suojaaminen
← Takaisin: Cyber Security Academy