För några dagar sedan meddelades nyheten att det var så en sårbarhet upptäckt i kärnnätverkets delsystem Linux det tillåter, skriver över innehållet i minnet av kärnan, genom att manipulera nätverkssockets i användarutrymmet.
Det nämns att sårbarheten (redan katalogiserad under CVE-2023-42752) klassas som kritisk och kan användas för att ge en oprivilegierad användare åtkomst att köra din kod på kärnnivå.
Om sårbarhet CVE-2023-42752
Som sådan det upptäckta felet Det orsakas av en förändring som introducerades i Linux-kärnversion 6.2, men det nämns att denna förändring också infördes i alla LTS-grenar som stöds, så sårbarheten Det förekommer också i äldre versioner av stödda stabila grenar av kärnan.
Hej,
Jag stötte nyligen på ett heltalsspill i Linux-kärnan, vilket leder till kärnan genom att allokera `skb_shared_info` i användarutrymmet, vilket är kan utnyttjas på system utan SMAP-skydd från `skb_shared_info` innehåller referenser till funktionspekare.
Jag verifierade förekomsten av sårbarheten i båda huvudgrenen och v6.1.y, fler versioner kan påverkas (potentiellt alla stabila versioner)
Angående orsakerna till problemet nämns det heltalsspill beror fortfarande på funktionen "alloc_skb". i Linux-kärnan används cue för att tillhandahålla minnesallokering för strukturen sk_buff (socket buffer), som används för att lagra nätverkspaket.
Sårbarheten kan utnyttjas eftersom ett problem som orsakar ett spill uppstår på grund av bristande korrekt validering av parametrarna som tas emot från användaren som används för att beräkna buffertstorleken. En attack av en oprivilegierad användare kräver åtkomst för att skapa användarnamnrymder, som exempelvis kan tillhandahållas i isolerade behållare.
Det nämns det: Funktionen `kmalloc_reserve` avrundar storleken i `PAGE_SIZE << get_order(size);` i `kmalloc_size_roundup`. Eftersom 'size' är 'unsigned int', kommer avrundningslogiken att göra det till 0 om det ursprungliga värdet är större, till exempel något som 0xffffded0. Som ett resultat kommer "data" faktiskt att bli `ZERO_SIZE_PTR`, vilket är 0x10 istället för 0. Eftersom verifiering inte beaktar fallet, så kommer kärnan att fortsätta bearbeta "data" som om de vore en pekare till den giltiga kärnan.
Senare, när kärnan försöker slutföra skb-objektet i `__finalize_skb_around`, har den koden: `shinfo = skb_shinfo(skb);`, vilket är `skb->head+skb->end` där `skb->head ` är 0x10 och `skb->end`
är en stor storlek som 0xffffmed0. Som ett resultat pekar `shinfo` på en användarutrymmespekare.
Det är värt att nämna att sårbarheten CVE-2023-42752 är lokal och kan inte fjärrexploateras över nätverket, eftersom som vi nämnde ovan kräver en angripare åtkomst för att skapa användarnamnutrymmen.
Redan 2010 insåg jag inte att skadliga användare kunde ställa in dev->mtu till godtyckliga värden. Denna mtu har sedan dess begränsats till 0x7fffffff, men oavsett hur stor dev->mtu är, är det inte meningsfullt för igmpv3_newpack() att allokera mer än IP_MAX_MTU och riskera att svämma över flera skb-fält
Som en tillfällig lösning Det rekommenderas att SMAP-skyddsmekanismen är aktiverad (Supervisor Mode Access Prevention) i kärnan, vilket blockerar problemet.
Eftersom lösning på problemet som sådant, detta har redan åtgärdats och distribueras i korrigeringarna som blockerar sårbarheten i de olika versionerna med kärnstöd, nämns att ändringarna accepterades i de stabila grenarna av kärnan den 5 september.
Slutligen, för intresserad av att spåra korrigeringen av sårbarheten kan du göra det på sidorna i de olika distributionerna: Debian, ubuntu, Gentoo, RHEL,fedora och SUSE/openSUSE.Du kan kontrollera detaljerna om sårbarheten i följande länk.