Följ Black Week på SweClockers

Bristande säkerhet i öppna källkod-projekt

Permalänk
Medlem
Skrivet av Dumsnuten:

Nja. Din egna källa visar på att operativsystem som bygger på Öppen källkod har ett mycket större antal kända sårbarheter än Operativsystem med stängd källkod. Tittar du på t.ex. Chrome (ca 66% av användarna) och Firefox (ca 3%) har Chrome bara ca 30% fler kända sårbarheter än Firefox. Men du har 20x antalet Chrome -användare än Firefox.

Utifrån källan går det inte att dra den här slutsatsen, den visar bara råa siffror utan någon analys.

De senaste åren har det upptäcks många fler sårbarheter i Chrome än i Firefox. Att det historiskt har upptäckts fler sårbarheter i Firefox kan bl.a bero på att Chrome är mycket nyare och har undvikit vissa fallgropar som Firefox hade/har. Firefox har väl gått över till Rust i en del av koden, så mängden minnesrelaterade CVEs borde gått ner.
Firefox har historiskt varit mer öppen vad det gäller extensions och browserändringar, det ger en större attackyta.

Firefox kanske har haft ett bättre bug bounty program. Nu verkar det vara rätt så likt.

Osv.

Permalänk
Medlem
Skrivet av Dumsnuten:

Nja. Din egna källa visar på att operativsystem som bygger på Öppen källkod har ett mycket större antal kända sårbarheter än Operativsystem med stängd källkod.

Det blir ju dock lite galet att jämföra siffror för en distribution med *massor* av applikationer inräknade med t.ex. Windows där så ej är fallet (jag kan ha missuppfattat, men det lät så?).

Skrivet av Elgot:

Så enkelt är det väl inte att dra några slutsatser heller? Sannolikt beror det på hur enkelt det är att granska koden (öppen källkod är ju extremt tillgänglig), hur intressant det är att hitta en sårbarhet (många användare är troligen intressantare), hur stor ära som står på spel (att hitta något i linuxkärnan smäller nog högt, till exempel) och vilken kvalitet koden faktiskt håller.

Det som verkar driva på är väl främst vad det går att få pengar för. Och då är det ju saker som många använder, rent generellt.
Och i det läget så kan man ju kosta på sig att ha folk som kan läsa assembly...

Så nej, jag upplever inte heller att det är någon milsvid skillnad för de viktigaste projekten. Men det är olika dynamik, oavsett projektstorlek.

Skrivet av Dumsnuten:

Tittar du på t.ex. Chrome (ca 66% av användarna) och Firefox (ca 3%) har Chrome bara ca 30% fler kända sårbarheter än Firefox. Men du har 20x antalet Chrome -användare än Firefox.

Skrivet av Elgot:

Chrome är ju till stora delar också öppen källkod, för övrigt.

Ja, Chrome är *mestadels* open source, och fel i "Chrome" är oftast i praktiken fel i Chromium och då finns ju samma fel typiskt även i Edge, Brave, Vivaldi, Opera, etc...

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
Skrivet av Elgot:

Problemet här är ju dock att man inte vill avslöja något om vad man gör. Annars använder man gärna öppen källkod (och tittar avundsjukt på hur smidigt utvecklingen går).

Det kan jag förstå, min poäng var mer att det finns lägen där icke open-source är ett bättre alternativ.

Visa signatur

Sweclockers 2024:
"
Eftersom vi tillhandahåller en öppen diskussionsplattform har vi ett berättigat intresse av att behålla användargenererat innehåll även efter en eventuell radering eller anonymisering av ditt användarkonto. Vi kommer även att fortsätta lagra vissa uppgifter för att upprätthålla säkerheten och förhindra missbruk av våra tjänster.
"

Permalänk
Hedersmedlem
Skrivet av Thor:

Det kan jag förstå, min poäng var mer att det finns lägen där icke open-source är ett bättre alternativ.

Ja, men det är ett kompromissande. Man är typiskt medveten om att det är problematiskt att inte fler granskar koden, men det finns fler faktorer att beakta.

Permalänk
Medlem
Skrivet av pine-orange:

Artikeln baseras på det som flera myndigheter faktiskt har tittat på, jag tycker inte SweC behöver få öppen källkod projekt att framstå som bättre bara för att du anser det. Du behöver bevisa det mha källor eller någon trovärdig metodik om du vill använda egen data.
Jag tycker det är lite förenklat från myndigheternas håll att bara titta på minnessäkra och minnesosäkra språk. Det går att skriva minnesosäker kod i minnessäkra språk och det finns många hjälpmedel för att säkra upp minnesosäkra språk.
Det är inte alls säkert att det är så. Bara för att många fler ögon kan titta på koden betyder inte att det är det som faktiskt händer. Om jag tittar på statistik om CVEs per platform verkar det vara rätt så blandat.

Skrivet av Thor:

Jag tycker vi bokar in globen så kan du föreläsa för världens militärindustrier om hur bra det är med öppen källkod så får vi se hur många som dyker upp.

Givetvis så fungera stängd källkod skit om det hanteras fel, på tal om att brödrostar fungerar uselt under vatten.

Hur är det med läsförståelsen? Dumsnuten sammanfattade det hela väldigt bra på föregående sida. Det finns ingenting som visar på att det skulle finnas ”bristande säkerhet i viktiga öppen källkod-projekt”.

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Datavetare
Skrivet av pine-orange:

Jag tycker det är lite förenklat från myndigheternas håll att bara titta på minnessäkra och minnesosäkra språk. Det går att skriva minnesosäker kod i minnessäkra språk och det finns många hjälpmedel för att säkra upp minnesosäkra språk.
Det är inte alls säkert att det är så. Bara för att många fler ögon kan titta på koden betyder inte att det är det som faktiskt händer. Om jag tittar på statistik om CVEs per platform verkar det vara rätt så blandat.

Det är sant att de flesta minnesäkra språk har något sätt att slå av dessa verifikationer. Men det viktiga här är: det är opt-out och det är väldigt ovanligt att det används i verkliga program. Om det visar sig att man ändå får den här typen av bug i ett minnesäkert språk så vet man ju att det måste finnas någonstans när man är i "unsafe context" alt. anropar icke-minnessäkert bibliotek.

Och sant att det går att göra statisk analys samt rätt mycket göra "opt-in" för att få liknande checkar i C++. Problemet är just att det är "opt-in" och det räcker med att man låter bli på ett enda ställe som råkar ha en bug så har man ett potentiellt säkerhetshål.

Skrivet av Alexraptor:

Jag tror du har missuppfattat lite. Jag menade inte alls på att det var dåligt, utan att C++ ger dig mer direkt kontroll över minneshantering, vilket så klart medför bättre möjligheter till optimering.

Myndigheterna tycker att alla bör använda minnessäkra programmersingspråk, men specifikt spelutveckling har ju en lång tradition av en massa fulhacks för att maximera prestanda, som tex gamla goa 0x5F3759DF

Det finns helt klart en del saker man kan göra i C++ som ibland har relevans för spel som bara är möjligt med "unsafe C#".

Men på det stora hela handlar det mest om att ha koll på vad man gör. C++ och C# kan prestera rätt snarlikt i ett spel-kontext, problemet är att man behöver skriva C#-koden på ett sätt som inte är "normalt" för typiskt back-end kod skrivet i språket.

Sett till ren beräkningskraft lär det skilja väldigt lite mellan samma algoritmer skrivna i C++ eller C#. Spel använder typiskt arena-allokatorer och andra custom-allokererare i de mest prestandakritiska delarna, är fullt möjligt att implementera det inom ramen av "normal" C#.

Sen finns ändå en potentiell lite extra overhead i C# då den alltid kollar att man inte skriver utanför minnet (går att stänga av med "unsafe"), i C++ är det opt-in att ha en sådan check (och det normala är att man inte opt-in detta, vilket potentiellt ger problem som diskuteras här).

Sen finns det helt klart en historik med rätt coola algoritmer i spelvärlden. Det du nämner ser rätt "magiskt" ut, men är egentligen bara en applikation av logaritmlagar kopplat med hur flyttal representeras på våra CPUer. Och det är också ett exempel på en "optimering" som helt gått ur tiden, både x86_64 och ARM64 har specifika instruktioner som beräknar just 1/sqrt(x) som är snabbare.

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 Yoshman:

Det finns helt klart en del saker man kan göra i C++ som ibland har relevans för spel som bara är möjligt med "unsafe C#".

Men på det stora hela handlar det mest om att ha koll på vad man gör. C++ och C# kan prestera rätt snarlikt i ett spel-kontext, problemet är att man behöver skriva C#-koden på ett sätt som inte är "normalt" för typiskt back-end kod skrivet i språket.

Sett till ren beräkningskraft lär det skilja väldigt lite mellan samma algoritmer skrivna i C++ eller C#. Spel använder typiskt arena-allokatorer och andra custom-allokererare i de mest prestandakritiska delarna, är fullt möjligt att implementera det inom ramen av "normal" C#.

Sen finns ändå en potentiell lite extra overhead i C# då den alltid kollar att man inte skriver utanför minnet (går att stänga av med "unsafe"), i C++ är det opt-in att ha en sådan check (och det normala är att man inte opt-in detta, vilket potentiellt ger problem som diskuteras här).

Sen finns det helt klart en historik med rätt coola algoritmer i spelvärlden. Det du nämner ser rätt "magiskt" ut, men är egentligen bara en applikation av logaritmlagar kopplat med hur flyttal representeras på våra CPUer. Och det är också ett exempel på en "optimering" som helt gått ur tiden, både x86_64 och ARM64 har specifika instruktioner som beräknar just 1/sqrt(x) som är snabbare.

Jo tack, jag är själv utbildad spelprogrammerare.

Unity är i det här kontextet en intressant spelmotor, då den är byggd med C++ men har C# som ett scripting språk. Dock har Unity moduler som ger en åtkomst till direkt minneshantering, som t.ex Unity.Collections som har klasserna NativeArray och NativeList, vilka används flitigt inom Unity DOTS.

Visa signatur

| Corsair Obsidian 1000D | AMD Ryzen 9 5950x med Corsair iCue H170i Elite Capellix | Asus ROG Crosshair VIII Extreme | G.Skill Trident Z Royal, 4x16GB 3600MHz C16 | ROG Strix LC GeForce 3090 Ti OC Edition 24GB | 1x Seagate FireCuda 520 1TB, 1x Seagate FireCuda 520 2TB, Seagate FireCuda 530 2TB, 1x Seagate Ironwolf 16TB HDD | Corsair H1500i | XG27AQM|

Permalänk
Medlem
Skrivet av Dimman:

Hur är det med läsförståelsen? Dumsnuten sammanfattade det hela väldigt bra på föregående sida. Det finns ingenting som visar på att det skulle finnas ”bristande säkerhet i viktiga öppen källkod-projekt”.

Skrivet av Rapporten:

Hence, we determine that most critical open source projects analyzed, even those written in memory-safe languages, potentially contain memory safety vulnerabilities. This can be
caused by direct use of memory-unsafe languages or external dependency on projects that use memory-unsafe languages. Additionally, low-level functional requirements to disable
memory safety may create opportunities for memory safety vulnerabilities in code written in otherwise memory-safe languages. These limitations highlight the need for continued
diligent use of memory safe programming languages, secure coding practices, and security
testing.

Bristande säkerhet handlar i det här fallet inte om att det måste ha hänt något, det handlar om att risken är påtaglig att någon säkerhetsincident kan inträffa. Anledningen till den förhöjda risken är användningen av minnesosäkra språk. Det är som när det sker en inspektion och det finns några saker att förbättra. Syftet är att förebygga, innan något allvarligt inträffar.

Permalänk
Datavetare
Skrivet av Alexraptor:

Jo tack, jag är själv utbildad spelprogrammerare.

Unity är i det här kontextet en intressant spelmotor, då den är byggd med C++ men har C# som ett scripting språk. Dock har Unity moduler som ger en åtkomst till direkt minneshantering, som t.ex Unity.Collections som har klasserna NativeArray och NativeList, vilka används flitigt inom Unity DOTS.

Just i fallet NativeArray/NativeList får man egentligen inte någon extra prestanda så länge man bara befinner sig i C# kontext jämfört med System.Collections.Generic. Är inte helt med på exakta detaljer kring NativeArray, men gissar att det primärt handlar om att man där allokerar en "vanligt C/C++ buffert" där den (virtuella) adressen är fixerad så länge man inte friar minne.

Det man slipper i hoppet mellan C# och C/C++ med NativeArray är att "låsa fast" minnet medan man befinner sig i C/C++ kontext (så inte GC får för sig att flytta data i virtuellt RAM space).

Ur det "säkerhetsperspektiv" denna artikel handlar om är det ingen skillnad, även NativeArray verifierar att man inte skriver utanför gränserna. Men en rätt trevlig sidoeffekt man typiskt får från de egenskaper man behöver i ett GC-språk är att en "pekare" inte är pekare i C/C++ mening, utan är mer det man i C/C++ kallar "handles", det trevliga är att sådant minne kan flyttas runt i (virtuellt) address-space utan att "pekare" till minnet blir ogiltiga.

Sen är Unitys användning av C++ också ett målande exempel på att användandet av C++ inte nödvändigtvis betyder bättre prestanda. Så länge man inte använder IP2CPP kör man ju en (mono-baserad) virtuell maskin, d.v.s. helt "normal" .NET/C# beteende.

Men prestandamässigt är VM:en Unity använder rätt kass ställd mot .NET-core ramverket (som är nästan helt skrivet i C# sedan övergången till Roslyn). Gjorde några snabbtester, .NET 8 är lika snabb eller snabbare än Unity med IL2CPP som i sin tur är nästan dubbelt så snabb som "vanliga" Unity maskineriet (som är C++ baserat under huven).

Det kändes rätt avlägset på 90-talet när man sa "det är teoretiskt möjligt att Java med JIT kommer kunna bli lika snabbt eller till och med snabbare än C/C++". Man var inte nära under många år, men det har hänt väldigt mycket inom det området under de snart 30 år det gått sedan Java lanserades. Idag är faktiskt de bästa JVM:erna och CLR:erna på den prestandanivå man pratade om.

Kanske inte super-relevant till just spel, men finns faktiskt en del optimeringar relaterade till multi-thread som är möjliga när man har en GC men som inte kan göras utan explicit synkronisering med avsaknad av GC (för att undvika ABA-problemet).

DOTS är ju ett annat exempel (utöver modern JIT) där man i praktiken kan få bättre prestanda i högre nivå ramverk jämfört med normal C/C++. Visst kan man hantera SOA och fördelning av data på ett säkert och optimalt sätt direkt i C/C++, men det är otroligt komplex och lätt att göra fel. DOTS, eller mer ECS, sätter en del krav på hur man skriver sitt program och p.g.a. av det kan man göra rätt coola optimeringar (inte helt olikt Nvidia CUDA kan köra skalär kod på tusentals "CUDA-kärnor").

Visa signatur

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

Permalänk

Angående C++ så är det inte utdöende inom i princip allt där prestanda inte är superviktigt?

Alltså folk eftersträvar en lösning som är så billig som möjligt, det ska vara en lösning som folk lätt kan lära sig, många ska kunna koda den och bra säkerhet emot misstag ska finnas.
Ofta så är dessutom programmering bara en delkunskap man ska ha utan man behöver ha domänkunskap av det som man ska styra.

Företag brukar inte gilla detta att folk gör mer komplicerade lösningar i onödan så att de på något sätt blir outbytbar, tvärtom ska lösningen vara sådan så att fler personer har möjlighet att fortsätta med så kort uppstartssträcka som möjligt.
Skräckexemplet kan vara elektrikern som gör en c++ lösning och sedan ska de hitta en annan behörig elektriker som också kan c++.

Permalänk
Medlem
Skrivet av Dimman:

Detta måste väl vara ett av Swec’s lågvattenmärken till artikel? Peka ut opensource-projekt som osäkra när det i realiteten sannolikt finns magnituder fler kommersiella och closed source-projekt som bättre hade passat titeln.

Om något så bidrar öppen källkod till ökad säkerhet. Jag tycker mig exempelvis läsa betydligt oftare om säkerhetsproblem i Windows än i Linux…

Jag jobbar i branschen och jag fattar gisten av artikeln, men tycker vinklingen är ganska vidrig.

Sweclockers är teknikbloggarnarnas nya Aftonbladet.

Visa signatur

Spara på minnen, inte saker.

Permalänk
Medlem
Skrivet av Hund:

Sweclockers är teknikbloggarnarnas nya Aftonbladet.

Skrivet av pine-orange:

Bristande säkerhet handlar i det här fallet inte om att det måste ha hänt något, det handlar om att risken är påtaglig att någon säkerhetsincident kan inträffa. Anledningen till den förhöjda risken är användningen av minnesosäkra språk. Det är som när det sker en inspektion och det finns några saker att förbättra. Syftet är att förebygga, innan något allvarligt inträffar.

Permalänk
Medlem
Skrivet av Dimman:

Hur är det med läsförståelsen? Dumsnuten sammanfattade det hela väldigt bra på föregående sida. Det finns ingenting som visar på att det skulle finnas ”bristande säkerhet i viktiga öppen källkod-projekt”.

Om du tycker det är acceptabelt att utgå från reaktivitet när det gäller säkerhet så säger det mer om dig än mig. Saker ändrar på sig, varesig du tycker jag är en dumsnut eller ej

Visa signatur

Sweclockers 2024:
"
Eftersom vi tillhandahåller en öppen diskussionsplattform har vi ett berättigat intresse av att behålla användargenererat innehåll även efter en eventuell radering eller anonymisering av ditt användarkonto. Vi kommer även att fortsätta lagra vissa uppgifter för att upprätthålla säkerheten och förhindra missbruk av våra tjänster.
"

Permalänk
Medlem
Skrivet av Thor:

Om du tycker det är acceptabelt att utgå från reaktivitet när det gäller säkerhet så säger det mer om dig än mig. Saker ändrar på sig, varesig du tycker jag är en dumsnut eller ej

Det är inget jag har påstått eller någonsin skulle påstå. Jag har bland annat utvecklat en säker remote access-lösning för ett världsledande bolag med miljontals kunder för referens. Dumsnuten är alltså ett användarnamn på en Swec-medlem. Så var det det här med läsförståelsen

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Medlem
Skrivet av Dimman:

Det är inget jag har påstått eller någonsin skulle påstå. Jag har bland annat utvecklat en säker remote access-lösning för ett världsledande bolag med miljontals kunder för referens. Dumsnuten är alltså ett användarnamn på en Swec-medlem. Så var det det här med läsförståelsen

Fair enough!

Visa signatur

Sweclockers 2024:
"
Eftersom vi tillhandahåller en öppen diskussionsplattform har vi ett berättigat intresse av att behålla användargenererat innehåll även efter en eventuell radering eller anonymisering av ditt användarkonto. Vi kommer även att fortsätta lagra vissa uppgifter för att upprätthålla säkerheten och förhindra missbruk av våra tjänster.
"

Permalänk
Medlem
Skrivet av Dimman:

Det är inget jag har påstått eller någonsin skulle påstå. Jag har bland annat utvecklat en säker remote access-lösning för ett världsledande bolag med miljontals kunder för referens. Dumsnuten är alltså ett användarnamn på en Swec-medlem. Så var det det här med läsförståelsen

Själv är jag inte utvecklare utan jobbar med nätverk och säkerhet.

Ska förtydliga min poäng då min retorik varit bristfällig hittills.

Open-source har absolut starka fördelar men tillika så svagheter. Beroende på vad det är som ska uppnås är det inte nödvändigtvis passande att utgå från open-source.

Vad man ska uppnå dikterar, likaså hur man hanterar utvecklingen. Ett uselt hanterat open-source projekt är garanterat mer osäkert än ett korrekt hanterat projekt som inte är open-source.

Om allt hanteras som det ska så är open-source rätt val i en majoritet av fall, dock inte alla. Men allt hanteras inte korrekt, misstag görs, genvägar tas. Det är människor vi pratar om. För att inte tala om hur organisationerna som bygger sin verksamhet på brottslighet blir allt duktigare på att nyttja sårbarheter (inte bara kodmässiga sådana).

Visa signatur

Sweclockers 2024:
"
Eftersom vi tillhandahåller en öppen diskussionsplattform har vi ett berättigat intresse av att behålla användargenererat innehåll även efter en eventuell radering eller anonymisering av ditt användarkonto. Vi kommer även att fortsätta lagra vissa uppgifter för att upprätthålla säkerheten och förhindra missbruk av våra tjänster.
"

Permalänk
Medlem
Skrivet av Thor:

Själv är jag inte utvecklare utan jobbar med nätverk och säkerhet.

Ska förtydliga min poäng då min retorik varit bristfällig hittills.

Open-source har absolut starka fördelar men tillika så svagheter. Beroende på vad det är som ska uppnås är det inte nödvändigtvis passande att utgå från open-source.

Vad man ska uppnå dikterar, likaså hur man hanterar utvecklingen. Ett uselt hanterat open-source projekt är garanterat mer osäkert än ett korrekt hanterat projekt som inte är open-source.

Om allt hanteras som det ska så är open-source rätt val i en majoritet av fall, dock inte alla. Men allt hanteras inte korrekt, misstag görs, genvägar tas. Det är människor vi pratar om. För att inte tala om hur organisationerna som bygger sin verksamhet på brottslighet blir allt duktigare på att nyttja sårbarheter (inte bara kodmässiga sådana).

Jag håller helt med dig i det du skriver ovan. Jag har jobbat med/mot open source-projekt både privat och professionellt de senaste 15-20 åren.

Huvudpoängen var att rubriken är dåligt formulerad som inte gör skillnad på faktum och risk. Det står jag fast vid.

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Medlem
Skrivet av Dimman:

Jag håller helt med dig i det du skriver ovan. Jag har jobbat med/mot open source-projekt både privat och professionellt de senaste 15-20 åren.

Huvudpoängen var att rubriken är dåligt formulerad som inte gör skillnad på faktum och risk. Det står jag fast vid.

Efter omläsning av både artikel och tråd så håller jag klart med om tvivelaktig presentation av redaktionen. Hoppas med att lågvattenmärket är uppnått, men vi får väl se hur det blir med det.

Jag hängde upp mig för mycket på detaljer, även om det jag fokuserade på är relevant till ämnet. Samt läste vissa inlägg/svar slarvigt vilket producerade några av mina mindre genomtänkta svar. Ibland blir det fel helt enkelt, ursäkta min låga nivå där ett tag.

Visa signatur

Sweclockers 2024:
"
Eftersom vi tillhandahåller en öppen diskussionsplattform har vi ett berättigat intresse av att behålla användargenererat innehåll även efter en eventuell radering eller anonymisering av ditt användarkonto. Vi kommer även att fortsätta lagra vissa uppgifter för att upprätthålla säkerheten och förhindra missbruk av våra tjänster.
"