FreenetWiki : FrostAttackRus

HomePage :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
Oldest known version of this page was edited on 2008-04-19 21:27:33 by GrayAist [Attack of Frost]
Page view:
В 2008 году основное средство общения во Фринете - система конференций (досок, бордов) Фрост - оказалась под несколькими мощными атаками и функционирует с большим трудом.

Вначале какой-то владелец узла, пользуясь открытостью протоколов обмена и принципиальной анонимностью и нецензурируемостью сообщений во Фринете, подключил вместо себя к протоколу Фрост бота, то есть программу, автоматически пишущую сообщения. Сначала это были просто тупые куски текстов из американской классики. Люди быстро поставили на идентификаторы, с которых работали боты, признак "bad" - не показывать сообщения от этих идентификаторов. Спаммер начал писать анонимные сообщения в основные конфы - люди перестали читать анонимов. Спаммер усовершенствовал свою систему, ввёл автоматическую генерацию новых идентификаторов - люди стали маркировать их тоже. Спаммер перешёл на систему "новый ИД для каждого спам-письма", и стало бессмысленно маркировать их - тогда люди перешли на режим показа сообщений только от известных ИДов. Однако, это не позволяло новичкам писать вопросы (ведь новички, хоть и реальные люди, пока не известны) - новичков просили писать сообщения в конфах, пока не затронутых спамом, это позволяло маркировать их как "observe" - наблюдаемых и читать их. Именно тогда появилась версия Фроста, помечающая цветным шариком-маркером тех, кто пока имеет мало сообщений. Одно время спаммер пытался использовать вместо цитат посылку копий уже посланных кем-то сообщений со своими дополнениями, но это быстро приелось и такие копии было легко обнаружить и пропускать.

Чуть раньше спаммр подключил к своим ботам вместо тупого цитатника программу-генератор теста Тьюринга (автоматического собеседника, реагирующего на реплики человека своими и пытающего создать впечатление, что ему отвечает человек, а не машина). В результате на большинство сообщений стало появляться множество тупых и не очень ответов, например коротких "я согласен" или "ты дурак" или "объясните подробнее", или длинных и похожих на человеческие вопросы и ответы. Если англичане могли быстро, с первого взгляда, пропустить такие сообщения, неангличанам приходилось труднее, но постепенно все приспособились просто игнорировать такие сообщения - поскольку иного, более эффективного средства борьбы пока не нашлось.
Но именно тогда такие поиски началсь, и была предложена концепция FMS (Freenet Message System) - новая Фринетовская Система Сообщений, реализующая концепцию WoT (Web of Trust) - Сеть Доверия.

Словно стараясь подстегнуть разработку FMS, спаммер перешёл к DoS-атаке на Frost (Denial of Service - отказ в обслуживании). Уязвимым местом Фроста оказалась концепция извещений о сообщениях с использованием ключей KSK - общих, читаемых человеком ключей.
Пара слов об KSK: чтобы избежать необходимости передавать собеседникам ключи CHK и SSK, можно договориться о стандартном виде ссылок, не имеющих в своём наименовании ключа, определённого вида. И в такие ссылки паковать сообщение, используя для кодирования вспомогательный двусторонний (то есть и для шифровки, и для дешифровки) ключ, автоматически генерируемый строго стандартным способом из имени ссылки. В результате, если Иван Иванов хотел написать что-либо всем о себе, то он мог записать во Фринет текст, или ссылку - ключ CHK, или свой публичный ключ SSK, в виде ключа "KSK@ivan/ivanov/". И любой, кто попытался прочитать этот ключ, мог свободно сделать это и расшифровать, что ему писал Иван Иванов. А если Пётр Петров хотел бы подменить эту инфу и записать другое значение под тем же KSK "KSK@ivan/ivanov/", то Фринет ответил бы ему: "найдена коллизия - ключ уже есть!" и не стал бы ничего записывать. С другой стороны, если Пётр Петров успел бы опередить Иванова и записать "KSK@ivan/ivanov/" со своей ифой - то настоящему Иванову это бы сделать уже не удалось, ведь Фринет не проверяет и не сохраняет инфу о том, кто какой ключ записал или прочитал. Именно на этом и была основана атака.

Фрост пишет и читает сообщения, используя KSK стандартного вида, примерно такого: "KSK@frost/board/20080401/x/", где х - порядковый номер в конфе. Каждый день он последовательно перебирает номера, начиная с 0, пытаясь их прочитать. Если это удалось - полученная инфа (то ли само сообщение, то ли CHK сообщения - тогда для чтения сообщения Фрост читает этот CHK) отображается во Фросте в нужной конфе, и Фрост увеличивает номер на 1 и пытается прочитать следующее. Если не удалось - значит новых сообщений пока нет, но Фрост для предотвращения сбоев пытается прочесть ещё несколько сообщений, и лишь потом, запомнив последний номер в конфе, переходит к следующей. Вернувшись, он начинает просмотр не с 0, а с последнего прочитанного номера.
При записи, Фрост сначала читает конфу, определяя последний используемый номер, и лишь затем, сформировав KSK со следующим номером, пытается записать сообщение (или ссылку) в него. Если Фринет сообщает Фросту о коллизии - значит вероятно два Фроста пытались записать новое сообщение, и другой успел раньше; Фрост берёт следующий номер и повторяет попытку.

Спаммер, зная алгоритм, стал безо всякого Фроста записывать во Фринет KSK аналогичного вида с мусорной инфой - несуществующими ссылками, ведущими в никуда. И поскольку это относительно быстрая операция, он может писать сотни таких ссылок в десятки конф - а если запустит несколько узлов, то тысячи ссылок в сотни конф.
В результате добросовестные Фросты остальных участников вынуждены зря тратить время, проверяя подряд все эти сотни ссылок - ведь заранее, до попытки чтения, реальные ссылки ничем не отличаются от мусорных - все одинаково упакованы в стандартные для Фроста KSK.
Автор Фроста даже был вынужден выпустить новую весию (на данный момент от 4 Марта 2008), которая просто прерывает процесс работы с отдельной конфой после 30 безуспешных попыток чтения или записи - иначе перебор конф застревал наглухо. Такие конфы помечаются красным цветом с предупреждением, что попытка записи может оказаться безуспешной.- ведь для записи надо сначала найти первый свободный KSK, а искть можно лишь последовательным перебором, а заняты могут быть сотни ключей, а по мере перебора спаммер успевает занять всё новые...
В результате, основные конфы Фроста оказались практически полностью парализованы. Спаммеру пока не хватает мощности на все конфы, так что наша русскоязычная пока свободна, но при повышении активности могут заспамить и её. Поэтому автор Фринета счёл Фрост неработоспособным и даже исключил из стандартного инсталлятора (на мой взгляд большая ошибка) - теперь его надо ставить отдельно.
(одно время, спаммер как будто специально не трогал конфы freenet.0.7.bugs и fms, хотя знал о них и там шли важные обсуждения; поэтому даже было высказано обвинение, что это сам автор Фринета помогал спаммеру, чтобы обосновать снятие Фроста из стандартной поставки; но доказательств этому нет).

В результате, сейчас часть активности переместилась в систему FMS. Но меньшее удобство пользования и тот факт, чо пока программа написана на C, а не на Java, приводит к малому числу участников.
(описание FMS будет добавлено позднее здесь или отдельной статьёй)
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 5.1185 seconds