Beroenden
SAST vs SCA
SAST hittar brister i koden som ditt team skriver. SCA hittar kända risker i koden som ditt team är beroende av. De tittar på olika kod och fångar olika problem, så ingen av dem ersätter den andra.
Uppdaterad
Skillnaden i korthet
| SAST | SCA | |
|---|---|---|
| Står för | Static application security testing | Software composition analysis |
| Tittar på | Din egen källkod | Open source- och tredjepartskomponenter |
| Hittar | Injektion, osäker hantering av indata, osäkra mönster | Kända sårbarheter, licensproblem, föråldrade paket |
| Bygger på | Regler eller modeller för hur dålig kod ser ut | Databaser med publicerade säkerhetsmeddelanden |
| Ett fynd uppstår när | Din kod ändras | Ett beroende ändras eller ett nytt säkerhetsmeddelande publiceras |
| Vanligt brus | Falska positiva på kod som faktiskt är säker | Korrekta matchningar som inte påverkar hur du använder paketet |
| Åtgärd | Ändra din kod | Uppgradera eller byt ut komponenten |
Vad SAST gör
Ett SAST-verktyg läser källkod utan att köra den och följer hur data rör sig genom den. Om användarindata når en databasfråga utan att ha sanerats rapporterar verktyget fil och rad. Eftersom det arbetar med din kod kan det hitta brister som ingen någonsin har publicerat. Det är också källan till klagomålen om falska positiva, eftersom det resonerar om vad koden skulle kunna göra snarare än vad den gör.
Vad SCA gör
En SCA-skanning identifierar komponenterna i ett projekt och slår upp dem i sårbarhets- och licensdata. Den analyserar inte din logik. Den vet att en version har en publicerad brist, så resultaten är oftast sakliga, men den säger mindre om bristen spelar någon roll för dig, om inte verktyget lägger till reachability-analys. Se vad är software composition analysis för helhetsbilden.
Varför du behöver båda
De två felen är oberoende av varandra. En kodbas utan SAST-fynd kan ändå leverera ett sårbart beroende, och ett rent beroendeträd säger ingenting om en SQL-injektion i din egen hanterare.
Tidpunkten skiljer sig också. Ett SAST-fynd uppstår när någon ändrar kod, så en kontroll i pull requesten fångar de flesta av dem. Ett SCA-fynd kan dyka upp för en release du levererade för flera månader sedan, samma dag som ett nytt säkerhetsmeddelande publiceras, utan någon commit som utlöser något. SCA behöver därför något som fortsätter att kontrollera det som levererats.
Var DAST passar in
Dynamic application security testing angriper en körande applikation utifrån, på samma sätt som en riktig angripare skulle göra. Det hittar sådant som bara syns under körning, som problem med autentisering och konfiguration, utan att läsa koden.
| SAST | SCA | DAST | |
|---|---|---|---|
| Behöver | Källkod | Manifest, avbilder eller en byggregistrering | En körande applikation |
| Körs | På pull requests | På pull requests, i byggen och efter release | Mot en testmiljö |
| Bäst på | Brister i din kod | Kända risker i beroenden | Brister i körning och konfiguration |
Vilken bör du köra först?
För de flesta team SCA. Det går snabbt att sätta upp, körs på sekunder till minuter och täcker den största delen av det du levererar, eftersom det mesta av en modern applikation är beroenden. Lägg sedan till SAST på pull requests och justera in det efter de regler som är viktiga för din stack. Lägg till DAST när du har en stabil testmiljö att peka det mot.
Bör du köpa en plattform eller flera verktyg?
Plattformar som Snyk, Checkmarx och GitHub Advanced Security paketerar SAST och SCA, vilket ger ett enda avtal och ett enda arbetsflöde. Separata verktyg kan vara starkare inom sitt område. Viktigare är indata: båda typerna av skannrar utgår från det som är deklarerat eller skrivet, och ingen av dem ser vad bygget faktiskt drog in.
Det som ingen av dem täcker
SAST och SCA läser båda filer. Ingen av dem observerar bygget, så kod som hämtas av en installationshook, paket som återställs från CI-cachar och själva byggverktygen kan förbli osynliga. Den luckan är vad säkerhet i mjukvarans leveranskedja handlar om.
CRACI täcker den delen och lämnar kodskanning åt verktygen som är byggda för det. CRACI gör medvetet inte SAST eller skanning efter hemligheter, och det finns gott om utmärkta SAST-verktyg som fungerar tillsammans med CRACI. CRACI är en GitHub Actions-runner som registrerar vad varje jobb hämtar i en SBOM och fortsätter att kontrollera SBOM:erna för det som levererats mot nya sårbarheter. Se de bästa SCA-verktygen och var CRACI passar in bredvid dem.
SAST vs SCA: vanliga frågor
Vad är skillnaden mellan SAST och SCA?
SAST analyserar koden som ditt team skriver och letar efter brister som injektion. SCA analyserar open source- och tredjepartskomponenterna du är beroende av och letar efter kända sårbarheter och licensproblem.
Ersätter SCA SAST?
Nej. De tittar på olika kod. SCA hittar inte en brist i din egen logik, och SAST säger inte att ett beroende har en publicerad sårbarhet.
Vad är skillnaden mellan SAST, DAST och SCA?
SAST läser din källkod. SCA kontrollerar dina beroenden. DAST testar en körande applikation utifrån. Var och en hittar problem som de andra två missar.
Är Snyk SAST eller SCA?
Båda. Snyk började med skanning av open source-beroenden och erbjuder även SAST, tillsammans med skanning av containrar och infrastruktur som kod.
Är SonarQube SAST eller SCA?
SonarQube är mest känt för statisk analys av din egen kod, vilket är SAST. Kontrollera vad de aktuella utgåvorna mer innehåller.
Vad kommer först, SAST eller SCA?
SCA är oftast den snabbare vinsten eftersom det är enkelt att sätta upp och täcker den största delen av det du levererar. SAST kräver mer justering för att hålla nere de falska positiva.
Täck det dina skannrar inte kan se
Behåll dina SAST- och SCA-verktyg och lägg till en registrering av vad varje GitHub Actions-bygge faktiskt drog in.
Boka en demo