Zephyrnet-logotyp

Denna vecka i säkerhet: 11,000 XNUMX bensinstationer, TrustZone Hacks Kernel och oväntade luddiga fynd

Datum:

bild

Automatiserade tankmätare (ATG) är smarta tekniska bitar som sitter osedda på nästan varje bensinstation. De håller reda på bränslenivåer, temperatur och annan information, och ibland kopplas de till de automatiserade systemen på stationen. Problemet är att ett gäng av dessa enheter lyssnar på port 10001 på Internet, och några av dem verkar vara felkonfigurerade. Hur många? Låt oss börja med den enklare frågan, hur många IP-adresser har port 10001 öppen? Masscan är ett av de bästa verktygen för detta, och [RoseSecurity] hittade över 85,000 XNUMX lyssningsenheter. En öppen port är bara början. Hur många av dessa svarar på anslutningar med strängen In-Tank Inventory Reports? Shodan rapporterar 11,113 XNUMX IP:er i augusti i år. [RoseSecurity] skrev ett enkelt Python-skript som kontrollerade att var och en av dessa lyssnande IP:er kom fram till ett matchande antal enheter. Det läskiga är att den här kontrollen gjordes genom att skicka en Get In-Tank Inventory Report kommando och kontrollerar om det finns ett bra svar. Det verkar som att det är 11K-system, anslutna till internet, utan autentisering. Vad kan gå fel?

Knepiga JavaScript-tricks

[Gareth Heyes] har satt ihop en imponerande guide till konstigheter med JavaScript. Och konstigt kan vara en underdrift, så håll ut. Den första delen av denna artikel är från 2016, och visar upp en teknik för att köra JS-kod utan några parenteser eller alfanumeriska tecken. +!+[] är ett smart sätt att skriva en 1. Hur? Magin i den här koden är att + operatören har en unär användning. Vi använder det normalt i ett uttalande som 1+2, där operatören tar två ingångar och summerar dem. Den unära versionen returnerar bara den numeriska representationen av objektet. +2 motsvarar 2, och +"2" är lika med 2. Dra upp din webbläsares JS-konsol och prova. Så exemplet ovan, hakparenteserna definierar en tom array, och plustecknet konverteras till ett tal, 0. ! är not-operatorn, som tyst omvandlar värdet till ett booleskt värde (falskt) och inverterar det (sant). Sedan numeriserar vi det booleska värdet till en 1. Det är mycket jobb att få en 0 och en 1, men med dessa får vi ett annat tal.

Nästa knep är det [][[]] returnerar odefinierat. Det är i huvudsak en tom array som index för en array, alltså odefinierad. Nu är det intressanta [][[]]+[] använder additionsoperatorn och returnerar strängen "undefined". Det behövs ett extra trick för att göra det användbart, där vi lägger den här strängen i en array och sedan hänvisar till det första indexet för den arrayen: [[][[]]+[]][+[]]. Allt detta ger oss möjligheten att behandla den här strängen som en array och få enskilda bokstäver med hjälp av ett index. Och eftersom vi har "odefinierat" att arbeta med, kan vi sätta ihop "hitta". Och eftersom "hitta" är en funktion, returneras "funktion find() { [native code] } om du kör detta utan parentes. Använd samma trick så har du fler karaktärer att arbeta med. För att faktiskt exekvera den här kullerstenssträngen kan vi använda en bokstavlig mall för att få verklig exekvering, Function`alert(1)```. Nu innan vi tar upp det nyare inlägget, vad är poängen med denna invecklade JS? Cross-Site Script exekvering (XSS). Om du kan smyga in tillräckligt med JS-kod till rätt plats på en webbplats, när en annan användare ser resultatet, kanske du kan köra din kod i deras webbläsare. Webbplatser är noggrant konstruerade för att förhindra detta, men knep som dessa kan användas för att kringgå dessa skydd.

Och så, det leder oss till det senaste inlägget, Det sjunde sättet att anropa en JavaScript-funktion utan parentes. Och här är det mallfunktioner med mall bokstäver som argument. Ta en titt på x`x${y}x`. ${}-konstruktionen, i en mall-literal, kommer att köra uttrycket inom de krulliga parenteserna och ersätta resultaten i strängen. Den här biten kod gör något annat, med hjälp av en taggfunktion. Och det som är intressant är att när en taggfunktion anropas på det här sättet, får den strängen som sitt första argument, men de råa resultaten av uttrycken som dess återstående argument. Även detta kan användas för att köra kod. I slutändan ser det ut som [].sort.call`${alert}1337`. Det är något av en nyhet för nu, men jag skulle inte bli särskilt förvånad över att se obfuscerade JS använda dessa tekniker i framtiden.

Android-hackning via TrustZone

[Tamir Zahavi-Brunner] har snubblade över en smart Android-exploatering, med hjälp av Qualcom Trusted Execution Environment (QTEE) för att äventyra den körande kärnan. Du kan också se detta som kallas QSEE, ett äldre namn för tekniken. Det är pålitlig standardexekvering — en separat kärna körs på hårdvaran parallellt med Linux-kärnan, och dessa två kärnor kommunicerar med hjälp av qseecom Linux-kärnmodulen. Den modulen skickar en serialiserad kombination av data och pekare, som plockas upp av den betrodda exekveringssidan och agerar på av en trustlet. Tanken är att trustleten skriver tillbaka resultaten till den givna pekaren och Android-processen kan läsa tillbaka den. Problemet är att de delade buffertarna tillåts överlappa varandra, och trustleten slutar med att skriva godtyckliga data över huvudet på en annan buffert. Den här sortens minneskorruption är alltid dålig och kan ofta utnyttjas. Här kan den användas för att omdirigera en annan trustlets utdata till en godtycklig plats i minnet, som att skriva över kärnfunktioner.

Den räddande nåden här är att appar i sandlåde inte ges tillstånd att prata direkt med qseecom-modulen, så en andra exploatering skulle behövas. Å andra sidan, när den tillståndet har erhållits, leder detta till en repeterbar kärnexploatering. Felet rapporterades i oktober 2020 och korrigerades inte av Qualcomm förrän i september 2021, vilket är oroande i sig.

Bitar och bytes

Let's Encrypt är på väg att tryck på den stora röda knappen märkt "Certifikatåterkallelselistor". Den här nya funktionen är en del av ansträngningen att åtgärda processen för återkallande av certifikat som är felaktigt trasiga. De har verkligen arbetat för att göra detta framtidsbevis, till och med ställt frågan om hur en händelse i värsta fall skulle gå. Om de var tvungna att återkalla alla aktuella certifikat, skulle den resulterande listan väga in på 8 GB, så huvudlistan har delats upp i 128 skärvor.

Microsoft Teams kan utnyttjas som en kommunikationskanal till kör ett fjärrskal, allt genom att använda GIF, därav GIFShell. Det här är inte ett utnyttjande för att få kontroll över en maskin, utan en serie av sju svagheter som gör den smygande kanalen möjlig. Microsoft har ansett denna "bra forskning", men anser inte att det är en sårbarhet.

Googles OSS-Fuzz gör automatisk fuzzing på cirka 700 projekt som har blivit dubbade kritiska. En bugg i TinyGLTF hittades nyligen, CVE-2022-3008, en sårbarhet för kommandoinjektion. Det är värt att notera - ett suddigt projekt hittade ett logiskt fel, och det var inte relaterat till minneskorruption. Google arbetar för att utöka de typer av problem som deras suddiga projekt kan hitta, och betalar till och med mycket fina $11,337 XNUMX för bidrag som leder till felfynd.

FishPig har haft ett tufft par månader, med en okänd angripare som gjorde intrång i sin distributionsserver i augusti. De tillhandahåller en betald integrationsmodul för att köra Magento 2 på WordPress-webbplatser, och det uppskattas att uppåt 200,000 XNUMX webbplatser använder dessa moduler. Dessa moduler distribuerades efter intrånget och inkluderade en smygande bakdörr. Hittills har det inte observerats några skadliga åtgärder som vidtagits av den som kontrollerar den bakdörren, men det rekommenderas fortfarande för FishPig-användare att söka efter problem.

plats_img

Senaste intelligens

plats_img