Taggat med: ssh

Pre-auth sårbarhet i openssh

En allvarlig sårbarhet har uppdagats i den populära mjukvaran OpenSSH. Sårbarheten medger att någon på internet kan utnyttja sårbarheten utan att vara autentiserad (pre auth). Sårbarheten har fått CVE-2024-6387 tilldelad, och går under namnet regreSSHion. Totalt finns det 14 miljoner exponerade OpenSSH-servrar på internet varav 700000 st är potentiellt sårbara.

Dock är sårbarheten inte helt enkel att utnyttja och går ej att utnyttja på samtliga plattformar. Versionen av OpenSSH som det gäller är mellan 8.5p1 och 9.7p1, dvs portabla versioner och som använder glibc (än så länge). Även är versioner innan 4.4p1 sårbara, för sårbarheten nedan. Sårbarheten identifierades av Qualys och deras information återfinnes här. Men kortfattat kan man säga att det är en variant på en tidigare sårbarhet:

CVE-2006-5051 – Signal handler race condition in OpenSSH
before 4.4 allows remote attackers to cause a denial of service (crash),
and possibly execute arbitrary code

Det är dock viktigt att betona att det är viktigt att uppgradera omgående. Speciellt för system som kör 32-bitar, såsom äldre routrar, switchar etc. Uppgradera till OpenSSH 9.8 (eller 9.8p1) som släpptes idag 1:a Juli. Denna release innehåller även en fix för en sårbarhet gällande funktionen ObscureKeystrokeTiming, som försvårar för en passiv angripare som kan läsa av tangentbordstryckningar.

Detta påvisar åter igen hur känsligt det är att exponera administrativa resurser mot internet såsom ssh. Försök istället att exponera wireguard eller liknande protokoll med mindre exponerad kodbas för ej autentiserade användare. Och isolera den process eller system som exponerar protokollet/tjänsten mot internet.

Blogginlägget uppdateras löpande

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.

Ny version av PuTTY åtgärdar säkerhetsbrister

Putty är en omåttligt populär programvara till Windows som används för att ansluta med ssh. Nu har version 0.68 släppts som åtgärdar två säkerhetsbrister som återfinnes i SSH-agent forwarding samt hur DLL:er laddas in.

Läs mer här:

Och den som kan sin putty-historia vet att den är kantad med diverse sårbarheter. Det har hänt åtskilliga gånger exempelvis att minnet inte har rensats korrekt efter nycklar och lösenord.

Och här kan du ladda hem en ny version av putty:

Glöm inte att verifiera signaturen.

🔧 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 6.2

openssh

Nyss så släpptes det en ny version av OpenSSH. Denna nya version innehåller en rad förbättringar såsom MAC över krypterade paketet istället för klartext:

Added support for encrypt-then-mac (EtM) MAC modes for SSH protocol 2. These modes alter the packet format and compute the MAC over the packet length and encrypted packet rather than over the plaintext data. These modes are considered more secure and are used by default when available.

Även så har OpenSSH implementerat stöd för GCM-AES:

GCM (Galios/Counter Mode) is a mode of operation that uses a universal hash function over a binary Galois field to provide authenticated encryption. The mode is defined in NIST’s SP 800-38D, and P1619. GCM is a high performance mode which offers both pipelining and parallelization

Se changelog här: openssh.com/txt/release-6.2

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.