mboost-dp1

Arm Limited

Ny ARM-processor kommer med imponerende sikkerhedsfordele

-

En simpel ide, kan fjerne en stor andel af nuværende sikkerhedshuller – nu indbygget i en ny generation af ARM processorer

Ideen er implementeret i CHERI, et princip der kommer sammen med ‘Arm Morello’ – baseret på N1 generation af ARM-chips. 

Frem for at (hukommelse)pointers kan produceres af alle programmer, til alle steder i hukommelsen, skal pointere gives adgang, baseret på en root-pointer – herfra nedarves R/W-rettigheder, til fast-definerede områder af hukommelsen.

I praksis betyder det at hukommelses-lækager begrænses til det område der er defineret for pointeren, og dermed gives der ikke ubegrænset adgang til hukommelsen – som typisk sker ved Buffer Overflow.

I følge Poul-Henning Kamp, kunne denne feature alene, have fjernet 43% af alle sikkerhedshuller registreret i MSRC 2019.





Gå til bund
Gravatar #1 - Nize
25. jan. 2022 13:14
Jeg havde kun hørt om det ét sted, nemlig via PHK på v2.dk - så her blev jeg glad for lige at kunne læse om det andetstedsfra, men... :-)

Uanset - fedt! Ny hardware tech er tit fedt. Det bliver spændende hvilke problemer det så trækker med sig, og om programmer uden videre kan recompiles til den arkitektur, eller skal refaktoreres - hvilket jeg gætter på betyder, at det ikke kommer til at batte en prut.
Gravatar #2 - larsp
25. jan. 2022 16:34
Spændende. Som jeg læser Microsoft bloggen: https://msrc-blog.microsoft.com/2022/01/20/an_armf... er der tale om en "næste generations" MMU der ikke bare beskytter processer mellem processer, men registrerer for hver eneste pointer hvad den har af read og write rettigheder, hvor. Rettighederne defineres i et hierarkisk princip.

Det lyder kompliceret. Gad vide hvor meget performance penalty det giver. Omvendt betyder det vel at man kan få hardware til at lave array bounds checking. Det kan måske give speed-ups i nogle sprog / VMs.
Gravatar #3 - AppleSheep
25. jan. 2022 16:49
#2 Det kan være at det giver performance penalty (håber det ikk). Men omvendt kan man håbe at det trækker den anden vej, med at antivirusserne er blevet optimeret til det. Den skal jo muligvis pludselig lave mindre end før fordi der er mindre antal sårbarheder at holde øje med nu.

Vi har allerede fået perfomance penalty med Spectre og Meltdown sårbarhederne, så jeg håber ikke det her også tynger processoren.
Gravatar #4 - arne_v
25. jan. 2022 18:39
#0

Efter at have læst lidt så forstår jeg det som at Morello ikke er en produktions CPU men en eksperiementel prototype lavet i nogle få hundrede eksemplarer for at man kan eksperimentere med software på ægte hardware.
Gravatar #5 - arne_v
25. jan. 2022 18:42
#2

Sådanne check må alt andet lige koste lidt i performance men hvad betyder 25% overhead på addressering hvis generel CPU performance vokser med 40% om året??
Gravatar #6 - arne_v
25. jan. 2022 18:49
#3

Feature kunne bruges til at restricte en pointer til kun at kunne tilgå det memory der blev initielt allokeret.

char *p = malloc(100);

vil kun kunne tilgå de 100 bytes.

Men der findes sprog som allerede kan begrænse pointere på den måde idag. Og kan man leve med sådan en restriktion, så skulle man nok ikke have valgt C.

Men man kan også bruge den feature til at isolere forskellige dele af et program, således at de ikke kan tilgå hinandens memory. OO encapsulation i HW.

Og jeg gætter på at det vil være mere interessant.
Gravatar #7 - arne_v
25. jan. 2022 19:29
#5 var til #2 og #3
#6 var til #2
Gravatar #8 - arne_v
25. jan. 2022 19:34
Hardware array bounds checking har eksisteret.

VAX havde en INDEX instruktion.


INDEX index,lowindex,highindex,size,startindex,resultoffset

med logik som:

if lowindex <= index and index <= highindex then
resultoffset = (startindex + index) * size
else
raise error
end if
Gravatar #9 - Nize
25. jan. 2022 21:16
arne_v (7) skrev:
#5 var til #2 og #3
#6 var til #2


Der er lige nogle pointere du heldigvis måtte lave om i.
Gravatar #10 - larsp
26. jan. 2022 08:38
#6 Ja, "pæn" C og C++ kode vil nok kunne compiles til at udnytte disse features direkte, med passende udvidelser i standard libraries i f.eks. malloc og free. Men der er rigtig meget cowboykode derude hvor pointere kastes rundt og peger på alt muligt. Det vil kræve porting og måske omskrivning.

Mon ikke det ender med at lavkritisk og legacy kode for lov til at køre som det plejer mens kritisk serverkode og systemkode opdateres til at udnytte disse features. En dag.
Gravatar #11 - arne_v
26. jan. 2022 15:46
#10

Meget vil kunne laves "behind the scene" af compilere ved at udnytte at størrelsen af en pointer type ikke er fastlagt i C.
Gravatar #12 - arne_v
26. jan. 2022 15:47
#6

Hvis det her kommer til at fungere så må det være goodbye til microkernel OS ideen!
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login