DNSFS: Облачно съхранение без тяло
DNSFS: Най-странният хак за съхранение на данни, който ще видиш
Нека си представим нещо. Файлове, съхранявани не в облачни сървъри, а в DNS кешовете на милиони машини по целия свят. Твоите данни се носят из планетата, разпределени по устройства, които не са твои — в резолвъри, за съществуването на които дори не подозираш.
Звучи като сюжет от научен роман, нали? Е, някой го направи.
Откритието, което промени всичко
Преди стигнем до интересните неща, нека поговорим за нещо, което повечето разработчици приемат за даденост: DNS TTL стойностите. Когато поискаш име на домейн, резолверът пази резултата за определено време, преди да провери отново. Повечето хора смятат, че става въпрос за минути или часове.
Но ето какво е интересното: някои резолвъри с удоволствие ще съхраняват записи дори цяла седмица, ако ги помолиш подходящо.
Това откритие породи един fascinating въпрос: ако DNS кешовете могат да държат данни толкова дълго, можем ли умишлено да съхраняваме файлове в тях? Не просто domain имена, а истински данни?
Отговорът, малко изненадващо, е да.
Запознай се с DNSFS
DNSFS черпи вдъхновение от по-ранен хак на име PingFS — система, която съхраняваше данни в ICMP ping пакети. Проблемът на PingFS? Трябваше непрекъснато да пращаш пинг-и напред-назад, за да останат данните живи. Спри ли се — и всичко изчезваше.
DNSFS променя нещата драматично. Тъй като DNS резолвърите кешират отговори, щом съхраниш част от данните в кеша на един резолвер, тя остава там без да е нужно да я изискваш непрекъснато. Резолверът свършва работата вместо теб.
Помисли за това. Използваш инфраструктурата на други хора — без тяхното знание — като разпределена файлова система с автоматично дублиране.
Как работи на практика
Техническото изпълнение е едновременно гениално и притеснително.
За да проработи, са ти нужни отворени DNS резолвъри — сървъри, които отговарят на заявки за произволни домейни, не само за тези, за които са авторитетни. Теоретично тези сървъри трябва да са защитени с firewall от публичния интернет, защото са риск за DDoS атаки. Но ето проблемът: милиони устройства се доставят с неправилно конфигурирани DNS услуги, достъпни отвсякъде.
Системата работи, като разбива файлове на малки парчета, кодира ги като DNS заявки и ги разпределя из интернет. Всеки резолвер, който получи и кешира заявка, вече държи част от файла ти. За да възстановиш данните, просто изпрати заявки към същите тези резолвъри и сглоби парчетата отново.
Красотата (и ужасът) на системата е, че данните остават в кеша до изтичане на TTL — без да е нужна непрекъсната връзка.
Сканиране на интернет за отворени резолвъри
Тук нещата стават едновременно впечатляващи и малко неудобни.
Създаването на DNSFS изисква да намериш отворени резолвъри по целия свят. Това означава сканиране на милиарди IP адреси, за да се установи кой ще отговаря на DNS заявки за произволни домейни.
Един разработчик използва masscan в комбинация с BPF (Berkeley Packet Filter) правила, за да идентифицира ефективно само резолвърите, които ще са полезни — филтрирайки авторитетни сървъри и други шумове. Резултатът? Почти 4 милиона отворени DNS резолвъри по целия свят.
Географското разпределение е смайващо. Китай води с над 1.4 милиона отворени резолвъри, следвани от САЩ, Южна Корея, Русия и Бразилия. Но ето по-интересната метрика: когато нормализираш спрямо брой потребители, малки държави като Сейнт Китс и Невис имат забележително висока плътност на резолвъри — приблизително един резолвер на всеки 51 души.
Защо е важно (освен че е готино)
Да бъдем ясни: DNSFS със сигурност не е решение за production съхранение на данни. Това е бавно, ненадеждно, напълно нетествано и направо казано — кошмар за сигурността. Също така сканирането на целия интернет за отворени резолвъри повдига сериозни етични въпроси за съгласие и граници на мрежите.
Но това не е и целта.
DNSFS е пример за онази креативна, предизвикваща граници мисъл, която разширява разбирането ни за мрежови системи. Показва колко много неправилно конфигурирана инфраструктура съществува в интернет, което предизвиква важни разговори за затягане на сигурността. Демонстрира изненадващата трайност на кеширани данни в разпределени системи. И ни учи, че протоколите могат да бъдат използвани по напълно неочаквани начини.
Също така ни напомня, че интернетът е много по-разхвърлян, отколкото предполагаме. Онези милиони отворени резолвъри? Те работят на домашни рутери, IoT устройства, корпоративно оборудване и какво ли още не. Повечето администратори дори не подозират, че техните DNS услуги са достъпни отвън.
Какво да отнесем като разработчици
DNSFS няма да съхранява твоите application данни скоро, но предлага ценни уроци:
Протоколите са само начални точки. DNS е създаден за превод на имена. Това не означава, че е ограничен до това.
Допусканията за сигурност имат значение. Отворени резолвъри съществуват, защото някой е сбъркал конфигурацията. Винаги проверявай exposed повърхността на твоята инфраструктура.
Креативните ограничения пораждат иновации. Най-добрите хакове често идват от работа в неочаквани граници. DNSFS съществува, защото някой е попитал: "А какво, ако използваме кеша?"
Интернетът е по-странен и по-податлив на промяна, отколкото повечето от нас предполагат. Понякога най-интересните системи са тези, които вероятно изобщо не биваше да работят.
Натъкнал ли си се на необичайни експлойти на протоколи или креативни infrastructure хакове? Екипът на NameOcean обича да чува за изобретателните начини, по които разработчиците бутат технологиите до крайности.