Kodning i Rust – 5 gode grunde

Nu tænker du måske: ”Skal jeg nu lære endnu et programmeringssprog? Vi kan da ikke blive ved, C++, C#, Python, JAVA, PHP, Ruby osv., osv. “

Kort og godt er svaret: JA.

Det uddybende svar kommer her 🙂 :

Eftersom vores verden ændrer sig, således ændres kravene til produkterne, som vi skal have ud på markederne ligeså, og dermed også de værktøjer, som vi skal bruge. Som eksempel vil hele tankegodset i IOT og den moderne tilgang til udvikling af software applikationerne stille krav til automatiske software opdateringer samt mere eller mindre konstant netværkstilgang. Med andre ord, så bliver fokus på cybersikkerhed et hårdt krav i langt de fleste applikationer, ikke mindst med det trusselsbillede vi i disse tider befinder os i.

Og hvorfor så Rust?

Rust bidrager til cybersikkerhed, fordi sproget har et stærkt fokus på hukommelsessikkerhed, trådsikkerhed og høj ydeevne –  uden at gå på kompromis med lav-niveau kontrol. Det betyder, at Rust eliminerer hele klasser af sårbarheder, som ofte opstår i andre systemnære sprog som C og C++.

Lad mig bore lidt dybere:

1. Hukommelsessikkerhed uden Garbage Collection

Rust sikrer hukommelsessikkerhed allerede ved kompilering ved hjælp af et “ownership”-system, der forhindrer:

  • Buffer overflows
  • Use-after-free
  • Double-free
  • Null pointer-fejl

Disse fejl er almindelige i C/C++ og har ført til mange alvorlige sikkerhedshuller gennem tiden.

2. Sikker parallel programmering

Rusts compileren håndhæver sikker trådkommunikation og concurrency, hvilket forhindrer:

  • Dataraces
  • Race conditions
  • Usikre trådoperationer

Dette er afgørende i moderne software, hvor flere tråde kører parallelt, og fejl kan føre til alvorlige sikkerhedsproblemer.

3. Ingen “Undefined Behavior” (som default)

I modsætning til C/C++, hvor “undefined behavior” kan udnyttes af angribere, så forhindrer Rust sådanne situationer i sin sikre delmængde. Hvis man har brug for “unsafe” kode, skal det eksplicit markeres, hvilket gør det lettere at revidere og kontrollere.

4. Minimering af angrebsfladen

Rust undgår mange køretidsfejl og “panics” gennem funktioner som:

  • Pattern matching
  • Option/Result-typer (i stedet for null og exceptions)

Det tvinger udviklere til at tænke over fejltilfælde og undgår dermed mange logikbaserede sårbarheder.

5. Moderne økosystem og sikre standarder

Rusts Cargo-pakkemanager og crates.io-økosystemet understøtter:

  • Versionsstyring af afhængigheder
  • Revisionsmuligheder
  • Automatisk formatering og linting for at fremme sikker kodestil
  • Anvendelser inden for cybersikkerhed

Som eksempler kan det nævnes at Rust i dag anvendes i:

  • Sikkerhedsværktøjer (fx antivirusmotorer, secure bootloaders)
  • Operativsystemer (dele af Linux-kernen, Redox OS)
  • WebAssembly-sandkasser
  • Indlejrede sikkerhedssystemer

Både Microsoft, Google og NSA har udtrykt støtte til Rust til udvikling af sikre softwarekomponenter.

Opsummering

Rust bidrager til cybersikkerhed ved at forhindre hele klasser af almindelige sårbarheder allerede ved kompilering, reducere behovet for køretidskontrol og fremme sikker udviklingspraksis. Det tilbyder C-lignende ydeevne med langt større sikkerhed, hvilket gør det ideelt til udvikling af sikker softwareinfrastruktur.

Hvordan kommer man i gang?

Heldigvis er der meget hjælp at hente. Og det er nemt at downloade compilere m.v.

Du kan eventuelt kigge lidt her: https://www.rust-lang.org/

Har du brug for hjælp til at komme i gang med Rust eller brug for mere viden og/eller man power til jeres næste software projekt, så hold dig ikke tilbage med at kontakte os !