Zephyrnet-logo

Kritisch "10-uit-10" Linux-kernel SMB-gat - moet u zich zorgen maken?

Datum:

Net voor het kerstweekend – in feite rond dezelfde tijd dat de belegerde wachtwoordbeheerservice LastPass toegaf dat, ja, uw wachtwoordkluizen werden gestolen door criminelen tenslotte - we merkten een serieus klinkende kwetsbaarheid in de Linux-kernel op die het nieuws bereikte.

De waarschuwingen waren afkomstig van het Zero Day Initiative (ZDI) van Trend Micro, waarschijnlijk het best bekend voor het opkopen van zero-day beveiligingsbugs via de populaire Pwn2Own-wedstrijden, waar bug-bounty-jachtteams live op het podium strijden om mogelijk grote geldprijzen.

In ruil voor het sponsoren van het prijzengeld hopen de verkopers van producten variërend van besturingssystemen en browsers tot netwerkprinters en internetrouters gloednieuwe beveiligingsfouten op te kopen, zodat ze de gaten op verantwoorde wijze kunnen repareren. (Om hun prijzen te innen, moeten deelnemers een correcte beschrijving geven en ermee instemmen om geen informatie over de fout te delen totdat de verkoper een eerlijke kans heeft gehad om het te repareren.)

Maar ZDI houdt zich niet alleen bezig met competitieve jacht op bugs in zijn tweejaarlijkse wedstrijden, dus publiceert het ook regelmatig kwetsbaarheidsmeldingen voor zero-days die op meer conventionele manieren werden onthuld, zoals deze, getiteld Linux Kernel ksmbd Use-After-Free beveiligingslek met betrekking tot uitvoering van externe code.

Serveren van Windows-computers via Linux

SMB is een afkorting van server berichtenblok, en het is het protocol dat ten grondslag ligt aan Windows-netwerken, dus bijna elke Linux-server die netwerkservices levert aan Windows-computers zal software draaien om SMB te ondersteunen.

Zoals u zich kunt voorstellen, zijn SMB-gerelateerde beveiligingsbugs, vooral bugs die via het netwerk kunnen worden uitgebuit zonder dat de aanvaller zich eerst hoeft aan te melden, zoals hier het geval is, potentieel ernstige problemen voor de meeste grote bedrijfsnetwerken.

SMB-ondersteuning is over het algemeen ook nodig in NAS-systemen voor thuisgebruik en kleine bedrijven (netwerk gehechte opslag) apparaten, die over het algemeen Linux intern draaien, en gebruiksvriendelijke, plug-it-in-and-go bestandsserverfuncties bieden voor kleine netwerken.

Het is niet nodig om zelf Linux te leren, of om een ​​volwaardige server op te zetten, of om te leren hoe je Linux-netwerken configureert - gewoon plug-and-play met het NAS-apparaat, dat SMB-ondersteuning heeft ingebouwd en klaar voor gebruik is .

Waarom de vakantie timing?

In dit geval werd de bug niet opzettelijk onthuld op de avond voor de avond voor de avond voor Kerstmis in een niet-zo-ho-ho-ho-poging om je feestdagen te verpesten door je gek te maken.

En het werd niet vlak voor het weekend gemeld in een poging om slechte PR te begraven door te hopen dat je vakantie-minded genoeg zou zijn om het verhaal helemaal te missen of om het af te schudden tot het nieuwe jaar.

Het goede nieuws is dat, zoals gewoonlijk gebeurt onder de noemer 'responsible disclosure', de datum voor het ZDI-rapport van tevoren was overeengekomen, vermoedelijk toen de fout werd onthuld, waardoor het Linux-kernelteam voldoende tijd kreeg om het probleem goed op te lossen, maar niettemin niet waardoor ze het probleem voor onbepaalde tijd kunnen uitstellen.

In dit geval wordt het bugrapport weergegeven als zijnde gebeurd op 2022-07-26, en waarnaar ZDI verwijst als de "gecoördineerde openbare vrijgave van [het] advies" was gepland voor 2022-12-22, wat een kloof blijkt te zijn van precies 150 dagen, als je de ouderwetse stijl meetelt en de volledige dag aan elk uiteinde meetelt.

Dus hoewel deze bug tijdens het vakantieweekend nogal wat aandacht heeft gekregen, gezien het feit dat het een uitvoering van externe code (RCE) gat in de Linux-kernel zelf, en kwam met een zogenaamde CVSS-score van 10/10, beschouwd als kritisch...

...het werd binnen slechts twee dagen na onthulling gepatcht in de Linux-broncode, en de fix werd geaccepteerd en verpakt in de officiële Linux-kernel-broncode op tijd voor de release van Linux 5.15.61, terug op 2022-08-17, zojuist 23 dagen nadat het rapport voor het eerst binnenkwam.

Met andere woorden, als je sindsdien je Linux-kernel hebt bijgewerkt, ben je al veilig, ongeacht welke kernelconfiguratie-instellingen jij of je distro gebruikte bij het compileren van de kernel.

Deze periode omvat 24 opeenvolgende updates van de kernel 5.15-serie, nu op 5.15.85, samen met alle versies van kernel 6.0, kernel 6.1 en de kernel 6.2 die nog steeds in de kandidaat-fase is, die allemaal hun eerste release hebben gehad na augustus 2022 .

Waarschijnlijk niet de SMB-software die u vermoedt

En hoewel het op het eerste gezicht lijkt alsof deze bug onvermijdelijk elke Linux-server of elk apparaat dat Windows-netwerken ondersteunt zal treffen, is dat ook niet waar.

De meeste systeembeheerders, en onze ervaring is dat de meeste NAS-programmeurs, bieden Windows SMB-ondersteuning via een langlopende en gerespecteerde open source toolkit genaamd Samba, waar de naam Samba is gewoon het dichtstbijzijnde uitspreekbare woord dat de oorspronkelijke ontwikkelaar, open-source uitblinker Andrew "Tridge" Tridgell OAM, kon vinden om de afkorting SMB weer te geven.

Iedereen die Samba heeft gebruikt, weet dat de software draait als een gewone applicatie, in wat bekend staat als gebruikersruimte – met andere woorden, zonder dat er een eigen code in de kernel hoeft te draaien, waar zelfs kleine bugs gevaarlijke gevolgen kunnen hebben.

Het hoofdbestand van het Samba-programma wordt inderdaad aangeroepen smbd, waar de achterstand -D is een typisch Unixisme dat staat voor demon, of achtergrondproces - wat Windows-beheerders een service.

Maar deze bug, zoals je kunt zien in het ZDI-rapport, zit in een kernelmodule Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen. ksmbdWanneer de -D geeft een achtergrondservice aan, de -SMB- geeft Windows-netwerkondersteuning aan, en de K- middel draait in kernelruimte, dwz direct in de kernel zelf.

Op dit moment vraagt ​​u zich waarschijnlijk af: “Waarom zou u de complexiteit van het ondersteunen van SMB rechtstreeks in de kernel begraven, gezien het feit dat we al een betrouwbaar en gerespecteerd gebruikersruimteproduct hebben in de vorm van Samba, en gezien het feit dat zijn de risico's veel groter?"

Waarom inderdaad?

Zoals zo vaak lijken er twee hoofdredenen te zijn: [A] omdat het kan! en [B] omdat prestatie.

Door wat typisch softwarefuncties op hoog niveau zijn in de kernel te duwen, kunt u vaak de prestaties verbeteren, hoewel u bijna altijd de prijs betaalt van een overeenkomstige, en mogelijk aanzienlijke, afname van veiligheid en beveiliging.

Wat te doen?

  • Controleer of je een Linux-kernel hebt die is gebaseerd op een release op of na 5.15.61 (van 2022-08-17). Als dat het geval is, is deze bug opgelost in de broncode. Het maakt niet uit welke kernel-compilatie-opties u (of uw distro-maker) kiest, de bug zal niet verschijnen in de kernel-build.
  • Controleer of uw Linux-kernelbuild zelfs bevat ksmbd. De meeste populaire distro's compileren het niet en bouwen het ook niet als een module, dus je kunt het niet laden of activeren, zelfs niet per ongeluk.
  • Neem contact op met uw leverancier als u een apparaat gebruikt, zoals een NAS-box of een ander apparaat dat verbindingen vanaf Windows-computers ondersteunt. De kans is groot dat uw NAS-apparaat het niet gebruikt ksmbd, zelfs als het nog steeds een kernelversie heeft die in theorie kwetsbaar is. (Opmerking voor Sophos-klanten: voor zover wij weten, gebruiken geen Sophos-apparaten ksmbd.)
  • Als u gebruik maakt ksmbd overweeg om uw risico opnieuw te evalueren. Zorg ervoor dat u de werkelijke prestatieverbetering meet die u heeft bereikt en beslis of de beloning het echt waard is.

OPDRACHTEN DIE JE KUNT GEBRUIKEN OM JE BLOOTSTELLING TE CONTROLEREN

Elke Linux vanaf 5.15.61 of elke 6.x is al gepatcht. Om uw Linux-versie te controleren: $ uname -o -r 6.1.1 GNU/Linux 
Om te zien of deze kernelfunctie is gecompileerd, kun je de compilatietijdconfiguratie van de draaiende kernel dumpen: $ zcat /proc/config.gz | grep SMB_SERVER # CONFIG_SMB_SERVER is niet ingesteld Als deze configuratie-instelling tijdens het compileren niet is ingesteld, of is ingesteld op "n" voor nee, is de functie helemaal niet gebouwd. Als er "y" staat voor ja, dan is de kernel SMB-server rechtstreeks in je kernel gecompileerd, dus zorg ervoor dat je een gepatchte versie hebt. Als er "m" staat voor module, dan bevat de kernelbuild waarschijnlijk een runtime-module die op verzoek kan worden geladen.
Om te zien of je kernel een laadbare module beschikbaar heeft: $ /sbin/modprobe --show ksmbd modprobe: FATAL: Module ksmbd niet gevonden in directory /lib/modules/6.1.1 Merk op dat "--show" betekent "nooit echt doen het, laat gewoon zien of het laden zou werken of niet".
Om te zien of uw systeem de ksmbd-module al actief heeft: $ lsmod | grep ksmbd Als u geen uitvoer ziet, komt de module niet overeen in de lijst.
Om te voorkomen dat de module onbedoeld wordt geladen voor het geval deze ooit verschijnt, voegt u een bestand met een naam zoals ksmbd.conf toe aan de directory /lib/modules.d of /etc/modules.d met deze regels erin: blacklist ksmbd install ksmbd /bin/onwaar

spot_img

Laatste intelligentie

spot_img