Modernare programmeringsspråk ska göra Windows säkrare

Permalänk
Melding Plague

Modernare programmeringsspråk ska göra Windows säkrare

Microsoft håller på att bygga om i Windows 11:s grundvalar för att göra systemet säkrare och stabilare.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Medlem

ReFS är inte nytt, det är 10 år gammalt. Jag har kört det på diskar som inte är systemdisken i perioder, men någon av Win 10-uppdateringarna tog bort stödet.

Sen skall det sägas att det de gjort hittills är att byta ut kernel-kod som är C++ mot Rust. De har inte bytt ut någon C-kod, vad jag kan se.

Visa signatur

5900X | 6700XT

Permalänk
Medlem

Problemet är väl att Rust är minnessäkert och valideras när kompilationen sker, det ger språket möjlighet att ta bort massor med kontroller och checkar från när processen kör (och därmed göra körningen snabbare)

Men det är väl ganska långt från samma sak som att det inte skulle gå att attackera program skrivna i Rust, eftersom hela idén är att lita på att binären är säker och inte kontrollera i realtid borde det inte vara omöjligt att få den att göra helt andra snedsteg efter att man skrivit om lite minne eller så, och sällan är ju en hel tech-stack enskilt skriven i Rust

Permalänk
Officiell jultomte

På tal om stabilitet i Windows 11. Såg av en slump att Microsoft Edge hade typ 37 processer öppna i bakgrunden i Task Manager, när jag stängde processerna så fick jag BSOD. Happ.

Visa signatur

PC1: i5-13600kf, 32gb DDR5@6000MHz, GTX 1080, Prime Z690-A, Windows 11
PC2: Ryzen 5 5600X, 16GB DDR4, GTX 1070Ti, ROG STRIX B550-F, Windows 10
SRV1: i5 10500T, 16GB DDR4, Debian
Home Assistant-tråden | Stryktipset

Permalänk
Medlem

REFS har ju funnits sedan WinServer2012, men menar ni att det nu även ska ersätta NTFS i Win11 (och win12 å frammåt)? Har ju bara funnits i win10 enterprise och Pro for Workstations innan för icke-server installationer, så om det även kommer in i vanliga pro eller rent av home editions vore ju väldigt bra.

Kan ju vara bra att förtydliga i så fall, och det vore ju en positiv nyhet.

Permalänk
Medlem
Skrivet av Moseby:

På tal om stabilitet i Windows 11. Såg av en slump att Microsoft Edge hade typ 37 processer öppna i bakgrunden i Task Manager, när jag stängde processerna så fick jag BSOD. Happ.

Beror på hur många kärnor du har. Ju fler processer öppna för samma program ju mer effektivt är det i W11 med fler kärnor. Det ser lite annorlunda ut men är faktiskt bättre för prestandan i slutändan..
Sen vill man ju ha så lite antal processer som möjligt ändå men det får man ju mest genom att stänga av onödiga program som körs i bakgrunden kanske mer än att pilla med program du har igång. (Om du dock inte hade edge igång så.. ja då vet jag inte).

Visa signatur

I7 12700K, Asus RTX 3080 TI, Alienware AW3423DW och annat smått o gott.

Permalänk
Medlem
Skrivet av medbor:

Problemet är väl att Rust är minnessäkert och valideras när kompilationen sker, det ger språket möjlighet att ta bort massor med kontroller och checkar från när processen kör (och därmed göra körningen snabbare)

Men det är väl ganska långt från samma sak som att det inte skulle gå att attackera program skrivna i Rust, eftersom hela idén är att lita på att binären är säker och inte kontrollera i realtid borde det inte vara omöjligt att få den att göra helt andra snedsteg efter att man skrivit om lite minne eller så, och sällan är ju en hel tech-stack enskilt skriven i Rust

Inte bara det, men inte alla checks går att göra statiskt under compile-time. Men jag antar att man kollar "resten" av dessa under runtime?

Permalänk
Medlem

Är inte det onödigt när det kommer en ny version snart...?

Eftersom vi så snabbt sket i Windows 10 (som faktiskt fungerar till skillnad från Vista 2.0), så varför lägga den energin på W11 när man faktiskt kan göra om och göra rätt med Windows...14(?)

Visa signatur

Krusidullen är stulen

Permalänk
Medlem
Skrivet av SuperSverker:

Är inte det onödigt när det kommer en ny version snart...?

Eftersom vi så snabbt sket i Windows 10 (som faktiskt fungerar till skillnad från Vista 2.0), så varför lägga den energin på W11 när man faktiskt kan göra om och göra rätt med Windows...14(?)

Du menar att varje Windows-version är omskriven från början?

Givetvis kommer mycket av den refactoring som sker i Windows 11 föras vidare till Windows 12.

Visa signatur

Windows 11 Pro | Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Medlem
Skrivet av SuperSverker:

Är inte det onödigt när det kommer en ny version snart...?

Eftersom vi så snabbt sket i Windows 10 (som faktiskt fungerar till skillnad från Vista 2.0), så varför lägga den energin på W11 när man faktiskt kan göra om och göra rätt med Windows...14(?)

Windows 11 fungerar alldeles utmärkt! Att påstå något annat... ptja... vill man vara snäll kallar man det placebo, vill man vara ärlig kallar man det dumheter.

Visa signatur

Asus B550E-Gaming / Ryzen 5900X stock / Corsair Vengeance 32GB 3600 MHz CL18 /
ASUS TUF 4080 Gaming OC / Samsung 980 PRO 2TB PCI-Ev4 + 2TB WD Black NVME PCI-Ev3 / Corsair RM850x v2 / Acer Predator XB273UGX 1440p 270 Hz G-Sync / Phantek P500A / Arctic Cooling LF II 240mm / Evo 4 / Sennheiser IE 300 / Rode NT1-A
Synology 1621+ 6*16 / 1513+ 5*8 / LG CX 65" / XBox Series X
Ownit > Bahnhof

Permalänk
Medlem
Skrivet av SuperSverker:

Är inte det onödigt när det kommer en ny version snart...?

Eftersom vi så snabbt sket i Windows 10 (som faktiskt fungerar till skillnad från Vista 2.0), så varför lägga den energin på W11 när man faktiskt kan göra om och göra rätt med Windows...14(?)

Man skriver inte om en kärna hel varje gång man släpper en ny version av Windows. Kärnan i Windows 12 har fortfarande kod från windows NT-tiden. Och kod som skrivs idag kommer finnas i Windows de nästkommande 20 åren också.

Permalänk
Medlem
Skrivet av medbor:

Problemet är väl att Rust är minnessäkert och valideras när kompilationen sker, det ger språket möjlighet att ta bort massor med kontroller och checkar från när processen kör (och därmed göra körningen snabbare)

Men det är väl ganska långt från samma sak som att det inte skulle gå att attackera program skrivna i Rust, eftersom hela idén är att lita på att binären är säker och inte kontrollera i realtid borde det inte vara omöjligt att få den att göra helt andra snedsteg efter att man skrivit om lite minne eller så, och sällan är ju en hel tech-stack enskilt skriven i Rust

Menar du att C++ har dessa "kontroller och checkar" under runtime? C++-kompilatorer kollar också syntax och annat under kompilering. Jag förstår inte din första mening eller vad som är ett problem.

Har därtill inte läst "säkert" nånstans, i absoluta termer, utan snarare att det är enklare att koda bra minneshantering och ex multitrådat med Rust än C++ eftersom mycket modernare språk, med bibehållen prestanda. Jag vet inte vilken "kontroll i realtid" som finns iom C++ eller "inte omöjligt att göra helt andra snedsteg", som att det inte är nån vits att byta till ett tjugo år modernare språk, trots att Linux-kernel lutar åt samma håll (om än långsamt) och att MS är ett stort företag.

Visa signatur

| 212965 00 ] == :^D * ==)

Permalänk
Citat:

REFS är både säkrare och mer stabilt än NTFS.

Nja, men det har väl chans att bli det. Senast jag kollade fanns det fortfarande rätt många områden där de inte rekommenderade att köra det här filsystemet.

Men om de äntligen bestämt att filsystemet är redo för massorna är det väl bara att säga grattis och välkommen till 00-talet, Microsoft, där riktiga filsystem vet vad de skrivit! 🙃

Permalänk
Medlem
Skrivet av Moseby:

På tal om stabilitet i Windows 11. Såg av en slump att Microsoft Edge hade typ 37 processer öppna i bakgrunden i Task Manager, när jag stängde processerna så fick jag BSOD. Happ.

Det är så Chromium funkar som driver Edge, Chrome osv. Det är en multi-process arkitektur där varje tab o extension lever som egen process. BSOD är ju skit såklart men 37 processer för Edge är inget att direkt oroa sig för egentligen om man har lite tabbar o några extensions, om de nu var oklart.

Permalänk
Medlem
Skrivet av mpat:

ReFS är inte nytt, det är 10 år gammalt. Jag har kört det på diskar som inte är systemdisken i perioder, men någon av Win 10-uppdateringarna tog bort stödet.

Sen skall det sägas att det de gjort hittills är att byta ut kernel-kod som är C++ mot Rust. De har inte bytt ut någon C-kod, vad jag kan se.

Lite nyfiken, har du tillgång till Windows-källkod?
Vet du om de kör någon tooling för att konvertera C++ till rust automatiskt eller om det sker manuellt?

Det låter ju minst sagt som ett mardrömsprojekt att porta så mycket gammal kod där delar förmodligen saknar test-täckning och att ingen längre vet varför vissa saker fungerar som de gör. "If it aint broke, don't fix it".

Permalänk
Medlem
Skrivet av cp_:

Lite nyfiken, har du tillgång till Windows-källkod?
Vet du om de kör någon tooling för att konvertera C++ till rust automatiskt eller om det sker manuellt?

Det låter ju minst sagt som ett mardrömsprojekt att porta så mycket gammal kod där delar förmodligen saknar test-täckning och att ingen längre vet varför vissa saker fungerar som de gör. "If it aint broke, don't fix it".

Lär vara manuell omskrivning, det är ganska stor skillnad på C++ och Rust.

Som med alla stora projekt så börjar man smått. Det den nya policyn säger är att all ny kod som kräver att man inte har en GC ska skrivas i Rust (m.a.o sånt som annars skulle ha skrivits i C eller C++), det är knappast så att man sätter sig ner och skriver om all kod bara sådär.

Permalänk
Medlem

Misstänker att @Yoshman kan ha en del intressant input här 😎

Visa signatur

Windows 11 Pro | Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Skrivet av Moseby:

På tal om stabilitet i Windows 11. Såg av en slump att Microsoft Edge hade typ 37 processer öppna i bakgrunden i Task Manager, när jag stängde processerna så fick jag BSOD. Happ.

Skrivet av Pettor:

BSOD är ju skit såklart

Om man inte har hårdvarufel ska inte ett program i user space kunna få en modern operativsystemskärna att balla ur. Den alternativa förklaringen, som jag hoppas inte stämmer, är att Microsoft inte lärt sig av sin historia av säkerhetshål och av någon idiotisk anledning gett en webbläsare en bakdörr in i operativsystemets allraheligaste…

Permalänk
Medlem
Skrivet av medbor:

Problemet är väl att Rust är minnessäkert och valideras när kompilationen sker, det ger språket möjlighet att ta bort massor med kontroller och checkar från när processen kör (och därmed göra körningen snabbare)

Men det är väl ganska långt från samma sak som att det inte skulle gå att attackera program skrivna i Rust, eftersom hela idén är att lita på att binären är säker och inte kontrollera i realtid borde det inte vara omöjligt att få den att göra helt andra snedsteg efter att man skrivit om lite minne eller så, och sällan är ju en hel tech-stack enskilt skriven i Rust

Man får ju naturligtvis inte bort alla buggar och säkerhetshål bara för att man skriver i Rust, men många av de vanligare felen i C program som ofta leder till säkerhetsproblem slipper man om man använder Rust, varpå man kan lägga mer energi på att hitta och fixa de återstående typerna av problem.

Permalänk
Medlem

Rust i kärnan låter helt klart vettigt, det torde minska antalet nya Windows-specifika CVE:er en hel del.

Visa signatur

5950X, 3090

Permalänk
Medlem

Hoppas det inte plötsligt gör att en massa äldre program och spel helt plötsligt slutar fungera.

Visa signatur

På Internet sedan 1997.

Permalänk
Medlem
Skrivet av cp_:

Lite nyfiken, har du tillgång till Windows-källkod?
Vet du om de kör någon tooling för att konvertera C++ till rust automatiskt eller om det sker manuellt?

Absolut inte. Det fanns som alternativ när man formaterade disken i antingen Win 7 eller någon av de första Win 10 att man kunde formatera den som ReFS. Det är numer borttaget.

Jag tror inte att de har några verktyg för att konvertera. Jag tror att de är intresserade av idén med Rust i kerneln (för att Linux också kommer att ha det), och för att testa börjar de med att skriva om några existerande bitar som är skrivna i C++. C++ är inget speciellt bra språk för en kernel, och Linux använder det inte alls. MacOS använder ett begränsat subset av C++ i IOkit (gränssnittet för att skriva drivrutiner som ligger i kerneln, något som för övrigt inte heller används så mycket längre) men i övrigt är det bara C. Så vitt jag vet är det bara Windows som har några väsentliga mängder C++ i kerneln.

Visa signatur

5900X | 6700XT

Permalänk
Medlem
Skrivet av Det Otroliga Åbäket:

Om man inte har hårdvarufel ska inte ett program i user space kunna få en modern operativsystemskärna att balla ur. Den alternativa förklaringen, som jag hoppas inte stämmer, är att Microsoft inte lärt sig av sin historia av säkerhetshål och av någon idiotisk anledning gett en webbläsare en bakdörr in i operativsystemets allraheligaste…

Det är ju knappt så att grafikdrivrutiner gör detta nu mer, spelen kraschar inte äns när detta händer.

Hade en Twitch stream på sammtidigt som jag satt och spelade Quake här om dagen.
Rätt som det var så laggade spelet till och streamen kraschade, varpå jag fick meddelande om att drivrutinen hade kraschat.
Jaha, tänkte jag, startade streamen igen, tabbade in i spelet och fortsatte spela.

Visa signatur

www.fckdrm.com - DRM år 2024? Ha pyttsan.

Permalänk
Medlem
Skrivet av medbor:

Problemet är väl att Rust är minnessäkert och valideras när kompilationen sker, det ger språket möjlighet att ta bort massor med kontroller och checkar från när processen kör (och därmed göra körningen snabbare)

Men det är väl ganska långt från samma sak som att det inte skulle gå att attackera program skrivna i Rust, eftersom hela idén är att lita på att binären är säker och inte kontrollera i realtid borde det inte vara omöjligt att få den att göra helt andra snedsteg efter att man skrivit om lite minne eller så, och sällan är ju en hel tech-stack enskilt skriven i Rust

Njae? Tycker det känns väldigt bakvänt med ingångsvinkeln att detta skulle vara "problemet".

Jag skulle snarare se det som att språk, exempelvis just Rust men även andra liknande initiativ, som faktiskt säkerställer säker minneshantering verkar vara en i praktiken nödvändig, men kanske inte i alla lägen tillräcklig, del av lösningen om vi nu ska få en förändring av den beklämmande trenden vi haft i decennier.
Utgår här från "facit" sett till hur det ser ut i dagsläget, där sårbarheter orsakade av minnesfel i främst C++- och C-kod fullkomligt dominerar.

I teorin går det förstås utmärkt att skriva säker kod även i t.ex. C eller C++, men eftersom det som krävs är i princip "tänk på att göra rätt i varje situation, överallt, hela tiden, annars är du rökt" så ser det också ut som det gör... Eftersom folk gör misstag hela tiden så är vi också allihopa kollektivt rökta hela tiden, och är beroende av en aldrig sinande ström av säkerhetsuppdateringar.

Sedan är ju mycket av det Rust gör att faktiskt se till att principer för säker minneshantering är en strukturell del av själva språket och därmed faktiskt efterlevs som en naturlig följd av hur koden skrivs. Man har en definierad livscykel för minnesallokeringar t.ex., inte adhoc-hantering där det inte bara är fullt möjligt att göra fel, det är samtidigt jättesvårt att identifiera alla tänkbara fel eftersom de språkens faktiska regler tenderar att vara väldigt tillåtande.
Man har då t.ex. ownership-konceptet som är fundamentalt för hela språket, som väl kan ses som RAII-upplägget och några principer till, alltihop taget till nästa nivå.

Så jag tycker inte riktigt att det känns riktigt rimligt att få det till att mycket av minnessäkerheten säkerställs redan vid kompileringstillfället skulle vara ett problem. Det är snarare till stor del att man eliminerat adhoc-hanteringen där folk hela tiden hittar vägar att skjuta sig i foten tusen och åter tusen ggr i olika varianter på samma tema, snarare än att man tagit bort en massa validering som gör nytta i runtime.

En enskild komponent skriven i Rust löser ju dock självfallet inte alla problem i ett jätteprojekt som Windows. Men en strategiskt vald komponent kan ju vara extra viktig att den är robust och kan i bästa fall göra en större skillnad än dess andel kod sett till helheten, även om det finns en massa fel på andra håll fortfarande.

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

Det är viktigt att poängtera att "kernel-rust" inte är samma sak som "userspace-rust". Det finns fortfarande en del fördelar men intresserade kan ju läsa en hel del om det på lkml (linux kernel mailing list) inklusive en hel del inlägg från Linus Torvalds. Förmodligen inte direkt applicerbart på nt kerneln men ändå intresant.

Visa signatur

Speldator - X570 | 5900X | 32GB 3600 CL16 | 4090 | 2TB 980 Pro | Win 11 Pro
Server - 3700X | 32GB | 7x5TB RAID-Z2 | TrueNAS

Permalänk
Officiell jultomte
Skrivet av Pettor:

Det är så Chromium funkar som driver Edge, Chrome osv. Det är en multi-process arkitektur där varje tab o extension lever som egen process. BSOD är ju skit såklart men 37 processer för Edge är inget att direkt oroa sig för egentligen om man har lite tabbar o några extensions, om de nu var oklart.

Jag har inte använt Edge sen jag installera Win11. Kör endast Firefox, vilket gör det ännu konstigare? Eller finns det en logisk förklaring?

Visa signatur

PC1: i5-13600kf, 32gb DDR5@6000MHz, GTX 1080, Prime Z690-A, Windows 11
PC2: Ryzen 5 5600X, 16GB DDR4, GTX 1070Ti, ROG STRIX B550-F, Windows 10
SRV1: i5 10500T, 16GB DDR4, Debian
Home Assistant-tråden | Stryktipset

Permalänk
Medlem
Skrivet av Moseby:

Jag har inte använt Edge sen jag installera Win11. Kör endast Firefox, vilket gör det ännu konstigare? Eller finns det en logisk förklaring?

Vill minnas att Edge autostartas (i bakgrunden) för att upplevas som snabbare, såvida man inte aktivt stänger av detta.

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Datavetare

Som jag förstår stödet för Rust i Windows-kärnan handlar det i första läget att överhuvudtaget möjliggöra/tillåta att man använder det programspråket för att skriva som körs i kernel-context.

Kod som körs i kärnan har en del restriktioner som "vanliga" program inte behöver tänka på, t.ex. brukar det inte vara tillåtet med vissa språkkonstruktioner (t.ex. C++ exceptions) och rätt vanligt att man bara får använda heltal (flyttal och SIMD är inte generellt tillåtet, men går att använda i speciella kontext).

Det som gör Rust rätt unikt är att det som i andra språk är "undefined behavior" är hanterat på ett sätt som ger kompileringsfel i Rust. Ett riktigt otrevligt problem som finns i de flesta populära programspråk, inklusive C, C++, C# och Java, är data-race vid användning av flera CPU-kärnor / trådar. I Rust blir ett sådant fel ett kompileringsfel, vilket är otroligt värdefullt.

Ovanpå det kan detta göras på ett sätt med prestanda som är helt jämförbar med kod skriven i t.ex. C och C++.

Sen ska man vara medveten att Rust inte är en magisk silverkula. Rust kan göra sina garantier om allt är skrivet i Rust, vilket definitivt inte är fallet för Windows (eller Linux som numera också tillåter Rust i kärnan). Rust kan också upprätthålla sina garantier om all kod som inte är skrivet i Rust inte innehåller någon bug som orsakar odefinierat beteende, vilket i praktiken inte är fallet (om det vore sant skulle vi t.ex. inte ha off-by-one-or-more buggar som många säkerhetshål kommer från).

Men ändå värdefullt att veta att vissa typer av buggar, om de finns, måste ligga i kod som inte är skrivet i Rust utan i så fall anropas från Rust. Det utesluter delar av systemet man inte behöver analysera i jakten på att hitta felet.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av KroesusSork:

Windows 11 fungerar alldeles utmärkt! Att påstå något annat... ptja... vill man vara snäll kallar man det placebo, vill man vara ärlig kallar man det dumheter.

Det kan ha varit hårt, men återigen - Det är en åsikt på ett forum, finns ingen anledning att kalla det dumheter bara för att du inte håller med
Jag kan fylla upp den kommentaren med följande;

1. Windows 11 kräver en MS-användare
2. Tablet-läget är ljusår efter W10
3. Startmenyn är värdelös
4. Action Center finns inte kvar och är ersatt av något som är objektivt sämre.
5. Utforskaren i 11an är även den helt enkelt sämre.
6. De gånger jag har uppgraderat så har det resulterat i en dator som har problem allt ifrån strömhantering till skärm, upplösning och frekvens.

Visa signatur

Krusidullen är stulen

Permalänk
Medlem
Skrivet av SuperSverker:

Det kan ha varit hårt, men återigen - Det är en åsikt på ett forum, finns ingen anledning att kalla det dumheter bara för att du inte håller med
Jag kan fylla upp den kommentaren med följande;

1. Windows 11 kräver en MS-användare
2. Tablet-läget är ljusår efter W10
3. Startmenyn är värdelös
4. Action Center finns inte kvar och är ersatt av något som är objektivt sämre.
5. Utforskaren i 11an är även den helt enkelt sämre.
6. De gånger jag har uppgraderat så har det resulterat i en dator som har problem allt ifrån strömhantering till skärm, upplösning och frekvens.

Win11 har också gigantiska latency problem i ACPI på laptops som kan resultera i oanvändbarhet för ljudproduktion och allmänt lagg. Min kraftfulla laptop för 30k fryser helt i fem sekunder när en stor fil ska laddas, hackar till i ljudet vid musik och film uppspelning var femte sekund, och har DPC latency på över 15k flera gånger i minuten. FPS spel är bara att glömma.

Bytte till Win10 och det är som natt och dag.