Evaluating Cryptographic API Misuse Detectors for Go
Dit artikel presenteert het eerste uitgebreide onderzoek naar misbruik van cryptografische API's in Go door een taxonomie van 14 misbruikklassen te ontwikkelen, vier detectietools te evalueren over 328 projecten en 7.473 kwetsbaarheden te identificeren om aanzienlijke lacunes in de huidige detectiebereik te benadrukken.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je een fort bouwt. Je hebt de beste, meest beveiligde sloten ter wereld (cryptografische API's) om je schat te beschermen. Maar als je het slot ondersteboven installeert, een broos sleutel gebruikt, of vergeet de deur goed te vergrendelen, is je fort net zo kwetsbaar als wanneer je helemaal geen slot had. Dit is wat er gebeurt wanneer ontwikkelaars cryptografische hulpmiddelen "verkeerd gebruiken": ze denken dat ze veilig zijn omdat ze de juiste technologie hebben gebruikt, maar ze hebben een fout gemaakt in hoe ze het hebben toegepast.
Dit artikel is als een kwaliteitscontrole-inspectie voor een specifiek type bouwmateriaal: de Go-programmeertaal. Go is de taal die wordt gebruikt om sommige van de meest kritieke infrastructuur van het internet te bouwen (zoals de systemen die internetverkeer beheren of beveiligde datacenters). Terwijl experts deze "slotinstallatiefouten" al jaren in andere talen (zoals Java) hebben bestudeerd, had niemand tot nu toe de Go-bouwplaatsen echt gecontroleerd.
Hier is wat de onderzoekers hebben gedaan, eenvoudig uitgelegd:
1. De Inspecteurs (De Hulpmiddelen)
De onderzoekers verzamelden vier verschillende "beveiligingsinspecteurs" (softwaretools) om Go-code te scannen op deze fouten:
- CodeQL: Een krachtige, academisch georiënteerde inspecteur die kijkt hoe data door de code stroomt.
- Gopher: Een gespecialiseerde tool die speciaal voor Go is gebouwd, bekend om zijn agressieve aanpak bij het vinden van potentiële problemen.
- Gosec: Een populaire, door de gemeenschap gebouwde tool die controleert op veelvoorkomende beveiligingsfouten.
- Snyk Code: Een commerciële tool die AI en statische analyse gebruikt om bugs te vinden.
2. Het Blauwdruk (De Taxonomie)
Voordat ze begonnen met scannen, creëerden de onderzoekers een hoofdcontrolelijst met 14 verschillende manieren waarop een ontwikkelaar cryptografie kan verprutsen. Denk hierbij aan een lijst met veelgemaakte fouten, zoals:
- Een slot gebruiken dat te oud en zwak is (Onveilige Algoritmen).
- Een sleutel gebruiken die te kort is of te makkelijk te raden (Korte Sleutellengte).
- Vergeten te controleren of de persoon aan de deur echt is wie hij zegt te zijn (Geen Host Sleutel Validatie).
- Een voorspelbaar patroon gebruiken voor het mechanisme van het slot (Voorspelbare IV's).
3. De Inspectie (Het Experiment)
Ze namen 328 echte, populaire Go-projecten (zoals de software die Kubernetes of Terraform draait) en lieten alle vier de inspecteurs erop scannen.
- Het Resultaat: De inspecteurs vonden in totaal 7.473 fouten.
- De Verrassing: De inspecteurs waren het helemaal niet met elkaar eens.
- Gosec was het meest actief en vond de meeste fouten, maar markeerde ook veel dingen die niet echt gevaarlijk waren (zoals het vinden van een "zwak slot" in een voorbeeldcodebestand dat niemand ooit in het echt zou gebruiken).
- Gopher vond een unieke set fouten die de anderen misten, maar het raakte soms vast of kon bepaalde projecten niet uitvoeren.
- Snyk Code was zeer snel en nauwkeurig, vond minder fouten, maar was zeer zeker van de fouten die het wel vond.
- CodeQL was het langzaamst (het kost veel tijd om zijn "database" van de code op te zetten), maar vond enkele zeer specifieke, complexe fouten die de anderen misten.
4. Het Vonnis
De belangrijkste conclusie is dat geen enkele inspecteur perfect is.
- Als je slechts één tool gebruikt, kun je een enorm gat in je muur missen omdat die tool niet wist waar hij naar moest zoeken.
- Als je ze allemaal gebruikt, krijg je veel "valse alarmen" (waarschuwingen over dingen die niet echt kapot zijn), wat overweldigend kan zijn.
De onderzoekers ontdekten dat de tools vaak het oneens waren over of een specifiek stuk code daadwerkelijk een fout was. Bijvoorbeeld, één tool zou kunnen zeggen: "Deze sleutel is te kort!" terwijl een andere zegt: "Dat is prima."
De Conclusie
Deze studie is de eerste keer dat iemand systematisch heeft gecontroleerd hoe goed we deze specifieke beveiligingsfouten in Go-code kunnen vinden. Ze ontdekten dat we wel hulpmiddelen hebben om te helpen, maar dat deze momenteel lijken op een groep inspecteurs die verschillende talen spreken en verschillende definities hebben van hoe een "kapot slot" eruit ziet.
Om Go-gebaseerde systemen veilig te houden, moeten beveiligingsingenieurs niet vertrouwen op slechts één tool. In plaats daarvan moeten ze een combinatie van deze tools gebruiken (een "ensemble") om het breedste net van fouten te vangen, terwijl ze begrijpen dat ze de resultaten handmatig moeten controleren om echte gevaren te scheiden van valse alarmen.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.