PyTorch: Machine Learning-toolkit gepwnd van Kerstmis tot Nieuwjaar PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

PyTorch: Toolkit voor machinaal leren pwned van Kerstmis tot Nieuwjaar

PyTorch is een van de meest populaire en meest gebruikte toolkits voor machine learning die er zijn.

(We laten ons niet leiden door waar het op het scorebord voor kunstmatige intelligentie staat - zoals bij veel veelgebruikte open source-tools in een competitief veld, lijkt het antwoord af te hangen van wie je het vraagt, en welke toolkit ze toevallig gebruiken zich.)

Oorspronkelijk ontwikkeld en uitgebracht als een open-sourceproject door Facebook, nu Meta, werd de software eind 2022 overgedragen aan de Linux Foundation, die het nu beheert onder auspiciën van de PyTorch Foundation.

Helaas, het project werd gecompromitteerd door middel van een supply chain-aanval tijdens de feestdagen eind 2022, tussen Eerste Kerstdag [2022-12-25] en de dag voor oudejaarsavond [2022-12-30].

De aanvallers hebben kwaadwillig een Python-pakket gemaakt met de naam torchtriton op PyPI, de populaire Python Package Index-repository.

De naam torchtriton werd gekozen zodat het zou overeenkomen met de naam van een pakket in het PyTorch-systeem zelf, wat leidde tot een gevaarlijke situatie uitgelegd door het PyTorch-team (onze nadruk) als volgt:

[A] kwaadaardig afhankelijkheidspakket (torchtriton) […] is geüpload naar de Python Package Index (PyPI) coderepository met dezelfde pakketnaam als degene die we verzenden op de PyTorch nightly pakketindex. Aangezien de PyPI-index voorrang heeft, dit kwaadaardige pakket werd geïnstalleerd in plaats van de versie uit onze officiële repository. Dit ontwerp stelt iemand in staat om een ​​pakket te registreren met dezelfde naam als een pakket dat bestaat in een externe index, en pip zullen hun versie standaard installeren.

Het programma pip, trouwens, vroeger bekend als pyinstall, en is blijkbaar een recursieve grap die een afkorting is van pip installs packages. Ondanks de oorspronkelijke naam is het niet bedoeld om Python zelf te installeren - het is de standaardmanier voor Python-gebruikers om softwarebibliotheken en applicaties te beheren die in Python zijn geschreven, zoals PyTorch en vele andere populaire tools.

Pwned door een truc in de toeleveringsketen

Iedereen die ongelukkig genoeg was om de pwned-versie van PyTorch tijdens de gevarenperiode te installeren, eindigde vrijwel zeker met gegevensstelende malware die op hun computer was geïmplanteerd.

Volgens PyTorch's eigen kort maar nuttig analyse van de malware, hebben de aanvallers enkele, de meeste of alle van de volgende belangrijke gegevens van geïnfecteerde systemen gestolen:

  • Systeeminformatie, inclusief hostnaam, gebruikersnaam, bekende gebruikers op het systeem en de inhoud van alle systeemomgevingsvariabelen. Omgevingsvariabelen zijn een manier om alleen geheugeninvoergegevens te leveren waartoe programma's toegang hebben wanneer ze opstarten, vaak inclusief gegevens die niet op schijf mogen worden opgeslagen, zoals cryptografische sleutels en authenticatietokens die toegang geven tot cloudgebaseerde services. De lijst met bekende gebruikers wordt eruit gehaald /etc/passwd, die gelukkig geen wachtwoorden of wachtwoordhashes bevat.
  • Uw lokale Git-configuratie. Hier wordt van gestolen $HOME/.gitconfig, en bevat meestal nuttige informatie over de persoonlijke instellingen van iedereen die het populaire Git-broncodebeheersysteem gebruikt.
  • Uw SSH-sleutels. Deze zijn gestolen uit de directory $HOME/.ssh. SSH-sleutels bevatten doorgaans de privésleutels die worden gebruikt om veilig via SSH (secure shell) of SCP (secure copy) verbinding te maken met andere servers op uw eigen netwerken of in de cloud. Veel ontwikkelaars houden ten minste een deel van hun privésleutels onversleuteld, zodat scripts en softwaretools die ze gebruiken automatisch verbinding kunnen maken met externe systemen zonder elke keer te pauzeren om een ​​wachtwoord of een hardwarebeveiligingssleutel te vragen.
  • De eerste 1000 andere bestanden in de homedirectory zijn kleiner dan 100 kilobytes. De PyTorch-malwarebeschrijving zegt niet hoe de "eerste 1000 bestandenlijst" wordt berekend. De inhoud en volgorde van bestandsvermeldingen is afhankelijk van of de lijst alfabetisch is gesorteerd; of submappen worden bezocht voor, tijdens of na het verwerken van de bestanden in een willekeurige map; of verborgen bestanden zijn opgenomen; en of er willekeur wordt gebruikt in de code die door de mappen loopt. U moet er waarschijnlijk van uitgaan dat alle bestanden onder de groottedrempel kunnen worden gestolen.

Op dit punt noemen we het goede nieuws: alleen degenen die de zogenaamde "nachtelijke" of experimentele versie van de software haalden, liepen gevaar. (De naam 'nightly' komt van het feit dat het de allernieuwste build is, meestal automatisch gemaakt aan het einde van elke werkdag.)

De meeste PyTorch-gebruikers zullen zich waarschijnlijk houden aan de zogenaamde "stabiele" versie, die niet werd getroffen door deze aanval.

Ook uit het rapport van PyTorch lijkt dat het uitvoerbare bestand van de Triton-malware was specifiek gericht op 64-bits Linux-omgevingen.

We gaan er daarom van uit dat dit kwaadaardige programma alleen op Windows-computers zou draaien als het Windows Subsystem for Linux (WSL) was geïnstalleerd.

Vergeet echter niet dat de mensen die het meest geneigd zijn om reguliere "nightlies" te installeren, ontwikkelaars van PyTorch zelf zijn of van applicaties die het gebruiken - misschien inclusief uw eigen interne ontwikkelaars, die mogelijk op privésleutels gebaseerde toegang hebben tot bedrijfsbuild , test- en productieservers.

DNS-gegevens stelen

Het is intrigerend dat de Triton-malware zijn gegevens niet exfiltreert (de term in militaristisch jargon die de cyberbeveiligingsindustrie graag gebruikt in plaats van stelen or illegaal kopiëren) via HTTP, HTTPS, SSH of een ander hoogstaand protocol.

In plaats daarvan codeert en codeert het de gegevens die het wil stelen in een reeks van wat lijkt op “servernamen” die horen bij een domeinnaam die wordt beheerd door de criminelen.

Dit betekent dat de oplichters, door een reeks DNS-zoekopdrachten uit te voeren, bij elk nepverzoek een kleine hoeveelheid gegevens kunnen wegsluipen.

Dit is hetzelfde soort truc dat werd gebruikt door Log4Shell-hackers eind 2021, die coderingssleutels lekte door DNS-lookups uit te voeren voor "servers" met "namen" die toevallig de waarde waren van uw geheime AWS-toegangssleutel, geplunderd uit een in-memory omgevingsvariabele.

Dus wat leek op een onschuldige, zij het zinloze, DNS-zoekopdracht voor een "server" zoals S3CR3TPA55W0RD.DODGY.EXAMPLE zou stilletjes uw toegangssleutel lekken onder het mom van een eenvoudige zoekopdracht die doorverwezen werd naar de officiële DNS-server die wordt vermeld voor de DODGY.EXAMPLE domein.


LIVE LOG4SHELL DEMO UITLEG DATA EXFILTRATIE VIA DNS

[Ingesloten inhoud]

Als je de tekst hier niet duidelijk kunt lezen, probeer dan de modus Volledig scherm, of direct kijken op Youtube.
Klik op het tandwiel in de videospeler om het afspelen te versnellen of om ondertitels aan te zetten.


Als de boeven het domein bezitten DODGY.EXAMPLE, mogen ze de wereld vertellen met welke DNS-server ze verbinding moeten maken bij het uitvoeren van die zoekopdrachten.

Wat nog belangrijker is, zelfs netwerken die strikt op TCP gebaseerde netwerkverbindingen filteren met behulp van HTTP, SSH en andere protocollen voor het delen van gegevens op hoog niveau...

…filtert soms helemaal geen op UDP gebaseerde netwerkverbindingen die worden gebruikt voor DNS-lookups.

Het enige nadeel voor de boeven is dat DNS-verzoeken een vrij beperkte omvang hebben.

Individuele servernamen zijn beperkt tot 64 tekens uit een set van 37 (A-Z, 0-9 en het streepje of koppelteken), en veel netwerken beperken individuele DNS-pakketten, inclusief alle bijgevoegde verzoeken, headers en metadata, tot slechts 512 bytes elk.

We vermoeden dat de malware in dit geval daarom begon door achter uw privésleutels aan te gaan en zich vervolgens beperkte tot maximaal 1000 bestanden, elk kleiner dan 100,000 bytes.

Op die manier kunnen de boeven veel privégegevens stelen, met name inclusief servertoegangssleutels, zonder een onhandelbaar groot aantal DNS-lookups te genereren.

Een ongewoon groot aantal DNS-lookuos kan om routinematige operationele redenen worden opgemerkt, zelfs als er geen specifiek onderzoek wordt gedaan voor cyberbeveiligingsdoeleinden.

Wat te doen?

PyTorch heeft al actie ondernomen om deze aanval af te sluiten, dus als u nog niet bent geraakt, wordt u vrijwel zeker nu niet geraakt, omdat de kwaadwillende torchtriton pakket op PyPI is vervangen door een opzettelijk "blindganger", leeg pakket met dezelfde naam.

Dit betekent dat elke persoon of software die probeerde te installeren torchtriton van PyPI na 2022-12-30T08:38:06Z, per ongeluk of opzettelijk, de malware niet zou ontvangen.

Het frauduleuze PyPI-pakket na de tussenkomst van PyTorch.

PyTorch heeft een handige lijst met IoC's gepubliceerd, of indicatoren van een compromis, waarnaar u in uw netwerk kunt zoeken.

Onthoud, zoals we hierboven vermeldden, dat zelfs als bijna al uw gebruikers vasthouden aan de "stabiele" versie, die niet werd beïnvloed door deze aanval, u ontwikkelaars of enthousiastelingen kunt hebben die experimenteren met "nightlies", zelfs als ze de stabiele versie gebruiken ook loslaten.

Volgens PyTorch:

  • De malware wordt geïnstalleerd met de bestandsnaam triton. Standaard zou je verwachten het in de subdirectory te vinden triton/runtime in de directory van uw Python-sitepakketten. Gezien het feit dat alleen bestandsnamen zwakke malware-indicatoren zijn, moet u de aanwezigheid van dit bestand echter beschouwen als een bewijs van gevaar; behandel de afwezigheid ervan niet als een alles-vrij.
  • De malware in deze specifieke aanval heeft de SHA256-som 2385b294­89cd9e35­f92c0727­80f903ae­2e517ed4­22eae672­46ae50a5cc738a0e. Nogmaals, de malware kan gemakkelijk opnieuw worden gecompileerd om een ​​andere controlesom te produceren, dus de afwezigheid van dit bestand is geen teken van definitieve gezondheid, maar u kunt de aanwezigheid ervan beschouwen als een teken van infectie.
  • DNS-zoekopdrachten die werden gebruikt voor het stelen van gegevens eindigden met de domeinnaam H4CK.CFD. Als u netwerklogboeken hebt waarin DNS-lookups op naam worden geregistreerd, kunt u naar deze tekenreeks zoeken als bewijs dat er geheime gegevens zijn uitgelekt.
  • De kwaadaardige DNS-antwoorden gingen blijkbaar naar, en eventuele antwoorden kwamen van een aangeroepen DNS-server WHEEZY.IO. Op dit moment kunnen we geen IP-nummers vinden die aan die service zijn gekoppeld, en PyTorch heeft geen IP-gegevens verstrekt die DNS-taffic aan deze malware zouden koppelen, dus we weten niet zeker hoeveel nut deze informatie heeft voor het opsporen van bedreigingen op dit moment [2023-01-01T21:05:00Z].

Gelukkig vermoeden we dat de meerderheid van de PyTorch-gebruikers hier geen last van zal hebben, hetzij omdat ze geen nachtelijke builds gebruiken, of omdat ze niet werkten tijdens de vakantieperiode, of beide.

Maar als je een PyTorch-enthousiasteling bent die wel aan nachtelijke builds sleutelt, en als je tijdens de feestdagen hebt gewerkt, zelfs als je geen duidelijk bewijs kunt vinden dat je gecompromitteerd bent...

…je zou toch kunnen overwegen om uit voorzorg nieuwe SSH-sleutelparen te genereren en de openbare sleutels bij te werken die je hebt geüpload naar de verschillende servers die je via SSH benadert.

Als je vermoedt dat je gecompromitteerd bent, stel die SSH-sleutelupdates dan natuurlijk niet uit - als je ze nog niet hebt gedaan, doe ze dan nu meteen!


Tijdstempel:

Meer van Naakte beveiliging