Sammanfattning
Den 31 december 2024 släpptes version 1.0.1 av den moderna terminalemulatorn Ghostty som åtgärdade en sårbarhet för exekvering av kod , nu spårad som CVE-2024-56803. Terminaler exekverar kommandon på grund av sin design, mendenna sårbarhet möjliggjorde oavsiktlig exekvering av kommandon genom escape-sekvensen för titelrapportering (\e[21t
)
.
Detaljer
Detta inträffade eftersom escape-sekvensen infogade fönstertiteln direkt i kommandoraden. Om användaren trycker på Enter körs den infogade titeln som ett kommando.
Det var t.ex. möjligt att starta miniräknaren genom att ändra titeln med \e]2;<title
>, där <title>
är kommandot, t.ex. gnome-calculator
. I kombination med escape-sekvensen för titelrapportering skulle titeln infogas i kommandoraden i formatet l<title
>, där l anger att den efterföljande strängen är fönstertiteln.
Ghostty uppdaterar dock fönstertiteln dynamiskt efter varje utfört kommando så att den återspeglar den aktuella arbetskatalogen. Detta beteende störde utnyttjandet genom att åsidosätta den titel som vi kontrollerade med en sträng som innehåller den uppdaterade sökvägen.
För att kringgå detta kunde vi slå sammansekvensen för inställning av titel och sekvensen för rapportering av titel till en enda sekvens, vilket förhindrade Ghostty från att uppdatera titeln innan nyttolasten infogades i kommandoraden.
Ett annat problem som uppstod var att den infogade titeln föregicks av l, vilket förhindrade exekveringav kommandot. Även om detta tecken inte kunde tas bort, hittades en lösning där ett semikolon (
;
)
skulle läggastill nyttolasten.
Detta skulle få Bash att tolka den infogade titeln som två separata kommandon eftersom semikolon är en kommandoseparator.
Den här nyttolasten kan levereras genom att den lagras i en fil och låta en användare kata den eller hämta den med curl. Men de flesta användare kommer inte att trycka på Enter när de ser att kommandon har infogats i deras kommandorad.
Därför kan en nyttolast utformas där \e[8m
används för att göra det skadliga kommandot osynligt, tillsammans med ett falskt felmeddelande som visas för att lura användaren att trycka på Enter
.
Slutsats
Det pågår diskussioner om huruvida terminalemulatorutvecklare eller utvecklare av CLI/TUI-verktyg ska beskyllas för att tillåta att escape-sekvenser analyseras när de inte behövs. Under tiden är det viktigt att ta itu med det faktum att escape-sekvenser, som är en gammal teknik som inte har uppdaterats, utgör en säkerhetsrisk. Därför är det viktigt att användarinmatning alltid rensas för att förhindra att användare utsättsför intrång .
Senaste inläggen
Publicerad 11.02.2025
