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. “
Det korte svar er: JA.
Det uddybende svar kommer her 🙂 :
Med det trusselsbillede, som vi i disse tider befinder os i, skal fokus på cybersikkerhed løftes op. Mange moderne applikationer, ikke mindst IOT, produkter med adgang til skyen osv., har behov og mulighed for løbende opdatering af SW og og FW. Lægger man dertil den til stadighed stigende kompleksitet i softwareapplikationerne, så må der afgjort siges at være et behov for tilsvarende udvikling af værktøjer, som adresserer de udfordringer, som spottes. Dette gælder ikke mindst de programmeringssprog, der anvendes.
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 modvirker:
- 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 package manager 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?
Rust kan være lidt tungt at komme i gang med, da det er ret så Verbose. Men i kraft af sprogets opbygning og syntaks, så giver det – trods en indledende tungere kompleksitet – en lettere vej frem, ikke mindst set i lyset af de mange potentielle bugs og problemer som kan undgås.
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/
En anden god introduktion finder du her:
https://medium.com/comsystoreply/half-a-year-of-rust-9b5d1d7ede
Og ellers er der denne tutorial: https://rustlings.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 !

Brug for mere information?
Kontakt Andreas Sørensen, CTO