Taggat med: ASLR

NSA rekommenderar minnes-säkra programspråk

NSA rekommenderar minnes-säkra programspråk

Den amerikanska säkerhetsmyndigheten NSA har gått ut och varnat för programspråk som ej är minnes-säkra såsom C och rekommenderar en övergång till språk såsom C#, Go, Java, Ruby, Rust och Swift. Men bara för att man väljer ett programspråk som är minnes-säkert så betyder det inte per automatik att säkerhetsbrister inte kan uppstå, vilket också NSA framhäver. Även så kan språk såsom listade ovan anropa bibliotek som ej är minnes-säkra.

Även kan dessa programspråk leda till sämre prestanda på grund av funktioner såsom garbage collection (GC).

NSA rekommenderar att använda flertalet verktyg som utför SAST och DAST, dvs statisk och dynamisk applikationssäkerhetstestning. För att fånga upp bl.a. säkerhetsbrister och minnesproblem. En annan sak som framgår är även betydelsen av att använda anti-exploitfunktioner såsom Control Flow Guard (CFG), Address Space Layout Randomization (ASLR) och Data Execution Prevention (DEP).

Att just NSA går ut med dessa rekommendationer kommer inte direkt som någon nyhet eftersom säkerhetskritiska projekt såsom Tor har valt att bygga en ny implementation (Arti) helt i Rust. Programspråket C var ett givet val 2001 när utvecklingen av Tor påbörjades.

Genom att använda programspråk som C#, Go, Java, Ruby eller Rust så kan nästan hela buggklasser elimineras. Matt Miller på Microsoft berättade vid BlueHat-konferensen 2019 att mellan åren 2006 till 2018 berodde 70% av deras sårbarheter på minnessäkerhetsproblem. Google hittade också en liknande procentandel av minnessäkerhetssårbarheter under flera år i Chrome.

Bild från Microsofts presentation (länkad ovan)

% of memory safety vs. non
memory safety CVEs by patch year

Det ska vara kostsamt för angripare att identifiera och utnyttja säkerhetsbrister. För utvecklare ska det vara enkelt att göra rätt och verktyg ska finnas för att varna eller göra det omöjligt att göra säkerhetsfel.

Här kan du ladda hem PDF:en från NSA:

NSA - Software Memory Safety.png

Surfa anonymt med nya Tails 3.0

För några dagar sedan så släpptes version 3.0 av det anonyma och säkra operativsystemet Tails. Tails är en plattform som baseras på Linux och underlättar för dig som vill vara anonym och säker. Anonymiteten uppnås genom en integration med Tor och dess Tor Browser.

Stöd för 32-bitarsdatorer har också försvunnit, detta på grund av att säkerhetshöjande tekniker såsom PIE, Position-independent executable (vilket ger ASLR) ska fungera optimalt.

Flertalet mjukvaror är uppgraderade till nya versioner:

  • Tor Browser är uppgraderad till 7.0.1
  • KeePassX från 0.4.3 till 2.0.3.
  • LibreOffice från 4.3.3 till 5.2.6
  • Inkscape från 0.48.5 till 0.92.1
  • Audacity från 2.0.6 till 2.1.2
  • Enigmail från 1.8.2 till 1.9.6
  • MAT från 0.5.2 till 0.6.1
  • Dasher från 4.11 till 5.0
  • git från 2.1.4 till 2.11.0

Även så baseras denna nya version 3.0 på Debian 9.0 kodnamn Stretch. Förutom en ny version av Debian så har dialogrutan för uppstart fått sig ett upplyft, som numera ser ut så här:

Om du vill konfigurera ett administratörslösenord (root) så går det att göra genom att trycka på + tecknet nere i vänstra hörnet och då får du upp följande:

Här kan du se en kort video där jag testar Tails 3.0:

För samtliga nyheter sam nedladdning av ISO-fil se följande länk:

https://tails.boum.org/news/version_3.0/index.en.html

Test av supersäkra operativsystemet OpenBSD

OpenBSD 5.9

Skärmdump från OpenBSD 5.9

För några dagar sedan så släpptes en ny version av det säkra operativsystemet OpenBSD. Denna nya 5.9-version har en ett antal intressanta nya säkerhetsfunktioner såsom pledge. Pledge är en ny typ av sandlåde-liknande funktionalitet som begränsar vad enskilda program får och inte får göra.

Pledge är enkelt att implementera i sitt program och följer ett regelverk som berättar om programmet får öppna nätverkskommunikation, skriva/läsa filer osv. Kontrollen sker sedan i kerneln att programmet håller sig inom ramarna.

Viktigt att notera är också att den nya pledge-funktionen inte är någon silverkula som löser alla problem. Men som många andra saker som OpenBSD tar till sig så höjer det säkerheten i det stora hela tillsammans med tekniker såsom W^X, ASLR och ProPolice.

För att demonstrera hur enkelt det är så titta på följande kodrader som begränsar vad kommandot ping får göra:

if (options & F_NUMERIC) {
  if (pledge("stdio inet", NULL) == -1)
     err(1, "pledge");
 } else {
  if (pledge("stdio inet dns", NULL) == -1)
     err(1, "pledge");
 }

Första argumentet till pledge()-anropet är en lista med tillåta anrop, se man-sidan för mer info om dessa:

  • OpenBSD 59 drwxorxstdio – Grundläggande systemanrop (syscalls) tillåts. Såsom close, dup, mmap, pipe osv.
  • inet – Tillåter nätverkskommunikation med anrop såsom socket, listen, bind, getpeername.
  • dns – Tämligen självförklarande. behövs enbart om användaren ej specificerar argumentet -n

Det var väl enkelt? Än så länge använder sig 453 av 707 program pledge, av OpenBSD:s grundinstallerade program. Även så använder sig använder 14 st externa program av pledge såsom mutt, chrome och i3.

Kan även rekommendera följande presentation av Theo de Raadt som förklarar pledge närmare: openbsd.org/papers/hackfest2015-pledge/

Jag testar OpenBSD under VirtualBox och det tar under 10 minuter att ladda hem samt komma igång med operativsystemet. Installationsförfarandet har blivit avsevärt mycket smidigare på senare år med exempelvis automatiskt partitionslayout.

Här kan du ladda hem install59.iso som du bränner ut eller startar upp din virtuella maskin med: ftp.eu.openbsd.org/pub/OpenBSD/5.9/i386/install59.iso

Jag har även skrivit tidigare om att OpenBSD ersatt sudo med doas, läs här.

Andra intressanta funktioner i denna nya 5.9-version är:

  • ESP i IPSec stödjer Chacha20-Poly1305
  • W^X är nu helt forcerat i i386-kerneln
  • Säkerhetsfixar till LibreSSL, OpenSSH och OpenSMTPD
  • Miljövariabeln HOSTALIASES är borttaget från libc som säkerhetsåtgärd
  • Xen domU stöd så att OpenBSD lirar på Amazon EC2

Avslutningsvis så kan följande bild representera OpenBSD-utvecklarnas arbete med pledge (enligt Theo de Raadt själv):

pledge theo de raadt