image

Google stapt geleidelijk over naar Java en Rust: 'C++ wordt geen veilige taal'

dinsdag 5 maart 2024, 15:03 door Redactie, 12 reacties

Google gaat in de toekomst steeds vaker gebruikmaken van programmeertalen zoals Java, Rust en Go, die meer veiligheidsgaranties bieden dan C++, dat nu op grote schaal wordt gebruikt. Het techbedrijf spreekt over honderden miljoenen regels C++-code waar actief gebruik van wordt gemaakt en in ontwikkeling is. "Deze grote bestaande codebase zorgt voor grote uitdagingen bij een transitie naar memory safety", aldus Alex Rebert van Google.

Onlangs riep het Witte Huis softwareleveranciers en programmeurs op om 'memory safe' programmeertalen te gebruiken. Memory safety kwetsbaarheden, zoals buffer overflows, kunnen grote gevolgen hebben en worden op grote schaal gebruikt bij het aanvallen van systemen. Voorbeelden van memory unsafe programmeertalen zijn C en C++. Het Witte Huis ziet dan ook graag dat er meer gebruik wordt gemaakt van 'memory safe' talen zoals Rust.

Dat is volgens Google geen eenvoudige opgave, mede vanwege het grootschalige gebruik van C++. "We zien geen realistisch pad waarbij C++ evolueert tot een taal met strenge memory safety garanties die temporal safety bevatten", merkt Rebert op. Ook is het herschrijven van alle bestaande C++-code in een andere, memory safe programmeertaal zeer lastig en onpraktisch. Voor nieuwe code wil Google dan ook geleidelijk overstappen op Java, Rust en Go.

"We weten dat memory safe programmeertalen niet alle kwetsbaarheden verhelpen", laat Rebert weten. "Maar het verwijderen van hele klassen aan exploits komt meteen ten goede aan softwaregebruikers en geeft ons de mogelijkheid om andere klassen kwetsbaarheden aan te pakken."

Reacties (12)
05-03-2024, 15:51 door Anoniem
Geen enkele taal is een veilige taal. Sommige talen zijn in beginsel *veiliger* maar dat kan ook zo veranderen als er een zeroday is gevonden in een design. En memory safe is een hele misleidende term. Rust en memory safe in general ja tot je unsafe gebruikt voor compiler mode.


However, Rust has a second language hidden inside it that doesn’t enforce these memory safety guarantees: it’s called unsafe Rust and works just like regular Rust, but gives us extra superpowers.
https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html

En daar ligt het probleem met programmeren je kan de taal nog zo veilig maken als de gebruiker dat negeert heb je niks aan dat predikaat. Naast dat er low level systems zijn (wat ook toegelicht wordt door hun zelf) wat het vereist maakt.

En dit soort loopholes vind je in bijna alle talen terug.
05-03-2024, 16:20 door Anoniem
Heel fijn!
Ik heb overigens zelf ook een aantal C++ apps op mijn telefoon.
05-03-2024, 16:36 door Anoniem
Het gaat over geheugen-gerelateerde veiligheid/onveiligheid.

Dat haalt ook zeker niets uit als je de code op front- en back-end maar laat "voort rotten".

Wie de beslissingen nemen, zijn niet diezelfde lieden, die ze door moeten voeren of er verstand van hebben.

En zo modderen we maar voort en verder.

De aanvaller heeft aan een klein geheugengaatje genoeg, de verdediging zal over de hele linie moeten gelden.

luntrus
05-03-2024, 18:02 door Anoniem
Door Anoniem: Geen enkele taal is een veilige taal.
Als je het artikel goed leest zie je dat ze dat ook helemaal niet claimen. Expliciet niet.

Sommige talen zijn in beginsel *veiliger* maar dat kan ook zo veranderen als er een zeroday is gevonden in een design.
Het ontwerp van de taal? En dus niet een implementatiefout in de compiler die in een nieuwe versie weer is opgelost? Hoe zie je dat voor je?

In de veilige modus van de taal geldt een heel simpele regel: elke referentie verwijst naar geldig geheugen. Als dat niet zo blijkt te zijn dan is dat geen ontwerpfout, want die regel is heel recht voor zijn raap, maar een implementatiefout, de compiler houdt zich niet aan zijn eigen ontwerpregel. Dat kan men in de volgende release van de compiler oplossen zonder het ontwerp van de taal aan te passen.

En memory safe is een hele misleidende term. Rust en memory safe in general ja tot je unsafe gebruikt voor compiler mode.
Je redeneert alsof een programmeur gretig zo veel mogelijk die onveilige modus gaat gebruiken als die maar enigszins de kans krijgt. Je begrijpt het punt niet: de veiligheidsgaranties van een taal zijn een hulpmiddel voor de programmeur om zichzelf tegen fouten te beschermen. Die probeert de veilige modus niet te vermijden, die probeert juist zoveel mogelijk te vermijden dat die de onveilige modus nodig heeft. En de onveilige code is ook nog eens als zodanig herkenbaar, zodat er automatisch op gescand kan worden (letterlijk op het woord "unsafe") en onveilige code voor extra reviews en audits gemarkeerd kan worden. En dat kan een programmeur niet omzeilen, die is immers niet de enige die toegang heeft tot het versiebeheersysteem waar alle code die uiteindelijk live gaat uit betrokken wordt en dus door de programmeur eerst erin geplaatst moet worden.
05-03-2024, 18:39 door Anoniem
GrapheneOS heeft hardware memory tagging ondersteuning (MTE) op de Pixel 8 en 8pro, dat voorkomt de meeste framebuffer exploits, het zou in principe ook tegen "onveilige programmeertalen" moeten helpen.
Daarnaast is er een goede application sandbox.
05-03-2024, 19:29 door Anoniem
Verrassend dat ze voor Java kiezen en niet voor Kotlin (wat Android al gebruikt)
05-03-2024, 22:00 door Anoniem
Is de Rust compiler/interpreter toevallig zelf in C/C++ gemaakt? En draait op een OS dat in C/C++ geschreven is?
05-03-2024, 23:47 door Anoniem
Door Anoniem: Verrassend dat ze voor Java kiezen en niet voor Kotlin (wat Android al gebruikt)

Het google Google Security Engineering Technical Report hierover gooit Java en Kotlin op één hoop als 'JVM languages' (Java, Kotlin).

Je moet management summaries die een paar bekende voorbeelden noemen niet beschouwen als een uitputtende en exclusieve lijst - en je dan gaan afvragen waarom taal Y/Z/W niet ook genoemd staan.
06-03-2024, 11:16 door jetstreak - Bijgewerkt: 06-03-2024, 11:17
Heeft natuurlijk alles te maken met een eerder artikel: https://www.security.nl/posting/821229/FBI+en+NSA+roepen+ontwikkelaars+op+veilige+programmeertalen+te+gebruiken
06-03-2024, 17:14 door Anoniem
Door jetstreak: Heeft natuurlijk alles te maken met een eerder artikel: https://www.security.nl/posting/821229/FBI+en+NSA+roepen+ontwikkelaars+op+veilige+programmeertalen+te+gebruiken
Die veilige programmeertalen worden niet door FBI of NSA ontwikkeld, die zijn en worden ontwikkeld vanuit de behoefte van softwareontwikkelaars zelf aan talen die beschermen tegen de fouten die voor de meeste problemen zorgen. Java is bij Sun Microsystems ontstaan, Kotlin bij Google, Rust bij Mozilla. De laatste is geschikt om te gebruiken waar nu C of C++ voor wordt gebruikt, zelfs in de kernel van een OS.

FBI en NSA houden zich bezig met de nationale veiligheid van de VS, en we leven in een tijd dat fouten in software een forse impact hebben op die veiligheid. Het is vanuit dat perspectief niet raar dat zij ontwikkelaars oproepen om aan te haken bij waar andere ontwikkelaars allang actief mee bezig zijn.
06-03-2024, 17:53 door Anoniem
Door Anoniem:
Door jetstreak: Heeft natuurlijk alles te maken met een eerder artikel: https://www.security.nl/posting/821229/FBI+en+NSA+roepen+ontwikkelaars+op+veilige+programmeertalen+te+gebruiken
Die veilige programmeertalen worden niet door FBI of NSA ontwikkeld, die zijn en worden ontwikkeld vanuit de behoefte van softwareontwikkelaars zelf aan talen die beschermen tegen de fouten die voor de meeste problemen zorgen. Java is bij Sun Microsystems ontstaan, Kotlin bij Google, Rust bij Mozilla. De laatste is geschikt om te gebruiken waar nu C of C++ voor wordt gebruikt, zelfs in de kernel van een OS.

Klopt. Hoewel het doel van java (of in elk geval de push erachter) beloofde 'write once, run anywhere' dankzij het runnen in een jvm - java virtual machine in plaats van op tig verschillende CPUS.

Dat een taal-ontwerper in de jaren 90 probeert inmiddels bekende nadelen van oudere talen te vermijden is logisch, en het probleem van memory-unsafe was wijd en zijd bekend. Ook zonder security , "core dump" na null pointer access was welbekend en gehaat.

Er zijn eerder talen ontwikkeld vanuit een bepaalde filosofie (functional programming - Lisp, Haskell), of om extra geschikt te zijn voor probleem domeinen (4GL) , voor parallel programming (occam), voor beginners (basic, logo) - en soms om extra veilig te zijn - Ada .
Ada was een sponsor/ontwikkeld verzoek door DoD .


FBI en NSA houden zich bezig met de nationale veiligheid van de VS, en we leven in een tijd dat fouten in software een forse impact hebben op die veiligheid. Het is vanuit dat perspectief niet raar dat zij ontwikkelaars oproepen om aan te haken bij waar andere ontwikkelaars allang actief mee bezig zijn.

Natuurlijk - ze hebben ook een missie om "de VS" veilig te houden, en vergelijkenderwijs is de VS kwetsbaarder voor digitale verstoring dan een 'primitief' land als Noord Korea.
11-03-2024, 14:29 door Anoniem
Vreemd, Google heeft de meest geavanceerde AI maar die AI is dus niet in staat om die C++ problemen op te sporen, code om te schrijven of de compiler aan te passen. Iets klopt hier niet.
Reageren
Ondersteunde bbcodes
Bold: [b]bold text[/b]
Italic: [i]italic text[/i]
Underline: [u]underlined text[/u]
Quote: [quote]quoted text[/quote]
URL: [url]https://www.security.nl[/url]
Config: [config]config text[/config]
Code: [code]code text[/code]

Je bent niet en reageert "Anoniem". Dit betekent dat Security.NL geen accountgegevens (e-mailadres en alias) opslaat voor deze reactie. Je reactie wordt niet direct geplaatst maar eerst gemodereerd. Als je nog geen account hebt kun je hier direct een account aanmaken. Wanneer je Anoniem reageert moet je altijd een captchacode opgeven.