Taggat med: openssh

OpenSSH Pre-Auth Double Free

OpenSSH

En ny sårbarhet har uppdagats i OpenSSH. Denna sårbarhet återfinnes innan autentisering (pre-auth) och beror på att allokerat minne frigörs dubbelt. Sårbarheten har CVE-2023-25136 och den version som av OpenSSH som åtgärdar sårbarheten släpptes 2:a Februari 2023, version 9.2.

Det är i dagsläget möjligt att genomföra en DoS (krasha opensshd) men oklart om det skulle vara möjligt att göra något mer såsom RCE (Remote Code Execution). Dock så använder opensshd Privilege Separation på många plattformar samt sandboxning (pledge, chroot osv). Proof-of-concept kod är släppt för att utför DoS av opensshd version < 9.2.

Eftersom OpenSSH är så otroligt populärt så kommer troligtvis en hel del resurser läggas på att försöka utnyttja denna sårbarhet.

OpenSSH 9.2 release notes.

Kvantdatorsäker algoritm i nya OpenSSH

OpenSSH

Den nya versionen 9.0 av OpenSSH som släpptes i fredags innehåller en spännande ny algoritm. Som standard framöver kommer en ny algoritm användas för att utbyta nycklar nämligen: NTRU Prime + X25519 ECDH. Dessa två i kombination ger ett skydd som försvårar nya okända attacker mot NTRU Prime samt försvårar även för forcering med hjälp av kvantdatorer.

Även om det just nu är osannolikt att kvantdatorer knäcker något i realtid just nu så finns alltid problemet med ”spela in nu, knäck senare” kvar. Därav denna tidiga åtgärd från OpenSSH-teamet.

Gällande standardiseringen från NIST PQC så är NTRU Prime en av finalisterna och blir det inte NTRU Prime som blir standard enligt NIST, så kommer OpenSSH troligtvis även att stödja den andra PQ-algoritmen. De andra två finalisterna är CRYSTALS-KYBER och Classic McEliece.

Från OpenSSH changelog:

* ssh(1), sshd(8): use the hybrid Streamlined NTRU Prime + x25519 key
   exchange method by default ("[email protected]").
   The NTRU algorithm is believed to resist attacks enabled by future
   quantum computers and is paired with the X25519 ECDH key exchange
   (the previous default) as a backstop against any weaknesses in
   NTRU Prime that may be discovered in the future. The combination
   ensures that the hybrid exchange offers at least as good security
   as the status quo.

   We are making this change now (i.e. ahead of cryptographically-
   relevant quantum computers) to prevent "capture now, decrypt
   later" attacks where an adversary who can record and store SSH
   session ciphertext would be able to decrypt it once a sufficiently
   advanced quantum computer is available.

Det kommer troligtvis att dröja ett tag innan OpenSSH 9.0 dyker upp i mer populära Linux-distar.

Test av nya OpenBSD 6.1

Ett av världens kanske säkraste operativsystem är nu ute i en ny version. Det handlar så klart om OpenBSD och den nya versionen som har fått versionsnummer 6.1:

We are pleased to announce the official release of OpenBSD 6.1.
This is our 42nd release. We remain proud of OpenBSD’s record of more than twenty years with only two remote holes in the default install.

Denna nya version innehåller ett antal höjdpunkter som är enligt följande:

  • syspatch för enkel binärpatchning av i386 samt amd64-system. Laddar hem och installerar nya säkerhetsfixar.
  • acme-client för den som vill skapa Let’s Encrypt SSL-certifikat.
  • xenodm som är en ny standard display manager
  • Libressl samt OpenSSH som innehåller mängder med förbättringar och säkerhetsuppdateringar.
  • Det är nu möjligt att köra Linux under virtualiseringsmotorn vmm/vmd som följer med som standard i OpenBSD
  • Förbättrat stöd för trådlösa nätverkskort (802.11)

Att ladda hem och installera OpenBSD går snabbt och smidigt. ISO-filen är enbart 200 MB och själva installationen tar max 5 minuter för den som är någorlunda ninja på BSD:

Sedan när systemet är installerat och Chromium installerat så testar jag att surfa in till kryptera.se.

Givetvis fungerar även doas (istället för sudo), figlet, xeyes och xlogo tillfredsställande:

OpenBSD 6.1 skärmdump
OpenBSD 6.1 skärmdump

Jag har även tidigare testat OpenBSD, läs mer här:

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

🔧 Guide: Så gör du SSH säkrare

OpenSSHAtt SSH är en otroligt använd tjänst råder ingen tvekan om. Nästan alla som har någon form av server använder sig av SSH.

Denna guide börjar med klientsäkerhet för att sedan ge rekommendationer för server-sidans konfiguration. Vi kommer främst att fokusera på de algoritmer som används.

SSH klientsäkerhet

Först och främst ska du se till att du har en relativt ny SSH-klient som du ansluter med. Den som följer med Mac OS X är gammal och stödjer bara gamla krypton, så därför är det lämpligt att uppgradera till en nyare version med hjälp av brew.

Denna följer med Mac OS X Yosemite:

$ ssh -V
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Och för att installera en nyare version:

$ brew install openssh --with-brewed-openssl --with-keychain-support

Sedan så kontrollerar vi versionen igen:

$ ssh -V
OpenSSH_6.8p1, OpenSSL 1.0.2a 19 Mar 2015

Nu ser det betydligt bättre ut. Nästa steg är att generera nya Ed25519 nycklar som vi kan använda:

$ ssh-keygen -t ed25519 -C "min@epost" -a 100 -o

Om du i ovan steg får ett felmeddelande om att algoritmen inte stöds så har du fel sökväg till ssh-keygen binären. Testa då /usr/local/bin/ssh-keygen istället.

Glöm framförallt inte att använda ett lösenord för att skydda din privata nyckel.

Vi ska även ändra i vår klient-konfigurationsfil så vi enbart stödjer SSH version 2 samt ett antal algoritmer som vi litar mer på:

Host *
    PubkeyAuthentication yes
    Protocol 2
    HostKeyAlgorithms [email protected],[email protected],[email protected],ssh-ed25519,ssh-rsa
    Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
    MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected]

Du hittar SSH-konfigurationsfilen i din hemkatalog och sedan .ssh/config

SSH serversäkerhet

Först och främst måste du se till att ha en relativt ny version av OpenSSH. Du bör ha minst version 6.5 som släpptes i  Januari, 2014.

Lägg in följande i /etc/ssh/sshd_config på rätt ställe:

MACs [email protected],[email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,[email protected]
Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms [email protected],diffie-hellman-group-exchange-sha256

Samt se till att Protocol 2 enbart stöds. Samt kommentera bort stödet för HostKeys som ej är RSA eller ed25519:

HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

Du bör även se till att just ovan hostnycklar verkligen finns. Om någon ej skulle finnas så kan du skapa en ny med ssh-keygen:

$ ssh-keygen -t ed25519 -f ssh_host_ed25519_key

När det fungerar med inloggning via nycklar bör du ändra följande förutsatt att du inte använder någon funktion som de tillhandahåller:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Givetvis ska även root-logins stängas av med PermitRootLogin no. En annan bra sak är att ta bort kortare Diffie-Hellmanparameterar, följande kommando gör detta åt dig:

awk '$5 > 2000' /etc/ssh/moduli > "${HOME}/moduli"
wc -l "${HOME}/moduli" # se till att du har något kvar i filen
mv "${HOME}/moduli" /etc/ssh/moduli

Glöm inte att starta om openssh samt genomför tester så du inte stänger ute dig själv.

Givetvis finns det mängder med andra inställningar du kan göra för att höja säkerheten. Lämna gärna en kommentar med dina tips.

Uppdatering: För att försvåra brute-force attacker så bör du använda fail2ban eller sshguard. Tipstack till Jonas Thambert!

Tack till stribika

OpenSSH stödjer nu chacha20 samt poly1305

opensshVia Slashdot hittar vi följande nyhet:

Inspired by a recent Google initiative to adopt ChaCha20 and Poly1305 for TLS, OpenSSH developer Damien Miller has added a similar protocol to ssh, [email protected], which is based on D. J. Bernstein algorithms that are specifically optimised to provide the highest security at the lowest computational cost, and not require any special hardware at doing so. Some further details are in his blog, and at undeadly. The source code of the protocol is remarkably simple — less than 100 lines of code!

Läs mer genom att klicka på ovan länkar.

Bugg i OpenSSH

En ny version av OpenSSH släpptes för några dagar sedan då det visade sig att minne läckte ut i certifikat:

When generating legacy *[email protected] certificates, the nonce field was not being correctly filled with random data but was left uninitialised, containing the contents of the stack. The contents of the stack at this point in ssh-keygen’s execution do not appear to leak the CA private key or other sensitive data, but this possibility cannot be excluded on all platforms and library versions.

If certificates are generated using user-specified contents (as opposed to the CA specifying all fields) then they will be less resistant to hash collision attacks. Fortunately, such attacks are not currently considered practical for the SHA family of hashes used to sign these certificates.

OpenSSH 5.6

Utvecklingsteamet bakom den omåttligt populära SSH-servern OpenSSH finns nu ute i version 5.6 som innehåller en mängd buggfixar samt ett antal nya funktioner.

För fullständig information se Releasenotes.