Staattinen sovellusturvallisuuden testaus (SAST) on olennainen osa ohjelmistokehityksen elinkaarta. SAST-työkalut analysoivat lähdekoodin tunnistaakseen tietoturva-aukkoja ja muita ongelmia ennen koodin kääntämistä tai suorittamista. Tämä auttaa kehittäjiä löytämään ja korjaamaan ongelmia varhaisessa kehitysvaiheessa, mikä vähentää kustannuksia ja parantaa yleistä tietoturvaa.
Saatavilla on useita suosittuja SAST-työkaluja, joista jokaisella on omat vahvuutensa ja ominaisuutensa. Tässä artikkelissa vertailemme yleisimmin käytettyjä SAST-työkaluja.
CheckMarx
CheckMarx SAST on lähdekoodin analysointiratkaisu, joka tunnistaa tietoturva-aukkoja, vaatimustenmukaisuusongelmia ja muita puutteita koodissa. Se luo loogisen kaavion koodin elementeistä ja virtauksista ja etsii sitten tästä kaaviosta ongelmia. CheckMarx tukee monia ohjelmointikieliä ja voi suorittaa tarkistuksia missä tahansa kehityksen vaiheessa.
CheckMarxin tärkeimpiä ominaisuuksia ovat:
- Laaja luettelo valmiiksi määritettyjä kyselyitä tunnetuille haavoittuvuuksille
- Mahdollisuus määrittää mukautettuja kyselyitä tietoturvaa, laadunvarmistusta ja liiketoimintalogiikkaa varten
- Interaktiivinen käyttöliittymä ajonaikaisen toiminnan ja korjausten seuraamiseen
- Integraatio automaattisiin build-työkaluihin, SCM-järjestelmiin, ongelmien seurantajärjestelmiin ja CI/CD-alustoihin
Fortify
OpenText Fortify Static Code Analyzer on toinen johtava SAST-työkalu. Se paikantaa tietoturva-aukkojen perimmäiset syyt lähdekoodissa, priorisoi vakavimmat ongelmat ja antaa ohjeita niiden korjaamiseen. Fortify tukee yli 1 600 haavoittuvuuskategoriaa yli 33 ohjelmointikielellä.
Fortifyn keskeisiä ominaisuuksia ovat:
- Tietoturvan sisällyttäminen kehitystyökaluihin laajan integraatioekosysteemin avulla
- Tarkistussyvyyden säätäminen ja väärien positiivisten minimointi Audit Assistantin avulla
- Tarkistusten dynaaminen skaalaaminen CI/CD-putkien vaatimusten täyttämiseksi
- Haavoittuvuuksien tunnistaminen lähde-, binääri- tai tavukoodista varhaisessa kehitysvaiheessa
- Integrointi CI/CD-työkaluihin, kuten Jenkins, Jira, Azure DevOps ja muut
Frogbot
Frogbot on Git-botti, joka etsii tietoturva-aukkoja pull requesteista JFrog Xrayn avulla. Kun uusi pull request luodaan tai merkitään, Frogbot suorittaa tarkistuksen ja raportoi mahdolliset ongelmat suoraan Git-käyttöliittymässä. Näin kehittäjät voivat korjata haavoittuvuudet ennen niiden yhdistämistä koodikantaan.
Frogbotin tärkeimpiä ominaisuuksia ovat:
- Pull requestien tarkistaminen tunnettujen haavoittuvuuksien varalta
- Tulosten raportointi Git-käyttöliittymässä kommentteina
- Mahdollisuus suorittaa tarkistuksia uudelleen lisäämällä tunniste olemassa olevaan pull requestiin
- Integrointi JFrog Xrayhin tarkistusmoottorina
Veracode
Veracode tarjoaa pilvipohjaisen, automatisoidun SAST-ratkaisun. Se tarkistaa käännetyn koodin (binäärit) pelkän lähdekoodin sijasta, mikä tarjoaa syvemmät ja kattavammat tulokset. Veracode tunnistaa mahdolliset ongelmat, kuten haitallisen koodin tai riittämättömän toiminnallisuuden, ja priorisoi löydökset liiketoimintariskin perusteella.
Joitakin Veracoden huomionarvoisia näkökohtia ovat:
- Binäärien tarkistaminen, jotta mukaan saadaan kolmannen osapuolen kirjastoja, jotka voidaan jättää pois vain lähdekoodin tarkistuksissa
- Tulosten priorisointi liiketoimintatavoitteiden ja riskinsietokyvyn perusteella
- Erittäin tarkkojen ja käyttökelpoisten tulosten tarjoaminen, vain vähän vääriä positiivisia
- Nopean tarkistuksen ja tulosten mahdollistaminen ilman erillistä tietoturvahenkilöstöä
Semgrep
Semgrep on avoimen lähdekoodin SAST-työkalu, joka toimii missä tahansa, komentoriviltä CI/CD-putkiin. Se on suunniteltu helposti mukautettavaksi ja käytettäväksi, ja siinä on laajennettava arkkitehtuuri. Semgrepin säännöt ovat käyttäjien nähtävissä ja niiden syntaksi on samanlainen kuin lähdekoodissa, mikä tekee niistä läpinäkyviä ja ymmärrettäviä.
Semgrepin tärkeimpiä ominaisuuksia ovat:
- Tarkistusten suorittaminen sekunneissa, CI-tarkistuksen mediaaniaika on 10 sekuntia
- Joustavuus kirjoittaa mukautettuja sääntöjä monimutkaisten ongelmien ratkaisemiseksi
- Hallittujen sääntöjen kirjaston tarjoaminen mukautetun sääntöjen kirjoittamisen minimoimiseksi
- Yli 30 kehyksen ja tekniikan tukeminen
GitHub CodeQL
CodeQL on avoimen lähdekoodin analyysimoottori, jota GitHub käyttää tietoturvatarkistuksiin ja varianttien analysointiin. Se tukee monia ohjelmointikieliä ja tarjoaa komentorivikäyttöliittymän ja Visual Studio Code -laajennuksen tarkistusten suorittamiseen avoimen lähdekoodin koodikannoissa.
Joitakin CodeQL:n huomionarvoisia näkökohtia ovat:
- Tietoturvatarkistusten ja varianttien analysoinnin automatisointi
- Laajan kielten, kirjastojen ja kehysten tuen
- Yleiskatsauksen tarjoaminen CodeQL:ssä käytetyistä teknisistä termeistä ja käsitteistä
Snyk Code
Snyk Code on kehittäjäystävällinen SAST-työkalu, joka tarkistaa lähdekoodin muutamassa minuutissa ilman buildia. Se tarjoaa reaaliaikaisia tuloksia koodin yhteydessä sekä korjausohjeita, joiden avulla kehittäjät voivat korjata ongelmat nopeasti. Snyk Code on yhteensopiva suosittujen kielten, IDE:iden ja CI/CD-työkalujen kanssa.
Snyk Coden tärkeimpiä ominaisuuksia ovat:
- Koodin tarkistaminen kirjoitettaessa, automaattinen tarkistus IDE:stä
- Toiminnallisten tulosten tarjoaminen kehittäjäystävällisillä korjausohjeilla
- Koneoppimisen hyödyntäminen vankan tietokannan rakentamiseen
- Ongelmien priorisointi käyttöönottotilan ja altistumisen perusteella
Tencent Xcheck
Tencent Xcheck on Tencent Cloudin kehittämä staattinen sovellusturvallisuuden testaus (SAST) -työkalu. Se on suunniteltu auttamaan kehittäjiä tunnistamaan tietoturva-aukkoja ja muita ongelmia lähdekoodissaan.
- Xcheck voi ymmärtää tarkasti eri ohjelmointikielten syntaksiominaisuudet, mikä auttaa ratkaisemaan koodin väärinymmärtämisestä johtuvia väärien positiivisten ongelmia.
- Se voi tunnistaa käyttäjän määrittämät tietoturvatoimenpiteet, mikä vähentää entisestään vääriä positiivisia.
- Xcheck tukee kokonaisten projektien tarkistamista tuetuilla kielillä, joissa on oikea syntaksi.
- Se voi tarkistaa verkkosovellusten taustakoodin nopeasti, mutta syvällekkäin sisäkkäisen rekursiivisen koodin tarkistaminen voi kestää kauemmin.
Vertailu muihin SAST-työkaluihin
- Reddit-viestin mukaan Xcheck voi tarkistaa raakaa lähdekoodia suoraan ilman, että sitä tarvitsee kääntää, ja sen tarkistusnopeus on 100 kertaa nopeampi kuin Checkmarxin.
Käyttöönotto ja tietoturva
- Xcheck otetaan käyttöön paikallisesti, joten testattava lähdekoodi pysyy yrityksen verkossa, mikä välttää lähdekoodin vuotamisen riskin.
- Koko tuotteen elinkaari, mukaan lukien lähdekoodi, ei poistu yrityksen verkosta.
Tencent Xcheck on nopea ja tarkka SAST-työkalu, joka auttaa kehittäjiä löytämään tietoturvaongelmia koodistaan. Sen paikallinen käyttöönottomalli varmistaa lähdekoodin tietoturvan. Vaikka se onkin nopeudeltaan ja tarkkuudeltaan parempi kuin muut SAST-työkalut, se ei välttämättä tue yhtä montaa kieltä tai sillä ei ole yhtä laajaa ekosysteemiä kuin joillakin yrityskeskeisillä SAST-työkaluilla.
Semgrep
- Avoimen lähdekoodin SAST-työkalu, joka toimii missä tahansa, komentoriviltä CI/CD-putkiin
- Suunniteltu helposti mukautettavaksi ja käytettäväksi, ja siinä on laajennettava arkkitehtuuri
- Tukee yli 30 kehyksiä ja tekniikoita
- Tarjoaa hallittujen sääntöjen kirjaston mukautetun sääntöjen kirjoittamisen minimoimiseksi
- Suorittaa tarkistuksia sekunneissa, CI-tarkistuksen mediaaniaika on 10 sekuntia
Bandit
- Avoimen lähdekoodin SAST-työkalu, joka on suunniteltu erityisesti Python-koodin tarkistamiseen
- Kattava lähdehaavoittuvuuksien skanneri Pythonille
Brakeman
- Avoimen lähdekoodin haavoittuvuuksien skanneri, joka on suunniteltu erityisesti Ruby on Rails -sovelluksille
OWASP Dependency-Check
- Avoimen lähdekoodin työkalu, joka tunnistaa tunnettujen haavoittuvien komponenttien käytön
- Tukee Java- ja .NET-projekteja
- Integroituu build-työkaluihin, kuten Gradle, Jenkins ja Maven
PMD
- Avoimen lähdekoodin SAST-työkalu, joka tukee Javaa, JavaScriptiä, Salesforcea ja muita kieliä
- Integroituu build-työkaluihin, kuten Ant, Maven, Gradle ja Jenkins
PHPStan
- Avoimen lähdekoodin SAST-työkalu PHP:lle
- Tukee integraatioita Bitbucketin, GitHubin ja GitLabin kanssa
Cppcheck
- Avoimen lähdekoodin SAST-työkalu C- ja C++-koodille
- Integroituu Jenkinsin ja Visual Studion kanssa
Nämä ovat vain muutamia esimerkkejä monista saatavilla olevista avoimen lähdekoodin SAST-työkaluista. SAST-työkalua valittaessa on tärkeää ottaa huomioon esimerkiksi käytettävät ohjelmointikielet, tarvittava mukauttamisen ja läpinäkyvyyden taso, tulosten nopeus ja tarkkuus sekä helppous integroida olemassa oleviin työkaluihin ja työnkulkuihin.
Yhteenveto
Staattinen sovellusturvallisuuden testaus on kriittinen osa turvallista ohjelmistokehitystä. Tässä artikkelissa vertailluilla SAST-työkaluilla on jokaisella omat vahvuutensa ja ominaisuutensa, mutta niiden kaikkien tavoitteena on auttaa kehittäjiä löytämään ja korjaamaan tietoturva-aukkoja varhaisessa kehitysvaiheessa.
SAST-työkalua valittaessa on otettava huomioon esimerkiksi käytettävät ohjelmointikielet, tarvittava mukauttamisen ja läpinäkyvyyden taso, tulosten nopeus ja tarkkuus sekä helppous integroida olemassa oleviin työkaluihin ja työnkulkuihin. Monet näistä työkaluista tarjoavat ilmaisia kokeilujaksoja tai avoimen lähdekoodin versioita, joten voit kokeilla niitä ja katsoa, mikä niistä sopii parhaiten tarpeisiisi.
Viime kädessä SAST:n tavoitteena on parantaa sovellustesi yleistä turvallisuutta löytämällä ja korjaamalla ongelmia ennen kuin hyökkääjät voivat hyödyntää niitä. Sisällyttämällä SAST:n kehitysprosessiisi voit rakentaa turvallisempia ohjelmistoja ja vähentää kalliiden tietomurtojen riskiä tulevaisuudessa.