#Mastodon #Pixelfed #FAIL #security #ActivityPub
Вместо эпиграфа— У вас дыра в безопасности!
— Ну, хоть что-то у нас в безопасности...
«Вылетит слово — не поймаешь, а у нас догонят, поймают и посадят»
Коротко:Вы решили вручную одобрять подписчиков и думаете, что кроме одобренных никто не увидит ваши постыдные постики? #ActivityPub отправляет сообщения не просто «подписчикам», а на их сервер. После этого сервер должен проявить порядочность и показывать только тем, кто на вас подписан.
Pixelfed, однако, игнорирует вопросы одобрения подписки для внешних серверов. В результате, если вы одобрили кого-то из пикселфеда, ваши «подзамочные» посты будут доступны всем юзерам с того сервера.
Тада-а-а-м! Собсно, не только пикселфеда это касается, баг (или злонамеренное действие) доступности сообщений с якобы ограниченной видимостью возможен примерно везде, где не используется E2EE шифрование, #НоЭтоНеТочно. «Что знают трое — знает и свинья».
@johan Да нет там никакого бага. Принцип тот же, что у почтового сервера - если у меня почта на Яндексе и ты мне откуда-то пишешь, то письмо получает сервер и решает кому показать. По идее не должен показать не тому, но технически это может случиться и иногда это даже так нужно (например, если у меня пересылка стоит).
Не говоря уже о возможности серверу читать всю базу писем в принципе.
Это нормально для таких кейсов, щас бы поверх сраной социалочки E2EE наворачивать.
если у меня почта на Яндексе [...] По идее не должен показать не тому
Ага, кроме тов. майора и рекламного алгоритма 😉
щас бы поверх сраной социалочки E2EE наворачивать
Matrix? 😉
а почему сервак складирует криво потоки из почтовых ящиков отдельных аккаунтов
Кэширование не только лишь картинков, но и постов?
@johan Кэширование ни при чём.
Просто нет "раскладки по ящикам", сервер сохраняет себе один пост и записывает кому его показывать. Представь, что на каком-то сервере у тебя 1000 подписчиков, ты написал что-то - не отправлять же это тысячу раз отдельно и не хранить тысячу одинаковых копий? А если ещё отредактируешь позже? А связи с комментариями и прочие лайки? Это же дикий оверхед.
@shuro Выше пишут, что есть. Но это по ходу вопрос терминологии.
Вот, например, взять больную тему ответов в треде. Открыв тред, ты увидишь ответы только от тех, на кого подписан сам или кто-то на твоем сервере. Следовательно, оно таки не «в ящики» приходит. 🤔
@johan Там "виртуальные" почтовые ящики :) Т.е. когда ты пишешь пост, то у него есть набор получателей, как у письма. Доставляется каждому из перечисленных.
Но под капотом сервер-отправитель смотрит "ага, Вася, Петя, Маша на одном сервере, отправлю им одним куском", сервер-получатель его тоже не размножает для каждого отдельно, а сохраняет один раз и помечает кому можно показать.
Вот с этим "кому можно показать" тут и глюк.
Впрочем, если бы раскладывалось индивидуально и независимо, всё равно могут быть проблемы типа "отправили Васе, а положили Маше, перепутав номер ящика". У меня был такой сбой во Френдике - личные сообщения отправлялись тупо не тому, какой-то индекс уезжал :))
@shuro Ну, погоди. Я ХЗ, что там с «ящиками» (влом изучать, сорян). Кроме ящиков же есть треды, есть глобалка, в которой я вижу что? — То, что пришло кому-то в «ящик» на моем сервере.
Разве не так?
@grumb Блин, лениво: сам я пока ничего писать не собираюсь, а от того, что я погляжу, в его работе ничего не изменится же.
@johan Да, всё верно.
Представь, что вот есть почта, обычная такая. У тебя там есть ящик и у соседки Маши там есть ящик, и у Светы тоже. И вот ты и Маша на меня подписались.
Я получил уведомление с тех пор все свои нетленки шлю и на эти ящики. Твоя почта, соответственно, принимает и хранит. Но поскольку ни им хранить две одинаковых пачки писем неинтересно, ни мне отправлять, то на самом деле я отправляю одно письмо каждый раз, просто перечисляю на конверте кому его показывать. И почта твоя тоже хранит его в этом одном экземпляре.
Ещё на конверте может быть пометка "секретно" или "публично". Если "секретно" - значит, больше никому не показывать. А если "публично" - то почтальон его чисто по приколу выкладывает заодно под стекло в зале ожидания, чтобы и другие могли посмотреть. Вот это - глобалка и прочие алкоритмы.
Ты приходишь и спрашиваешь у почтмейстера что нового. Он показывает тебе всё, что пришло на твоё имя. А что пришло только Маше или Свете - не показывает, а им твоё личное не показывает.
Поэтому для всех всё работает как задумано - свои адреса, как бы свои ящики, но чужое публичное тоже можно посмотреть, а почте экономия - всё хранит в одном экземпляре. Так должно работать и норм работает, в целом.
А вот у Пиксельфида почтмейстер оказался придурковатый. Ты на меня подписан и Маша. Иногда я шлю письма с пометкой "секретно - для Йохана и Маши". Он вам показывает, а в паблик не показывает. Это норм.
Приходит Света и говорит - хочу подписаться на Шуро, отправь ему надушенную открытку с этим предложением. Почтмейстер отправляет. И должен теперь дождаться от меня подтверждения об этом, ну и писем для Светы. Только я взял и не одобрил запрос, поэтому продолжаю слать интимные письма с пометкой только для вас двоих. Но почтмейстер говорит - слушай, Светус, ты тоже, вроде, на него подписывалась, у меня тут зописано. Хуле я вникать буду, смотри всю евоную почту тоже, наверняка тебе тоже можно.
@johan Никакой бутафории, всё работает как задумано.
Если что-то не работает, то не работает.
Вообще, подобный подход используется примерно абсолютно вообще везде, кроме некоторых мессенджеров. Тебя же не смущает, что так работает твой банк, например? А там у тебя деньги лежат.
Почему от соцсети, где основное назначение в публичном взаимодействии, ждут чего-то иного - мне не очень понятно.
@shuro @johan Всё так. Всё завязано на доверии к почтмейстеру. Хочет он или умеет в приватность, то будет тебе "как бы" приватность, за исключением того, что он сам-то твою переписку со светами и машами читает. По крайней мере, обязан вскрывать конверты, чтобы размножать копии по списку. Также рядом сидит тащмаёр, и тётяваря прибирается у него в кабинете и на столе. И ещё миллиона два обслуживающего персонала мимокрокодилов. Т.е. да, приватность как бы есть, но бутафорская. Не надо ей пользоваться.