Zephyrnet-logo

Verschuiving naar geheugenveilige talen wint aan kracht

Datum:

De software-industrie boekt vooruitgang tegen een groep schadelijke kwetsbaarheden die verantwoordelijk zijn voor de overgrote meerderheid van kritieke, op afstand exploiteerbare en in-the-wild aanvallen, zeiden softwarebeveiligingsexperts deze week.

De klasse van kwetsbaarheden - zogenaamde geheugenveiligheidsproblemen - omvat bufferoverlopen en use-after-free-fouten en is verantwoordelijk voor de meeste beveiligingsproblemen van applicaties die door softwarebedrijven zijn onthuld. Nu blijkt uit de nieuwste gegevens dat het toenemende gebruik van geheugenveilige talen, zoals Java, C# en meer recentelijk Rust, heeft geleid tot een snelle afname van de hele klasse van kwetsbaarheden.

Afgelopen week bijv. Google onthulde dat de nieuwste versie van het Android-besturingssysteem meer nieuwe code bevat die is geschreven in geheugenveilige programmeertalen - zoals Java, Rust en Kotlin - dan geheugenonveilige talen zoals C en C ++, wat resulteert in een afname van geheugenbeveiligingskwetsbaarheden van 223 naar 85 in de afgelopen drie jaar.

"We blijven ons richten op het elimineren van hele soorten kwetsbaarheden, waarbij we ons eerst richten op de ernstigste", zegt Jeffrey Vander Stoep, een software-engineer bij Google. "Naarmate kwetsbaarheden in de geheugenveiligheid schaarser worden, verwachten we dat de onderzoeksgemeenschap hun inspanningen voor het vinden van kwetsbaarheden zal richten op andere soorten kwetsbaarheden."

Geheugenbeveiligingskwetsbaarheden gevaarlijk, zegt Google

Geheugenbeveiligingskwetsbaarheden zijn onevenredig ernstig. Bron: Google

Al tientallen jaren zijn C en C++ de werkpaard-programmeertalen van de software-industrie. Toch missen ze de geheugenbescherming van modernere talen, zoals C#, Go, Java, Python, Ruby, Rust en Swift. Het resultaat? Negenenvijftig procent van de applicaties geschreven in C++ heeft zeer ernstige of kritieke fouten, vergeleken met 9% voor JavaScript en 10% voor Python, volgens applicatie-beveiligingsbedrijf Veracode's Staat van softwarebeveiliging Vol. 11 verslag.

Bufferoverlopen en ontwormbare gebreken

Het gemak waarmee programmeurs gebrekkige code kunnen maken, is een groot probleem geworden voor grote softwarebedrijven. Microsoft ontdekte bijvoorbeeld dat er tot 2018 geheugenproblemen waren goed voor 70% van de kwetsbaarheden ontdekt in de software van het bedrijf. Over het algemeen zijn geheugenveiligheidsproblemen verantwoordelijk voor 60% tot 70% van alle kwetsbaarheden in een grote verscheidenheid aan ecosystemen, volgens Onderzoek uit 2020 door Alex Gaynor, ingenieur voor softwareveerkracht.

En omdat de fouten gemakkelijk kunnen worden misbruikt om applicaties aan te vallen, zijn ze de hoofdoorzaken achter een aanzienlijk aantal compromissen, zegt Chris Wysopal, chief technology officer van Veracode.

"Problemen met geheugenbeschadiging behoren tot de ernstigste gebreken, omdat ze aanvallers vaak in staat stellen misbruik te maken van code-uitvoering, waardoor ze volledige controle over de toepassing kunnen krijgen", zegt hij. "In het slechtste geval maakt dit de creatie van een worm-exploit mogelijk die vervolgens andere instanties van de kwetsbaarheid kan aanvallen."

In zijn recente blogpost over de verschuiving naar geheugenveilige talen voor Android-ontwikkeling, merkte Google op dat hoewel geheugenbeveiligingsproblemen nu slechts 36% uitmaken van de problemen die in Android worden onthuld, ze verantwoordelijk zijn voor 86% van de kritieke beveiligingsproblemen en 89% van de op afstand exploiteerbare problemen.

De overstap maken naar veilige talen

Om die reden hebben Google en anderen er bij ontwikkelaars op aangedrongen om geheugenveilige talen te gebruiken.

In het geval van Google zijn C en C++ nu goed voor iets minder dan de helft van alle nieuwe code. In feite is Android 13, de nieuwste versie, de eerste waarin de meeste code is geschreven in geheugenveilige talen, met Rust vervangt C en C++ voor veel ontwikkelaars. Rust is een efficiënte programmeertaal gericht op het creëren van veilige code.

Zelfs de National Security Agency is dat bedrijven aansporen om geheugenveilige programmeertalen te gebruiken.

Overschakelen naar een geheugenveilige taal is echter niet voldoende. Hoewel de talen het voor programmeurs moeilijker maken om onveilige code te schrijven, heeft elke taal een ander beschermingsniveau. Om die reden heeft de NSA ook aanbevolen dat ontwikkelaars een verscheidenheid aan applicatiebeveiligingstools gebruiken - van compileropties tot statische scanners tot runtime-analyse - om applicaties zo veel mogelijk te beveiligen.

"Software-analysetools kunnen veel gevallen van geheugenbeheerproblemen detecteren en opties voor de besturingsomgeving kunnen ook enige bescherming bieden, maar inherente bescherming die wordt geboden door geheugenveilige softwaretalen kunnen de meeste geheugenbeheerproblemen voorkomen of verminderen", aldus het rapport van de NSA.

Hoewel geheugenveilige programmeertalen geen op zichzelf staande oplossing zijn voor het probleem van softwarekwetsbaarheden, geven ze uiteindelijk richtlijnen aan ontwikkelaars die vervolgens enkele van de ernstigste programmeerfouten kunnen vermijden, zegt Wysopal van Veracode.

"Het is moeilijk te generaliseren en te zeggen dat er minder kwetsbaarheden zijn in geheugenveilige talen, omdat de manier waarop ze worden gebruikt anders is", zegt hij. "Maar als je twee verschillende talen zou gebruiken om exact dezelfde taak uit te voeren, en de ene taal is geheugenveilig, dan zou je in die ene taal minder kwetsbaarheden verwachten en doorgaans minder kritieke kwetsbaarheden."

spot_img

Laatste intelligentie

spot_img