DNSFS: A hátborzongató trükk, amivel a DNS-ben tároltak fájlokat
DNSFS: A Furcsa Felhőtárhely-trükk, Amit Valaha Láttál
Kezdjük egy gondolatkísérlettel. Képzeld el, hogy a fájljaidat nem az AWS S3-on vagy egy elosztott adatbázisban tárolod, hanem DNS cache-ekben, szervereken szerte a világon. Az adataid szó szerint ott lebegnének a gépeken, amelyeket nem birtokolsz, olyan resolverekben, amelyek létezéséről valószínűleg понятия sincsen.
Űberíli a sci-fi-regényeket, igaz? Nos, valaki tényleg megépítette.
A DNS Cache Felfedezés, Amivel Mindez Kezzdődött
Mielőtt belevágnánk az őrületbe, beszéljünk arról, amit a legtöbb fejlesztő magától értetődőnek vesz: a DNS TTL-ekről. Amikor lekérdezel egy domain nevet, a resolver egy meghatározott ideig cache-eli az eredményt, mielőtt újra ellenőrizne. A legtöbben azt hisszük, ez néhány perc vagy óra.
De van egy fontos részlet: egyes resolverek boldogan cache-elnek akár egy egész héten keresztül, ha szépen kérjük őket.
Ez a felfedezés egy lenyűgöző kérdéshez vezetett: ha a DNS cache-ek ilyen sokáig tárolhatják az adatokat, vajon szándékosan is tárolhatunk-e bennük fájlokat? Nem csak domain lekéréseket, hanem tényleges adatokat?
A válasz meglepő módon igen.
Bemutatjuk a DNSFS-t: Fájlok Tárolása Szabad Szemmel
A DNSFS egy korábbi hackből merít ihletet, amelyet PingFS-nek hívnak – ez ICMP ping csomagok payload szekcióiban tárolta az adatokat. A PingFS problémája? Folyamatosan ide-oda kellett pingelni a csomagokat, hogy az adat életben maradjon. Ha abbahagytad az átvitelt, el is tűnt az adat.
A DNSFS drámaian javít ezen a koncepción. Mivel a DNS resolverek cache-elik a válaszokat, egyszer beírod az adatot a resolver cache-ébe, és az ott marad, amíg ki nem jár az idő. Nem kell folyamatosan kérdezgetned – a resolver elvégzi helyetted a munkát.
Gondolkozz el ezen egy pillanatig. Lényegében mások infrastruktúráját használod – tudtuk nélkül – elosztott, redundáns fájltároló rendszerként.
Hogyan Működik a Gyakorlatban
A technikai megvalósítás egyaránt zseniális és aggasztó.
Ehhez nyitott DNS resolverekre van szükséged – olyan szerverekre, amelyek bármilyen domainre válaszolnak, nem csak azokra, amelyekért ők a felelősek. Technikailag ezeket ki kellene zárni a nyilvános internetből tűzfalakkal, mert DDoS-reflexiós kockázatot jelentenek. De itt jön a lényeg: több millió eszköz érkezik rosszul beállított DNS szolgáltatásokkal, amelyek bárhonnan elérhetők.
A rendszer úgy működik, hogy a fájlokat apró darabokra bontja, DNS lekérdezésekké alakítja, és szétosztja az interneten. Minden resolver, amely megkapja és cache-eli a lekérést, most már tárol egy kis darabot a fájlodból. Az adat visszaszerzéséhez egyszerűen ugyanazokat a resolvereket kérdezed le, és újra összeállítod a darabokat.
A rendszer szépsége (és rémálma), hogy az adat a cache-ben marad, amíg a TTL le nem jár – nincs szükség folyamatos kapcsolatra.
Az Internet Átszkennelése Nyitott Resolverekért
Itt válnak a dolgok lenyűgözővé és kicsit nyugtalanítóvá.
A DNSFS megépítéséhez nyitott resolvereket kell találni az interneten. Ez azt jelenti, hogy milliárdnyi IP-címet kell átvizsgálni, hogy kiderüljön, melyikük válaszol DNS lekérésekre tetszőleges domainekre.
Egy fejlesztő a masscan eszközt használta, okos BPF (Berkeley Packet Filter) szabályokkal kiegészítve, hogy hatékonyan azonosítsa csak azokat a resolvereket, amelyek hasznosak lennének – kiszűrve az authority-only szervereket és más zajt. Az eredmény? Közel 4 millió nyitott DNS resolver szétszórva a világ körül.
A földrajzi eloszlás figyelemre méltó. Kína vezet több mint 1,4 millió nyitott resolverrel, utána az Egyesült Államok, Dél-Korea, Oroszország és Brazília következik. De itt jön az igazán érdekes mutató: ha az internet-felhasználókra normalizáljuk az adatokat, apró nemzetek, mint Saint Kitts és Nevis meglepően magas resolver-sűrűséggel rendelkeznek – nagyjából egy resolver 51 főre.
Miért Fontos Ez (a Menő Faktoron Túl)
Legyünk tisztában: a DNSFS abszolút nem megoldás éles környezetben való tárhelyre. Lassú, megbízhatatlan, teljesen ellenőrizetlen, és hajlamosan biztonsági rémálom. Az internet teljes átvizsgálása nyitott resolverekért komoly etikai kérdéseket is felvet a hozzájárulásról és a hálózati határokról.
De nem ez a lényeg.
A DNSFS azt a fajta kreatív, határokat feszegető gondolkodást képviseli, amely előreviszi a hálózati rendszerek megértését. Rávilágít, mennyi rosszul beállított infrastruktúra létezik az interneten, fontos beszélgetéseket indítva a biztonság megerősítéséről. Bemutatja a cache-elt adatok meglepő állandóságát az elosztott rendszerekben. És megmutatja, hogyan lehet a látszólag merev protokollokat váratlan módon újragondolni.
Emlékeztetőül is szolgál: az internet sokkal kaotikusabb, mint gondolnánk. Azok a milliónyi nyitott resolver? Otthoni routereken, IoT eszközökön, vállalati felszerelésen és minden között futnak. A legtöbb adminisztrátornak fogalma sincs, hogy a DNS szolgáltatásai kívülről elérhetők.
A Tanulság Fejlesztőknek
A DNSFS nem fogja holnap tárolni az alkalmazásod adatait, de értékes leckéket kínál:
A protokollok csak kiindulópontok. A DNS-t domain-feloldásra tervezték. Ez nem jelenti azt, hogy erre korlátozódik.
A biztonsági feltételezések számítanak. A nyitott resolverek azért léteznek, mert valaki rosszul állította be. Mindig ellenőrizd az infrastruktúrád kitettségét.
A kreatív korlátozások innovációt szülnek. A legjobb hackek gyakran váratlan korlátozások között születnek. A DNSFS azért létezik, mert valaki megkérdezte: „mi lenne, ha a cache-t használnánk?"
Az internet furcsább és formálhatóbb, mint a legtöbben gondolnánk. Néha a legérdekesebb rendszerek azok, amelyeknek valószínűleg nem is szabadna működniük.
Találkoztál már szokatlan protokoll-kihasználásokkal vagy kreatív infrastruktúra-trükkökkel? A NameOcean csapata szereti hallani, hogyan tolják a fejlesztők a technológia határait.