IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/12/31
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
AreEnn
Most2
Nausicaa
Nikat
Opax
Vort
WayBest
acetone
anon2
anontor
b3t4f4c3
banona
fidoid
grimreaper
itsAMe
k60_
ncop
nemiga2
onon
onon1
overflow
polistern
poriori
profetikla
qend
r00tobo
soos
teeth
tensor
typhoon_
uis
un
user
weko
whothefuckami
колдыр
orignal LeaseSets: 401
orignal похоже поменяли стратегию
Vort у меня лизсеты как обычно. LeaseSets: 220 (это при Transit Tunnels: 18109)
Vort по поводу вчерашних коммитов: на 2.50.1-3-gd4c47d90 за 10 часов аптайма не было ни креша ни зависания
Vort по поводу 8319dd6: этот коммит на всякий случай или действительно такое происходит сейчас?
ubd так чего смысл есть транк собирать?
Vort если задолбали проблемы (которые починены в последних коммитах) и хочешь рискнуть - то стоит
Vort orignal: не помогло исправление часов. завис у меня узел
Vort вот такая картина при зависании: paste.i2pd.xyz/?db209de45e7fc6d7#7gSnpgE1NxY4wpf65xmh2gu4wA7gFrTE9k29Lqw7fdkt
Vort работал у меня узел на уровне логирования error, а как завис - я переключил уровень на debug
Vort вот выдержка из лога grep "from future\|exceeds clock skew":
Vort зависание, скорее всего, случилось в 12:21:38
Vort а debug уровень я включил в 12:25:30
Vort что ещё странно - во время зависания была повышенная нагрузка на CPU: paste.i2pd.xyz/?21977a21f0283084#aMGQVXCrA2vtHSZ7C3F7Di8Ru5PXVHrPUfyMmG2ZQFY
Vort адрес одного из i2p узлов с моего скриншота, 107.189.1.175, принадлежит выходному узлу Tor
Vort если в процессе пир теста действительно принимается время от произвольных узлов, то это надо исправлять
` > принадлежит выходному узлу Tor
` Дадада, конечно, конечно..конечно )00
Vort ээ. я криво выразился, да? вот он: metrics.torproject.org/rs.html#details/292FCACE773DC259B799914A23BE65A6A6178E8F
Vort ну и это может быть совпадение, конечно же
Vort хмм. а это, кстати, могло быть подключение не через Tor
Vort на том адресе узел с разрешенными входящими
Vort флудфил
Vort похожая конфигурация на мою короче
Vort странно, что сейчас к нему нормальный коннект идёт
Vort то есть, у него, скорее всего, часы в порядке
Vort непонятно тогда, почему он не отрубился вместе со всеми
Vort во время глюка моего узла
conscius_ а если у моего сервера listen на 127.0.0.1, к нему смогут достучаться из i2p?
orignal Vort по поводу такого коммита это результат обсуждания с дедом как должно быть правильно
orignal скорее всего какой то тред завис
orignal надо бы отладчиком в этот момент поключиться
conscius_ ага! Да, может, просто прогревается ш2з на телефоне без иггдрасиля медленно и мучительно
orignal какой твой вопрос я не понял
` он сам не понял
Vort orignal: глянул логи которые я скинул?
Vort там странный эффект
Vort NTCP2: SessionRequest time difference
Vort с очень различающимися значениями
Vort вообще не похожими на то, что в NTCP2: RouterInfo is from future
Vort если в "from future" тысячи, то в "SessionRequest time difference" - миллиарды
orignal глянул но не понял в чем мысль
orignal ты думаешь это таки часы?
orignal просто я неправильно сделал?
Vort да, я думаю, что часы
Vort но детали пока неясны
Vort откуда миллиарды к примеру? это секунды?
Vort NTCP2: SessionRequest time difference 1566499968 exceeds clock skew
orignal так посмотри по коду что печатается думашеь я помню
orignal я думаю там миллисекунды
Vort (int)(ts - tsA)
Vort auto ts = i2p::util::GetSecondsSinceEpoch ();
Vort секунды это. и что-то очень дохрена секунд
orignal а сколкьо счас epoch в секундах?
orignal может там tsA ноль?
Vort ты про вот это? The current Unix epoch time is 1704028936
Vort там скорее мусор
Vort или в наших часах мусор
Vort и пофиг что в пакете
orignal 1704028970
orignal возможно
orignal вот что я сделаю
orignal если разница в SSU2 больше 24 часов то считаю просто ошибкой
Vort предполагая, что основное количество узлов добросовестно ломилось к моему узлу, вывод таков, что это мусор у моего узла был
Vort при чём, меняющийся
orignal логично?
orignal такой вопрос
Vort так это может быть повреждение памяти где-то
orignal а ты тот параметр пробовал?
Vort отрубать синхронизацию?
orignal чтобы убедиться что это точно синхронизация а не что то другое
Vort не пробовал. но если зависания пропадут, это мало что покажет
orignal покажет что проблема имеено в этом месте
Vort ну сейчас соберу значит свежий коммит и попробую отрубить синхронизацию
Vort а может быть что проблема рядом и цепляет часы как бы
Vort грубо говоря, повреждение памяти около этого места
Vort а вообще хз конечно
orignal повреждение памяти чего? то глобальной переменной со смещением?
Vort да это я почти наугад написал. просто мусорные значения в NTCP2: SessionRequest time difference как бы намекают
Vort даже из нескольких смещений по 50 тыщ никак миллиард не получить
Vort а самих по себе миллиардов почти не видно в логе
orignal а если пришел SSU2 пакет с мусором?
Vort кстати. я кое что видел. может это тебе подсказка будет
Vort SSU2: SessionRequest token mismatch. Retry
Vort довольно дофига было
orignal а ну это обычное дело
orignal ну короче я добавлю проверку смещения не более 24 часа
Vort так а смысл вообще этой синхронизации какой тогда?
orignal даже если у чувака неверная временная зона все равно достаточно
Vort я не пойму в каких случаях она должна срабатывать
Vort а, ну типа только зона
orignal когда часы съехали на несколько минут
Vort а если батарейка биоса сдохла, то работать не будет?
orignal что бывает довольно часто
orignal так у него много чего тогда не будет работать
orignal если дата совсем неправильная
orignal обычно бывает дата правильная просто часы расходятся
Vort ну тогда логично про 24 часа. хотя эту багу чётко выловить надо бы
Vort 24 часа могут её просто замаскировать
orignal ну это да я просто думаю о будущих атаках
Vort orignal: по поводу отрубания фичи с синхронизацией через SSU2. что-то я не вижу, где это
Vort кажется, нашёл. nettime.frompeers
orignal nettime.frompeers=false
Vort с документацией у этой фичи не очень-то
Vort такс, я в рестарт
orignal надо написать будет
Vort orignal: смотри что я нашёл. это опять выборка из лога с утренним зависанием: paste.i2pd.xyz/?c651f23266bfb47c#RWuL97XuxWzye3DkMjd4HC7JAyuwxCZvbz6psKT6cvm
orignal ну это понятно
orignal потому что у тебя часы сдвинулсиь
Vort так на числа посмотри
Vort это уже даже не миллиарды, а дохуяллиарды
orignal да хуня какя то
relaybot 13mauzer: да
orignal короче смотрим что с отключенной синхронизацией
Vort оно то так. но надо бы понять, откуда при 4 байтном таймстампе берётся 8 байт мусора
orignal там 8 байт для смещения
Vort да, но добавляется туда ведь 4 байта?
Vort смещение изначально ноль
Vort затем прибавили 4 байта
orignal ну видимо несколько раз
orignal или много раз
Vort да и вообще, это же не важно, что там в g_TimeOffset именно для этого сообщения
orignal возможно смещение не в ту сторону ставится
orignal важно
Vort adjusted BY ведь
Vort а там знаковые переменные
orignal потому что GetSecondsSinceEpoch выдает с ним
orignal я просто думаю может смещение ставлю не в ту сторону?
Vort знаковые переменные говорю же
Vort их нельзя переполнить так просто
Vort в AdjustTimeOffset: offset = (m_PendingTimeOffset + offset)/2;
Vort всё блин. мусор попал или в m_PendingTimeOffset или в offset
Vort при чём, 8 байтный мусор
orignal все
orignal нашел багу
orignal счас закоммичу
orignal починил
orignal вот багу нашли
Vort хорошо. но всё равно природа огромных чисел неясна
orignal нарастает при каждом соединении вместо коррекции
orignal так сказать положительна обратная связь
Vort то есть, там что-то типа прогресии выходит?
orignal типа да
Vort ну тогда понятно
orignal просто не надо писать код бухим))
Vort этот баг объясняет большие числа, но не объясняет, какого фига вообще узел попадает в эту ветку
Vort orignal: поясни, пожалуйста, таймстампы собираются таки со всех подряд пакетов пока Testing идёт или есть какой-то фильтр?
Vort просто если со всех подряд, то атакующий вполне может упорно срать негодными таймстампами и когда-то нибудет таки попадёт на Testing
Vort когда-нибудь*
Vort то есть, важно, чтобы это наш узел выбирал (рандомом), чьим таймстампам доверять
Vort иначе получается, что выбирает атакующий
orignal да со всех с кем в этот момент устанавливаются соединения
orignal нет это мы выбираем
orignal с кем соединяться
Vort только исходящие?
orignal тот ответ прилетает в SessionCreated
Vort тогда для сбивания времени дважды должно не повезти с рандомным выбором узла
orignal case eSSU2SessionStateSessionCreatedReceived:
orignal case eSSU2SessionStateTokenReceived:
orignal только в этом состоянии
orignal именно
Vort а это откуда вылазит? SSU2: RouterInfo in SessionConfirmed is from future for 57778 seconds
Vort уже входящие? или тоже исходящие?
Vort пытаюсь понять, связаны эти строчки или нет
orignal RI это другое
orignal по нему часы не меняются
orignal SessionConfirmed да это входящее
Vort ещё вопрос (давно интересующий): разве узлы со сдвинутым временем не дисконнектятся и их RouterInfo не выкидываются?
orignal R4SAS тут пшек чего то выдал
orignal а вот этого я не помню
orignal из будушего да выкидываются
Vort просто это странная ситуация, что к ним вообще возможны исходящие
orignal а из прошлого ну по истичени.
orignal ну смотри
orignal допустим у него таймстамп сутки назад
orignal и почему невозможно то?
orignal может он реально сутки назад опубликовался
orignal а сам роутер годный
orignal просто у тебя в netdb запись старая
Vort 50к смещения вроде из будущего были
Vort то есть, к узлам из будущего исходящих быть не должно?
orignal из будущего должны выкидываться
orignal либо в netdb в момент получения был порядок а часы у него поехали быстрее
Vort вот это уже важно
Vort короч надо проверить, каким образом 50к из будущего может добраться до функции синхронизации времени
orignal например рестартовали
orignal всю железку
orignal а часы не сихнронизировались
Vort надо подумать, какие могут быть причины для установки SSU2 соединения "по нашей инициативе"
Vort с пир тестом понятно - это должен быть рандом
Vort а вот насчёт всего остального - не уверен
Vort к примеру, если рвётся NTCP2, то пойдёт ли реконнект?
Vort то есть, не может ли атакующий так загадить сеть, чтобы начали теряться пакеты и завис Testing, а потом начать рвать коннекты со своим модифицированными узлам, провоцируя реконнект по SSU2?
orignal там случайный выбор
orignal в приципе может конечно запросить построение тоннелейц
Vort слишком уж большое невезение должно быть чтобы дважды за время Testing словить неправильное время
Vort такое ощущение, что с чистым рандомом это крайне маловероятно
Vort дважды коннект к одному узлу пойти не может? во время перегрузки сети
Vort ну то есть чтобы дважды от одного узла словить неправильное время
conscius а если у меня сайтик и до него долго идут коннекты, и он лежит на ноде с network: firewalled - symmetric nat, есть смысл вырубать ipv4 и насаживать его на иггдрасиль?
Vort conscius: мне кажется, что без разницы. сеть сейчас тормозит сама по себе из-за атак
conscius так и атакуют? Вот же =(
Vort можно меньше хопов сделать для дестинейшена, но это, конечно, снизит анонимность
Vort под атакой 3ххоповые туннели очень плохо строятся
conscius Network: Mesh на телефоне, думаю я вообще первый кто так сделал)
conscius ускорилось дико
conscius 4 минуты, tunnel creation success rate 44% на телефоне через игу
conscius хоть бы выкуп чтоли потребовали или чего, зачем отаки
` забесплатно можно и побольше отак
` и почащще
orignal может и к одному и тому же
orignal на узлы с ygg атака не влияет
orignal нет не надо ipv4 выключать
orignal symmetric nat порядок
Vort как я понимаю, с "nettime.frompeers = false" в логах должно вылезти "Clock skew detected" при попытке испоганить время узла
Vort если вдруг несколько подряд таких сообщений вылезет - значит, это не случайность
orignal именно так
orignal счас я сделаю вот что
orignal если 2 смещения сильно расходятся то считать их лажей
orignal все сделал думаю последний коммит в 2023
Vort я примерно так это и представлял. но против атаки это не поможет
orignal естественно нет
orignal тут надо более сложный алгоритм
Vort это делает случайность ещё менее вероятной
orignal типа список пиров куда пир тест отправили
Vort мне кажется, что вначале нужно более качественное логирование
orignal и смотреть только их
Vort чтобы было понятно, из-за чего пошёл коннект к узлу
Vort ну и вариант с доработкой пиртеста... это опять то же, о чём я и думал )
Vort уже столько доработок для него запланировано... )
Vort такое ощущение, что его полностью переделать придётся
` Кто-то написал что-то 🦀переделывать🦀???
` )00
orignal ну первое что я сделаю это разнесу по времени 4 и 6
orignal и сделаю интревалы в конфиге
Vort интервалы между чем? между пакетами или между тестами?
orignal между тестами
Vort это вообще странно. зачем?
orignal на 4 надо чаще а на 6 реже например
orignal а то счас одинаково и это непривильно
Vort ну одинаковость сбить - это нормально. чтобы нагрузка была равномернее
orignal ну вот я и хочу для начала их разнести
Vort но вот надо ли юзеру это задавать - сомневаюсь
orignal одному чуваку надо
Vort между пакетами - и то важнее задавать. хотя и для этого мне кажется, что можно универсальные значения подобрать
orignal потому что у него в определнное время становится Firewalled
orignal потому что у опососа какое то оборудование бывает перегружено
Vort реально становится?
orignal нет
orignal тесты фейлятся
Vort если сделать динамическое количество пакетов - то эта проблема уйдёт
orignal да кстати надо экспоненциальный интервал
orignal следущий тест отправляется все с большим интервалом
Vort можно и это, но максимальное количество тоже надо увеличивать
Vort 5 пакетов просрать - это запросто. а вот 50 - это уже явно глючит сеть
orignal логично