Dolt beroende
Ett dolt beroende är kod, ett paket eller en fil som ett bygge laddar ner och använder men som ingen lockfile eller manifest listar, så de flesta SBOM:er missar det.
Senast uppdaterad: 11 november 2026
Ett dolt beroende (hidden dependency) är kod, ett paket eller en fil som ett bygge laddar ner och använder men som ingen lockfile eller manifest listar. Eftersom de flesta SBOM-verktyg utgår från de listorna saknas dolda beroenden i de flesta SBOM:er, och det var precis där flera nya leveranskedjeattacker tog sig in. Inom allmän programvaruutveckling betyder uttrycket också odeklarerad koppling mellan moduler; här avses leveranskedjebetydelsen.
Vanliga dolda beroenden
- Installationshookar. npm kör ett pakets skript
preinstall,installochpostinstallundernpm install(npm-dokumentationen). Det som skripten laddar ner syns aldrig ipackage-lock.json. Det var den vägen masken Shai-Hulud tog. - Byggskript. Cargo kompilerar och kör en crates
build.rsprecis innan cratet byggs (Cargo Book). Vissa byggskript laddar då ner ett C-bibliotek eller en förbyggd binär, ochCargo.lockregistrerar det inte. - Basavbildningar. I ett containerbygge kommer basavbildningen och dess operativsystemlager från ett register, inte från någon språks lockfile. Se SBOM:er för Docker-avbildningar.
- CI-steg. Setup-actions och
curl | sh-installerare i ett arbetsflöde hämtar verktyg direkt från en URL, utan lockfile, versionslåsning eller hash om inte författaren lägger till det.
Kod som checkats in i repot (vendorade beroenden) är ett annat sätt för komponenter att hamna utanför manifesten, men den hämtas inte under bygget. "Phantom dependency" betyder något annat igen: i JavaScript ett paket som din kod använder utan att deklarera det, tillgängligt bara genom hoisting.
Varför SBOM-verktyg missar dem
Lockfile-baserade verktyg läser den deklarerade listan i lockfilen och ser därför bara det som är deklarerat. Skannrar som granskar resultatet tittar på den färdiga artefakten och räknar ut vad som ingick, vilket blir gissningar för kompilerad kod som Rust. Ingen av dem ser vad bygget hämtade på vägen. Hela listan över vad varje angreppssätt missar, inklusive cachar och byggverktyg, finns i SBOM-generatorer med öppen källkod. Ett dolt beroende är en lucka i SBOM-fullständigheten som SBOM:en själv inte kan avslöja.
Versionslåsning löser det inte heller: en lockfile kan vara perfekt och den installationshook den låser kan ändå ladda ner något nytt. Byggen som hämtar saker under byggtiden är också ett skäl till att ett reproducerbart bygge är svårt att uppnå.
Hur du hittar dem
- Läs byggets logg efter nedladdningar: utdata från
npm installochcargo build, och rader fråncurlellerwget. - Jämför en SBOM som genererats från lockfilen med de paket som installationssteget rapporterar.
- Sök i din SBOM efter ett paket som du vet finns i din basavbildning, till exempel
libc6. Om det inte finns där saknas avbildningens lager. - Sök efter
curlochwgeti dina arbetsflöden.
Det pålitliga svaret är att registrera vad bygget faktiskt tar in över nätverket, i stället för att rekonstruera det i efterhand.
CRACI
CRACI ser trafiken som kommer in i varje bygge och registrerar därför de dolda beroenden som lockfile-baserade verktyg missar. När det inte kunde se allt, till exempel för att ett jobb tillät trafik som går förbi dess paketmedvetna proxy, säger jobbets fullständighetsstatus det. Dess egress-policy avgör dessutom vilka värdar ett bygge över huvud taget kan nå, så ett curl | sh till en värd som policyn inte tillåter misslyckas. Se SBOM:er från bygget.