Staatiline rakendusturvalisuse testimine (SAST – Static Application Security Testing) on tarkvaraarenduse elutsükli oluline osa. SAST-i tööriistad analüüsivad lähtekoodi, et tuvastada turvaauke ja muid probleeme enne koodi kompileerimist või käivitamist. See aitab arendajatel probleeme leida ja lahendada varakult arendusprotsessis, vähendades kulusid ja parandades üldist turvalisust.
Saadaval on mitmeid populaarseid SAST-i tööriistu, millest igaühel on oma tugevused ja funktsioonid. Selles artiklis võrdleme kõige laialdasemalt kasutatavaid SAST-i tööriistu.
CheckMarx
CheckMarx SAST on lähtekoodi analüüsi lahendus, mis tuvastab turvaauke, vastavusprobleeme ja muid vigu koodis. See loob koodi elementide ja voogude loogilise graafi ning pärib seda graafi probleemide leidmiseks. CheckMarx toetab paljusid programmeerimiskeeli ja saab skannimisi käivitada igal arenduse elutsükli etapil.
CheckMarxi peamised funktsioonid on järgmised:
- Laialdane eelkonfigureeritud päringute loend teadaolevate turvaaukude jaoks
- Võimalus konfigureerida kohandatud päringuid turvalisuse, kvaliteedi tagamise ja äriloogika jaoks
- Interaktiivne liides käitumise jälgimiseks käitusajal ja probleemide lahendamiseks
- Integratsioon ehitusautomaatika tööriistade, SCM-süsteemide, probleemide jälgijate ja CI/CD platvormidega
Fortify
OpenText Fortify Static Code Analyzer on veel üks juhtiv SAST-i tööriist. See tuvastab lähtekoodi turvaaukude algpõhjused, seab prioriteediks kõige tõsisemad probleemid ja annab juhiseid nende lahendamiseks. Fortify toetab üle 1600 turvaaugu kategooria enam kui 33 programmeerimiskeeles.
Fortify peamised võimalused on järgmised:
- Turvalisuse manustamine arendustööriistadesse ulatusliku integratsiooni ökosüsteemi kaudu
- Skannimissügavuse häälestamine ja valepositiivsete tulemuste minimeerimine Audit Assistanti abil
- Skannimiste dünaamiline skaleerimine, et vastata CI/CD torujuhtmete nõudmistele
- Turvaaukude tuvastamine lähtekoodis, binaarkoodis või baitkoodis arenduse varases etapis
- Integratsioon CI/CD tööriistadega, nagu Jenkins, Jira, Azure DevOps ja teised
Frogbot
Frogbot on Git-i bot, mis skannib pull request’e turvaaukude suhtes, kasutades JFrog Xray’d. Kui luuakse või sildistatakse uus pull request, käivitab Frogbot skannimise ja teatab kõik leitud probleemid otse Git-i kasutajaliideses. See võimaldab arendajatel turvaaukudega tegeleda enne, kui need koodibaasi ühendatakse.
Frogboti peamised funktsioonid on järgmised:
- Pull request’ide skannimine teadaolevate turvaaukude suhtes
- Tulemuste raporteerimine kommentaaridena Git-i liideses
- Võimalus skannimisi uuesti käivitada, lisades olemasolevale pull request’ile sildi
- Integratsioon JFrog Xray’ga skannimismootorina
Veracode
Veracode pakub pilvepõhist automatiseeritud SAST-i lahendust. See skannib kompileeritud koodi (binaarfaile), mitte ainult lähtekoodi, pakkudes sügavamaid ja põhjalikumaid tulemusi. Veracode tuvastab potentsiaalseid probleeme, nagu pahatahtlik kood või ebapiisav funktsionaalsus, ja seab tulemused prioriteediks vastavalt äririskile.
Veracode’i mõned märkimisväärsed aspektid on järgmised:
- Binaarfailide skannimine, et lisada kolmandate osapoolte teeke, mis võivad olla lähtekoodi skannimistest välja jäetud
- Tulemuste prioriseerimine vastavalt ärieesmärkidele ja riski taluvusele
- Väga täpsete ja praktiliste tulemuste pakkumine väheste valepositiivsete tulemustega
- Kiire skannimise ja tulemuste võimaldamine ilma spetsiaalse turvapersonali vajaduseta
Semgrep
Semgrep on avatud lähtekoodiga SAST-i tööriist, mis töötab kõikjal, alates käsurealt kuni CI/CD torujuhtmeteni. See on loodud olema kergesti kohandatav ja kasutatav, laiendatava arhitektuuriga. Semgrepi reeglid on kasutajatele nähtavad ja süntaksilt sarnased lähtekoodiga, muutes need läbipaistvaks ja arusaadavaks.
Semgrepi peamised funktsioonid on järgmised:
- Skannimiste käivitamine sekunditega, CI-skannimise mediaanaeg on 10 sekundit
- Paindlikkus kohandatud reeglite kirjutamiseks keerukate probleemide lahendamiseks
- Hallatavate reeglite kogu pakkumine, et minimeerida kohandatud reeglite kirjutamist
- 30+ raamistiku ja tehnoloogia toetamine
GitHub CodeQL
CodeQL on avatud lähtekoodiga analüüsimootor, mida GitHub kasutab turvakontrollide ja variatsioonianalüüsi jaoks. See toetab paljusid programmeerimiskeeli ning pakub käsurealiidest ja Visual Studio Code’i laiendust skannimiste käivitamiseks avatud lähtekoodiga koodibaasidel.
CodeQL-i mõned märkimisväärsed aspektid on järgmised:
- Turvakontrollide ja variatsioonianalüüsi automatiseerimine
- Laia valiku keelte, teekide ja raamistike toetamine
- Ülevaate pakkumine CodeQL-is kasutatavatest tehnilistest terminitest ja kontseptsioonidest
Snyk Code
Snyk Code on arendajasõbralik SAST-i tööriist, mis skannib lähtekoodi minutitega, ilma et oleks vaja ehitada. See pakub reaalajas tulemusi koos koodiga ja annab soovitusi probleemide kiireks lahendamiseks. Snyk Code ühildub populaarsete keelte, IDE-de ja CI/CD tööriistadega.
Snyk Code’i peamised funktsioonid on järgmised:
- Koodi skannimine kirjutamise ajal, automaatse skannimisega IDE-st
- Praktiliste tulemuste pakkumine koos arendajasõbralike soovitustega
- Masinõppe kasutamine tugeva teadmistebaasi loomiseks
- Probleemide prioriseerimine vastavalt juurutamise olekule ja kokkupuutele
Tencent Xcheck
Tencent Xcheck on staatilise rakenduse turvalisuse testimise (SAST) tööriist, mille on välja töötanud Tencent Cloud. See on loodud selleks, et aidata arendajatel tuvastada oma lähtekoodis turvaauke ja muid probleeme.
- Xcheck suudab täpselt mõista erinevate programmeerimiskeelte süntaksilisi omadusi, mis aitab lahendada valepositiivsete tulemuste probleemi, mis on põhjustatud koodi valesti mõistmisest.
- See suudab tuvastada kasutaja määratud turvameetmeid, vähendades veelgi valepositiivseid tulemusi.
- Xcheck toetab tervete projektide skannimist toetatud keelte korrektse süntaksiga.
- See suudab veebi taustarakenduse koodi kiiresti skannida, kuid sügavalt pesastatud rekursiivse koodi puhul võib see võtta kauem aega.
Võrdlus teiste SAST-i tööriistadega
- Reddit’i postitus soovitab, et Xcheck suudab skannida töötlemata lähtekoodi otse ilma kompileerimata ja selle skannimiskiirus on 100 korda kiirem kui Checkmarxil.
Juurutamine ja turvalisus
- Xcheck on juurutatud kohapeal, seega jääb testitav lähtekood ettevõtte võrku, vältides lähtekoodi lekke ohtu.
- Kogu toote elutsükkel, sealhulgas lähtekood, ei lahku ettevõtte võrgust.
Tencent Xcheck on kiire ja täpne SAST-i tööriist, mis aitab arendajatel leida oma koodist turvaprobleeme. Selle kohapealne juurutusmudel tagab lähtekoodi turvalisuse. Kuigi see on kiiruse ja täpsuse poolest teiste SAST-i tööriistadega võrreldes soodne, ei pruugi see toetada nii palju keeli ega omada nii ulatuslikku ökosüsteemi kui mõned ettevõttele keskendunud SAST-i tööriistad.
Semgrep
- Avatud lähtekoodiga SAST-i tööriist, mis töötab kõikjal, alates käsurealt kuni CI/CD torujuhtmeteni
- Loodud olema kergesti kohandatav ja kasutatav, laiendatava arhitektuuriga
- Toetab 30+ raamistiku ja tehnoloogia
- Hallatavate reeglite kogu pakkumine, et minimeerida kohandatud reeglite kirjutamist
- Skannimiste käivitamine sekunditega, CI-skannimise mediaanaeg on 10 sekundit
Bandit
- Avatud lähtekoodiga SAST-i tööriist, mis on spetsiaalselt loodud Pythoni koodi skannimiseks
- Põhjalik Pythoni lähtekoodi turvaaukude skanner
Brakeman
- Avatud lähtekoodiga turvaaukude skanner, mis on loodud spetsiaalselt Ruby on Rails’i rakenduste jaoks
OWASP Dependency-Check
- Avatud lähtekoodiga tööriist, mis tuvastab teadaolevalt haavatavate komponentide kasutamise
- Toetab Java ja .NET projekte
- Integreerub ehitustööriistadega, nagu Gradle, Jenkins ja Maven
PMD
- Avatud lähtekoodiga SAST-i tööriist, mis toetab Java, JavaScripti, Salesforce’i ja muid keeli
- Integreerub ehitustööriistadega, nagu Ant, Maven, Gradle ja Jenkins
PHPStan
- Avatud lähtekoodiga SAST-i tööriist PHP jaoks
- Toetab integratsioone Bitbucketi, GitHubi ja GitLabiga
Cppcheck
- Avatud lähtekoodiga SAST-i tööriist C ja C++ koodi jaoks
- Integreerub Jenkinsi ja Visual Studioga
Need on vaid mõned näited paljudest saadaolevatest avatud lähtekoodiga SAST-i tööriistadest. SAST-i tööriista valimisel on oluline arvestada selliste teguritega nagu kasutatavad programmeerimiskeeled, vajalik kohandamise ja läbipaistvuse tase, tulemuste kiirus ja täpsus ning integreerimise lihtsus olemasolevate tööriistade ja töövoogudega.
Kokkuvõte
Staatiline rakenduse turvalisuse testimine on turvalise tarkvaraarenduse kriitiline osa. Selles artiklis võrreldud SAST-i tööriistadel on kõigil oma tugevused ja funktsioonid, kuid nende kõigi eesmärk on aidata arendajatel leida ja parandada turvaauke arendusprotsessi varases etapis.
SAST-i tööriista valimisel arvestage selliste teguritega nagu kasutatavad programmeerimiskeeled, vajalik kohandamise ja läbipaistvuse tase, tulemuste kiirus ja täpsus ning integreerimise lihtsus olemasolevate tööriistade ja töövoogudega. Paljud neist tööriistadest pakuvad tasuta prooviversioone või avatud lähtekoodiga versioone, nii et saate neid proovida ja vaadata, milline neist teie vajadustele kõige paremini sobib.
Lõppkokkuvõttes on SAST-i eesmärk parandada teie rakenduste üldist turvalisust, leides ja parandades probleemid enne, kui ründajad saavad neid ära kasutada. SAST-i kaasamisega oma arendusprotsessi saate luua turvalisemat tarkvara ja vähendada kulukate rikkumiste ohtu.