Хайбане.ru — Кодач
pfpmd
Reply to 362 thread [ Back ]
[ Reply ]
 
Attach file
  • Supported file types are jpg, jpeg, png, gif, webm, swf, rar, zip, 7z, mp3, flac, ogv, txt, mp4
  • Bump limit is 500
  • Max files size allowed is 25 MB
  • Images greater than 200x200 will be thumbnailed.
[ Close form | Show rules Hide Rules ]
pfpmd Золотце 14 July 2018 (Sat) 04:01:41
#362 Reply
png, 7.18 KB, 400x400
Привет. Это тред для пиара pfpmd: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/
pfpmd - это тесно сплетенные в одно целое анонимный чат и текстовые борды. Тематика: computer science, математика, программирование, технологии, криптоанархизм, софт и т.п.

pfpmd существует с 2015 года. Изначально он был попыткой воскресить один ресурс, который назывался лолкс, но теперь это в прошлом. Населен небольшим количеством людей и имеет низкую активность, что и хотелось бы изменить. Из-за того, что pfpmd это tor hidden service, периодически туда заходят люди ищущие цп, гуро и т.п., но, ничего не найдя, быстро уходят. pfpmd не модерируется, бан невозможен, как и цензура. Логотипом pfpmd является символ Ω, в честь Chaitin omega number https://en.wikipedia.org/wiki/Chaitin's_constant

Фичи pfpmd:
-Борды не фиксированы, в форме создания поста можно указать имя новой борды и она будет создана динамически в момент создания поста.
-Можно менять описание борды, это может делать любой пользователь сколько угодно раз;
-На странице с чатом по дефолту отображаются сообщение не только из чата, но и со всех борд. Это поведение можно изменить в настройках.
-На станице чана отображаются треды со всех борд (у нас это было еще до нульчана). Но можно отобразить только треды какой-то одной борды, просто перейдя по ссылке этой борды.
-Картинки отображатся с некоторых ресурсов, например, imgur, twitter. Также показываются превьюшки видео с youtube и некоторых имиджборд. Список будет пополняться в будущем.
-Текстовое поле ввода чата поддерживает подобие командной строки. Есть команды для создания тредов, ответа в тред, изменения описания борды.
-Можно скрыть отображение всех сообщений с кириллицей.
-Поддерживается форматирование блоков кода. Подсветка синтаксиса реализована через highlight.js и выключена по дефолту, но ее можно влючить в настройках.
-Поддерживается форматирование математических формул через KaTeX. Но эта фича тоже выключена по дефолту.
-Есть страница с логами всех сообщений (включая борды) в обратном по дате порядке.

Основные принципы:
-Максимальное облегчение сервера, весь (кроме статического) html генерится на клиенте, сервер отправляет клиенту только сырые данные;
-Минимум зависимостей у клиентского кода. Всё, за исключение подсветки синтаксиса и математических формул, реализовано на голом javascript, без использования всяких jquery, vue.js и прочих фреймворков. Исходный код KaTeX и highlightjs подгружается только когда фичи включены в настройках.
-Отсутствие цензуры.

Планы развития:
-Децентрализация на уровне серверов. Будет множество инстансов pfpmd, которые синхронизируются между собой. Юзер сможет подключаться к любому из серверов, сможет поднять свой.
-Сделать клиентское приложение с консольным интерфейсом и веб интерфейсом. Чтобы юзер мог без запуска торбраузера заходить на pfpmd или вообще без гуйни, а также чтобы иметь свою локальную базу сообщений, по которой можно делать поиск и что угодно.
-Допилить дизайн.

Вторым постом будет FAQ. Но, в любом случае, я буду отвечать в тред.
Золотце 14 July 2018 (Sat) 04:03:32 #363 1 Reply
FAQ
>По ссылке пустая страница без сообщений. Ничего не работает?
Надо включить js для pfpmd в настройках noscript. Исходный код не обфусцирован.

>А что если вайпер все завайпает или даже уронит сервер?
Ничего страшного, есть бэкапы, переподнимем, если что.

>Я не могу терпеть спам. Почему бы не чистить говно?
1. У меня нет на это времени. 2. Понятие спама у каждого свое. 3. Будущее клиентское приложение должно будет поддерживать пользовательские фильтры, каждый сам себе будет модератор. 4. Это нарушает один из основных принципов.

>Есть ссылка в клирнете?
Нету, pfpmd доступен только через тор.

>Что означает pfpmd?
Ничего, это просто первые пять символом рандомного хостнейма, который сгенерил тор.

>Что за лолкс?
https://lurkmore.to/%D0%9B%D0%BE%D0%BB%D0%BA%D1%81
Золотце 24 July 2018 (Tue) 00:33:18 #365 2 Reply
>>364
Без мочерации, ага, там банится тор. Пошел на хуй!
Золотце 10 August 2018 (Fri) 22:36:51 #366 3 Reply
>>363
>Надо включить js для pfpmd в настройках noscript.

Не надо. Господи, когда вы уже поймете, что js-приложения это полноценные приложения для которых, в отличие от десктопных собратьев, нет никакой инфраструктуры для безопасного распространения кода (с цифровыми подписями), управления версиями (с возможностью отката), и анализа. Ну и количество CVE связанных с браузерными движками, особенно с js, говорит само за себя.
Золотце 12 August 2018 (Sun) 23:17:56 #367 4 Reply
Золотце 13 August 2018 (Mon) 21:02:30 #368 5 Reply
>>367

Ок, может быть сподоблюсь как-нибудь прочитать код и переписать его на чем-то вроде Ada (не умею в питон, да и ногу в нем прострелить запросто). Но то что ты мне предлагаешь скачать неподписанный архив симптоматично.
Золотце 27 August 2018 (Mon) 09:26:54 #369 6 Reply
>>366
> нет никакой инфраструктуры для безопасного распространения кода (с цифровыми подписями)
Есть
https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
> управления версиями (с возможностью отката),
Кеширующие заголовки с сервера? Версия через параметр запроса? Заголовок? Сотня вариантов
> и анализа.
Лол что? Девтулзы хрома дадут на клык любой современной ide
Золотце 27 August 2018 (Mon) 10:10:37 #370 7 Reply
>>369

Как работают цифровые подписи на десктопе? Ты скачиваешь приложение, скачиваешь подпись, проверяешь подпись, и только после этого запускаешь приложение. Как работает веб? Все начинается с последнего пункта, с запуска приложения после ввода URL. Что там вышлет сервер то и будет. Хакер завладеет сервером, значит изначальная страница будет с вредоносным кодом. В случае десктопа вредоносный код просто не пройдет проверку подписи.

>Кеширующие заголовки с сервера? Версия через параметр запроса? Заголовок? Сотня вариантов

Что вышлет сервер то и выполнит клиент, клиент ничего не решает. Да, он может отправить заголовок, параметры, а сервер их может просто проигнорировать.

>Девтулзы хрома дадут на клык любой современной ide

Ну и как ты загрузишь страницу без выполнения кода, чтобы ты смог сначала его проверить, а потом запустить, и запустить именно тот код который ты проверил? С NoJS можно загрузить страницу без кода, проверить код отдельно, затем выключить NoJS но это приведет к перезагрузке страницы и сервер может выслать другой код, который ты не проверял, и так при каждой перезагрузке. В этом суть веба - все решает сервер, клиент служит серверу, а не пользователю.
Золотце 27 August 2018 (Mon) 11:27:51 #371 8 Reply
>>370
> Ты скачиваешь приложение, скачиваешь подпись, проверяешь подпись, и только после этого запускаешь приложение.
Подпись гарантирует только состояние приложения, что оно не изменилось во время доставки, она не гарантирует, что приложение безопасно. Злоумышленник абсолютно также вместе с приложением угоняет и подпись. Подпись, как и в вебе, нужна только для защиты от mitm, если скомпрометировано само приложение -- ничего уже не поможет

> Хакер завладеет сервером, значит изначальная страница будет с вредоносным кодом.
Ну или с вредоносным десктопным приложением

> Что вышлет сервер то и выполнит клиент, клиент ничего не решает. Да, он может отправить заголовок, параметры, а сервер их может просто проигнорировать.
> Ну и как ты загрузишь страницу без выполнения кода, чтобы ты смог сначала его проверить, а потом запустить, и запустить именно тот код который ты проверил?
Ставишь брейкпоинт в самое начало кода и построчно запускаешь и проверяешь, вообще без каких-либо NoJS и прочего. Но зачем это нужно? JS выполняется в изолированной среде, никакого вреда он причинить не может не будем фантазировать про 0-day уязвимости в интерпретаторе, потому что на десктопе приложение априори небезоспасно без всяких 0-day и может делать в принципе что угодно

Но это все шиза. Невозможно пользоваться чьим-то софтом, если ты не доверяешь его автору. Даже если исходники открыты, физически невозможно проверять каждую версию каждого софта и разбираться что и как работает.
Единственная возможная защита от злоумышленника - это максимально изолированная среда с запросами на права для всего критичного и защита от mitm, к чему и пришел веб/мобайл. В десктопных приложениях есть защита от mitm, но у приложений абсолютно небезопасная среда
Золотце 27 August 2018 (Mon) 12:57:56 #372 9 Reply
>>371
>Подпись гарантирует только состояние приложения, что оно не изменилось во время доставки, она не гарантирует, что приложение безопасно.

Разумеется, но ты не понимаешь для чего нужны подписи.

>Злоумышленник абсолютно также вместе с приложением угоняет и подпись

Для того чтобы сделать валидную подпись для левого приложения нужен приватный ключ которым владеет один из разработчиков. Т.е. нужно угнать еще и этот ключ что весьма нетривиально так как инфраструктура для хостинга и для генерации подписей как правило раздельная именно чтобы не угнали ключ.
Т.е. суть подписей в том что если ты доверяешь разработчикам (которых ты идентифицируешь по публичному ключу) то валидная подпись говорит что да, приложение подписано разрабами, а не хакером.

>Ставишь брейкпоинт в самое начало кода и построчно запускаешь и проверяешь, вообще без каких-либо NoJS и прочего.

Ок. Но опять же, при первой же перезагрузке страницы сервер может выдать новый код. С десктопными приложениями обновления контролирует пользователь.

>JS выполняется в изолированной среде, никакого вреда он причинить не может не будем фантазировать про 0-day уязвимости в интерпретаторе

А зачем фантазировать если 0-days уже были и не раз? Из sandbox'а вирусы вырываются с завидной регулярностью, потому что даже на уровне спецификаций веб переусложнен и полон динозаврового говна, а реализовать такое безопасно практически нереально. Не забывай еще про JIT-компилятор. Браузеры на сегодняшний день одни из самых сложных программ. Написать десктоп-приложение для сраного чятика и доски и формально верифицировать абсолютно реально, попробуй верифицируй браузер.

https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=firefox+javascript
https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=google+chrome+javascript

>на десктопе приложение априори небезоспасно без всяких 0-day и может делать в принципе что угодно

https://en.wikipedia.org/wiki/Snappy_(package_manager)
https://en.wikipedia.org/wiki/Flatpak
https://en.wikipedia.org/wiki/Apparmor

>Даже если исходники открыты, физически невозможно проверять каждую версию каждого софта и разбираться что и как работает.

Зависит. Если скрипты состоят в основном из свистелок и большая часть функций реализована сервером, что встерчается часто, то я могу ограничиться проверкой только нужного кода, запретив выполнение всего остального. Даже следить за версиями получится, но опять же, контроля за версиями в случае веба нет.
Золотце 27 August 2018 (Mon) 20:33:46 #373 10 Reply
>>369
Девтулзы хрома неплохие, но это именно что набор утилит, а не ide, так что ничему они на клык не дают. Это разные задачи, в иде редко можно отладить лайв-код клиентской стороны приложения.
Золотце 27 August 2018 (Mon) 23:30:55 #374 11 Reply
>>371
>Ставишь брейкпоинт в самое начало кода и построчно запускаешь

А как поставить брейкпойнт перед тем как скрипты выполнились в первый раз? Т.е. есть какой-то другой ритуал вместо ввода URL, нажатия Enter, и потом уже установки брейкпойнта где-нибудь?
Золотце 31 August 2018 (Fri) 21:11:14 #376 12 Reply
>372
>Для того чтобы сделать валидную подпись для левого приложения нужен приватный ключ которым владеет один из разработчиков. Т.е. нужно угнать еще и этот ключ что весьма нетривиально так как инфраструктура для хостинга и для генерации подписей как правило раздельная именно чтобы не угнали ключ.
Тебе дают подпись и signing key в первый раз. Как ты поймешь, что это еще не взломанная версия? Угонять прайват ключ не нужно, его просто новый создадут и все.

>Т.е. суть подписей в том что если ты доверяешь разработчикам (которых ты идентифицируешь по публичному ключу) то валидная подпись говорит что да, приложение подписано разрабами, а не хакером.
Опять же, это все не работает, если разработчик аноним.
Золотце 01 September 2018 (Sat) 03:36:17 #377 13 Reply
>>376
>Тебе дают подпись и signing key в первый раз. Как ты поймешь, что это еще не взломанная версия? Угонять прайват ключ не нужно, его просто новый создадут и все.

Нет, тебе дают только подпись. Signing key это приватный ключ, к нему у тебя доступа нет. Соответствующий публичный ключ ты получаешь каким-то другим способом. Например приложения из официального репозитория убунту подписаны приватным ключом разработчиков убунту, а соответствующий публичный ключ включен в саму убунту. Т.е. если ты скачаешь хакнутое приложение с валидной подписью из этого репозитория, оно будет подписано приватным ключом соответсвующим другому публичному ключу и это приведет к ошибке во время установки. Если разрабы решат использовать новую пару ключей они подпишут новый публичный ключ (или сообщение о переходе включающее fingerprint нового публичного ключа) старым приватным ключом. Или как в случае с убунту: ты скачиваешь новую убунту которая подписана старым приватным ключом, а она уже содержит новый публичный ключ. Т.е. главное - получить верный публичный ключ в первый раз. Например разрабы OpenBSD публиковали свои ключи в официальном твиттере и на разных конференциях. Кто-то публикует их в бложиках, если еще https://en.wikipedia.org/wiki/Keybase, WoT в самом GPG (например если ты доверяешь разрабам Debian то ты можешь проверить ключи разрабов Tails). Ну и сервер с которого ты качаешь файлы и подписи может быть отличным от сервера на котором лежат публичные ключи или их отпечатки. В этом случае HTTPS тоже предоставляет определенную гарантию особенно если компания разворачивает свою собственную PKI.

Что я хочу этим сказать? Ты не хрена на понимешь в подписях и видимо в public-key cryptography. Я не буду больше ничего объяснять, читай сам https://en.wikipedia.org/wiki/Digital_signature и гугли что непонятно.

>Опять же, это все не работает, если разработчик аноним.

А разве речь шла об анонимах? Но в любом случае есть AppArmor и прочее что я приводил. Т.е. приложению можно обрубить доступ ко всему и смотреть куда оно тянет ручки. Если к безобидным ресурсам то можно дать доступ, иначе приложение можно снести.

Что ответишь на >>374 ?
Золотце 01 September 2018 (Sat) 14:43:58 #378 14 Reply
>>377
Ты путаешься в терминилогии.
Например, ты хочешь скачать тор браузер и проверить подпись.
Для этого ты должен заимпорить signing key 0x4E2C6E8793298290 https://www.torproject.org/docs/signing-keys.html.en
командой
gpg --keyserver pool.sks-keyservers.net --recv-keys 0x4E2C6E8793298290

И уже только потом ты можешь проверить подпись:
gpg --verify torbrowser-install-7.5.6_en-US.exe.asc

На которую тебе выдаст ворнинг:
gpg: Good signature from "Tor Browser Developers (signing key) " [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Notice that there is a warning because you haven't assigned a trust
index to this person. This means that GnuPG verified that the key made
that signature, but it's up to you to decide if that key really belongs
to the developer. The best method is to meet the developer in person and
exchange key fingerprints.

>А разве речь шла об анонимах? Но в любом случае есть AppArmor и прочее что я приводил. Т.е. приложению можно обрубить доступ ко всему и смотреть куда оно тянет ручки. Если к безобидным ресурсам то можно дать доступ, иначе приложение можно снести.
"Но то что ты мне предлагаешь скачать неподписанный архив симптоматично."
Золотце 01 September 2018 (Sat) 15:39:31 #379 15 Reply
>>377
>Что ответишь на >>374 ?
Я другой.
Золотце 02 September 2018 (Sun) 05:40:48 #380 16 Reply
>>378
>Ты путаешься в терминилогии.

Ну ок, имелось в виду что для подписи используется приватный ключ, а генерируется для этого не один ключ а пара. То что иногда публичный ключ из этой пары называется signing key это конечно баг. Остальная логика моего поста - про установление соответсвия личности разрабов и ключей - верна. Т.е. для веба отсутствует инфраструктура которая есть для десктоп приложений, что и требовалось доказать. Поэтому все предъявы фанатов что нечего тут разводить, веб безопасен/безопаснее десктопа - в /dev/null. Не включай скрипты, козленочком станешь.

>"Но то что ты мне предлагаешь скачать неподписанный архив симптоматично."

В чем конкретно предъява (нас здесь трое епт)?
[ Reply ]
[ Get new posts ] [ Back ]
[ Mark all posts ]