Det Hvide Hus ønsker hukommelsessikker programmering, men hvad er det?

Nøgle takeaways

  • Det Hvide Hus opfordrer til brug af hukommelsessikre sprog som Rust for at reducere sikkerhedssårbarheder i kode.
  • Ældre sprog på lavere niveau som C udgør en risiko for buggy-kode, der fører til sikkerhedshændelser.
  • Hukommelsessikre sprog som Rust tilbyder automatisk hukommelsesstyring og fejlforebyggende funktioner.

Et amerikansk regeringsorgan har dekreteret, at programmører skal foretrække hukommelsessikre sprog som Rust og Java. Men hvorfor er de bedre, og betyder det virkelig noget?

Hvad siger Det Hvide Hus?

I en erklæring den 26. februar opfordrede Det Hvide Hus Office of the National Cyber ​​Director (ONCD) softwareudviklere til at tage hukommelsessikre programmeringssprog som Rust.

ONCD sagde:

Vi som nation har evnen – og ansvaret – til at reducere angrebsoverfladen i cyberspace og forhindre hele klasser af sikkerhedsfejl i at komme ind i det digitale økosystem, men det betyder, at vi er nødt til at tackle det svære problem med at flytte til hukommelsessikre programmeringssprog .

  Ret Gruppen eller ressourcen er ikke i den korrekte tilstand til at udføre den anmodede operation

Hvorfor er det vigtigt?

ONCD, der blev etableret i 2021, rapporterer direkte til præsidenten og rådgiver dem om cybersikkerhed og relaterede spørgsmål. Amerikansk politik vil sandsynligvis have en ringvirkning på tværs af teknologiens verden.

Mange af de værste sikkerhedssårbarheder nogensinde havde problemer med hukommelsessikkerhed som deres grundlæggende årsag. Ældre sprog på lavere niveau giver programmører en masse magt, men det øger risikoen for, at buggy-kode forårsager alvorlige konsekvenser.

Uanset hvad har brugen af ​​hukommelsessikre sprog – som Rust, Python og JavaScript – længe været stigende. ONCD kommer sandsynligvis med denne meddelelse, fordi mindre sikre sprog som C har eksisteret så længe, ​​at deres gamle kode nu er indgroet i infrastrukturen og meget af den software, vi bruger dagligt.

Hvordan ser et usikkert sprog ud?

Usikker kode ser ikke altid skræmmende eller endda kompliceret ud. Tag dette eksempel på et simpelt C-program:

#include <stdio.h>

int main (void) {
    int arr[3] = { 0, 0, 0 };
    printf("%d\n", arr[3]);
    return 0;
}

Dette er et klassisk eksempel på en fejl, der kan føre til et bufferoverløbsangreb. Programmereren har glemt, at arrays i C (og de fleste andre sprog) er nulindekseret, hvilket betyder, at det første element er ved arr[0]osv. Forsøg på adgang arr[3] er derfor en fejl, men en som C vil tillade:

  Sådan rettes PNP-detekteret fatal fejl: Årsager, rettelser og forebyggelse

Værdien ved arr[3] er en gyldig hukommelsesadresse, som enhver anden, hører den bare ikke til arrayet. Enhver værdi kan gemmes der, og konsekvenserne af at få adgang til den eller skrive til den kan variere fra et programnedbrud til en katastrofal sikkerhedshændelse. Mange hackere gennem historien har udnyttet sådanne fejl.

Selvom C-kompileren stadig producerer en advarsel, genererer den også en eksekverbar. En programmør er fri til at ignorere advarsler og endda skjule dem ved hjælp af compilerflag. C vil stadig lade dig skyde dig selv i foden, mens sprog som Rust slet ikke vil tilbyde dig en pistol.

Hvordan ser Memory-Safe Code ud?

I et hukommelsessikkert sprog som Rust eksisterer det samme problem simpelthen ikke. Her er det samme program, i Rust:

fn main() {
    let arr: [u32; 5] = [0;3];
    println!("{}", arr[3]);
}

Mens denne kode er syntaktisk gyldig, vil Rust undlade at kompilere den:

  Øg din virksomheds salg med Pipedrive CRM

Compileren forklarer problemet og nægter at producere en eksekverbar. Rust vil simpelthen ikke lade dig køre denne kode.

Rust har mange flere funktioner udover dette, for at hjælpe med at beskytte dig. Det inkluderer funktioner som smarte pointere til at håndtere hukommelseshåndtering automatisk og forhindre nul pointer dereference.

Skal jeg skifte sprog?

Ethvert programmeringssprog har et formål, så du bør være på vagt over for råd for absolut at undgå nogen, selvom det kommer fra præsidenten. Selvom du måske vælger at specialisere dig i et bestemt sprog, er det altid nyttigt at lære en række forskellige for at udvide dine muligheder.

Hukommelsessikkerhed er en funktion af så mange moderne sprog, at du lige så godt kan være bekendt med mindst ét. C har sine anvendelser, men der er sikrere muligheder, der vil forårsage færre uheld. Især hvis du leder efter et effektivt sprog, der har nogle gode sikkerhedsnet, er Rust et must.