Comments 36
Я серьезно: проект написан нейронкой, внешнего аудита криптографии не было, и каждый человек, который внимательно посмотрит в исходники, поможет сделать его лучше.
А внутренний аудит был? Вы сами посмотрели внимательно исходники и можете подписаться своим именем, что там всё в порядке, без дисклеймера “ну там нейронка писала”?
Особенно приглашаю тех, кто в комментариях уже готовит тезис «вайбкоду нельзя доверять секреты» – вот вам открытый код, THREAT_MODEL.md и почта для репортов.
Вам не кажется, что это работает немного не так? Вы выдвигаете тезис “вайбкоду можно доверять секреты”, вам его, в первую очередь, и доказывать.
Конечно был аудит, чатгпт два раза спросили оставил ли он бэкдоры, нейронка мамой поклялась
про первый вопрос, честно – нет. внутреннего аудита в том смысле, в котором это слово имеет право употребляться, независимая построчная вычитка криптографии человеком, который в ней разбирается – не было. и подписаться своим именем без дисклеймера я не могу; дисклеймер в статье стоит не для красоты, а потому что это ровно то, за что я могу отвечать. с моей человеческой стороны были требования, неудобные вопросы к слопусу клодусу, +-полтора месяца почти ежедневного использования на собственных серверах и функциональное тестирование, но это не относится именно к аудиту безопасности
вы правы насчет бремени доказательства, и спорить не стану, но тезис «вайбкоду можно доверять секреты» я не выдвигал, и лично доказать его не смог бы – оно либо есть и так, либо оно накапливается в процессе использования / анализа и подобных процессах. мой тезис скромнее: вот код, threat model и воспроизводимая сборка – любой сможет проверить это самостоятельно. это не доказательство корректности, это условия, при которых мою некорректность может обнаружить кто угодно. согласен, что финальный абзац статьи прозвучал как «докажите, что я неправ» – это неудачная формулировка, имелось в виду приглашение к проверке, а не перекладывание бремени доказательства
и дополнительный факт – клиентом можно пользоваться не доверяя ему секреты, но без синхронизации и используя системный ссш-агент
Я так и не понял зачем мне приложение, если есть терминал. Может вы знали о Remmina?
подобных клиентов существует множество, но есть проблема в том, что они так или иначе не совпадали с тем, что я хотел:
1) настоящая кроссплатформенность (макос, винда, линукс + айос и андроид)
2) хороший (для меня) дизайн
3) возможность синхронизации без платной подписки, и в идеале не через костыли по типу отдельных гистов / гугл доков и прочего
4) иметь возможность хорошо организовать сервера, если их становятся минимум десятки
я не спорю, что оно надо не всем, но личные предпочтения и выбор все еще остаются вашими
Вот тут если вы топите за 4 пункт, то в клиенте не помешало бы это так же реализовать.
Например было бы неплохо завезти поиск в пункте "Все хосты", например для того чтобы найти нужный хост и отредактировать его настройки.
Я вообще без негатива, но в UI очень много проблем которые мешают в работе.
почти по тем же причинам навайбкодил себе похожее но до ума доводить нет сил и времени, но у меня была ещё потребность реализовать "автоматизацию" установки и настройки всяких приложух, а заниматься ансиблом или что там для этого есть мне сильно в падлу
Зачем это нужно когда есть банально termius в котором твои данные хоть и хранятся на сервере, но шифрованы по ключу который ты хранишь локально(много английских слов)?
Непонятно, зачем хранить ключ на носителе, когда его можно хранить в мозгу (много английских слов)
Хороший годный 4096 битный ключ сложно хранить в мозгу. Разве что для уникумов что число Пи с любого места цитируют..
Хороший годный 4096 битный ключ сложно хранить в мозгу.
А зачем Вам хранить в мозгу «хороший годный 4096-битный ключ»? Чем Вас верно батарея лошадь скрепка не устраивает? Вы аж кюшать не смогёте, если Ваше SSL‑ соединение, по которому Вы качаете фотки котиков, сломают не за 100500, а всего‑то за 5000 лет?
(И не надо мне про «эксперты говорят, что надо так»: продавцы менеджеров паролей лопат что угодно скажут, лишь бы продать свою лопату; приведите конкретный случай, когда иначе ну никак невозможно.)
Можно по разному конечно. В том числе и без запоминания 100500 разных паролей.
Проблема в том, что брутфорсом SSH серверов занимается не 1 бот, а десятки/сотни тысяч, 24/7/365. Поэтому 5000 лет это мягко говоря, оптимистичная оценка.
Да и в целом, рекомендую ознакомиться с атакой "Harvest now, decrypt later" (https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later).
брутфорсом SSH серверов занимается не 1 бот, а десятки/сотни тысяч, 24/7/365.
Ну где же они, где? Ко мне за последнюю неделю никто так и не постучался (я логи только что проверил).
Harvest now, decrypt later
Данные имеют свойство устаревать. Кроме того, поголовное внедрение SSL создало проблему фильтрации мусора («Где лучше всего спрятать гальку? На галечном пляже!»)
Аппаратный ключ неизвлекаем программно, и не ходит по каналам связи, угнать его можно только физически украв. Пароль у вас угнать очень несложно, даже перебирать его не надо - зашли браузером на связку, или посмотрели файл в телеге, и привет. Та же история с парольными менеджерами, где трой тырит зашифрованную базу, и пароль от нее - все пароли оказываются разом у злоумышленника... С учетом того, что сейчас 0-day уязвимости умеет искать нейросеть, теперь это уже не эксклюзивное дело спецслужб с топ-блекхатами, теперь искать и юзать дыры каждый школьник может.
в чем-то я с вами согласен, но реальность такова что любой публичный IP тут же попадает под атаку ботов. Я замерял - в среднем о 4 запросов на секунду с подбором пароля (и это с включенным фаилбаном и прочим, без ограничений я думаю было бы еще печальнее)
реальность такова что любой публичный IP тут же попадает под атаку ботов. Я замерял - в среднем о 4 запросов на секунду с подбором пароля (и это с включенным фаилбаном и прочим, без ограничений я думаю было бы еще печальнее)
Ваш sshd всё ещё слушает порт 22? Тогда боты уже идут к Вам!
Посмотрел свои логи — за последнюю неделю никто ко мне не стучался (дальше смотреть было лень).
банально termius
к слову сказать, эмуляция терминала в оном сделана как раз довольно анально — рендеринг лютое дно по скорости. Впрочем, я его последний раз лет 5 назад смотрел, если не больше, в теории могли уже приличное что-то притащить.
И вот тут вопрос, кстати, а в данном проекте собственно терминал на каком движке?
я лично пользовался термиусом очень много лет
для синхронизации у него требуется подписка 10$/мес, и честно говоря, я вообще не помню никаких упоминаний локального ключа и мало представляю, как оно работает, если там достаточно входа с своего аккаунта даже без наличия второго устройства
ну и экспортировать данные без подписки оттуда – довольно сомнительный экспериенс)
>внешнего аудита криптографии не было, и каждый человек, который внимательно посмотрит в исходники, поможет сделать его лучше
очень наивное мнение, что аудит безопасности делается так. вон, в linux последнее время кучу застарелых приколов нашли, а туда "тысячи глаз" таки реально смотрели, годами. только нифига не видели.
Отбросив моменты типа "это решает мою боль здесь и сейчас", и "это все нейрослоп, я не при делах", что модель безопасности и угроз держится на простых обещаниях, поговорим предметно из того что прям кричит и бросается в глаза.
1. Переизобретение Termius почти 1 в 1.
2. Уже гниющая архитектура и код. Слои текут, GOD объекты растут как на дрожжах, так что при текущем подходе проект очень скоро станет неподдерживаемым нейрослопом, либо цена поддержки проекта будет улетать в небеса за счет бесконечного перемалывания тонны спагетти-кода. И это все дал беглый просмотр кодовой базы за 10 минут. Что там будет, если начать вчитываться страшно представить.
3. Иллюзия безопасности по памяти. Чтоб юзер увидел секрет ядро должно передать его в JS фронта, где просто априори нет никаких mlock или как-то гарантированно занулить память.
4. Утечка мастер-токена в логи: Сервер печатает в логи одноразовый setup code. И это по сути дырень в ИБ, поскольку в корпоративной среде логи пылесосятся каким-нибудь агрегатором логов, доступ к которому уже имеет сильно больше постороннего народа, что повышает поверхность атаки, а для комплаенса это критично до ужаса. И уж не будем забывать что это просто само по себе нарушает принцип эфимерности и изоляции инит-секретов при деплое, что в случае компрометации логов превращает всю вашу чудесную безопасность в тыкву. Метаданные в сервере в ту же топку. Это не бьется с моделью "сервер ничего не знает".
5. Secure Enclave заявлен как универсальное решение, хотя это аппаратный модуль исключительно устройств маркируемых огрызком. На винде же это Windows Hello + TPM, на линуксах вообще нет ничего подобного, на сколько мне известно. И смешивать это все обзывая "Secure Enclave" априори не правильно.
6. "запись сессий в asciicast v2 формат" и ни слова про безопасность. Попахивает кейлоггером с мутной системой сбора.
7. russh. Почему? Чем обоснован выбор?
Так много вопросов и так мало ответов. Спасибо, у меня всё.
привет! спасибо за большой фидбек
1) да, по сути, клиенты сами по себе совпадают, но есть несколько отличий: проект полностью бесплатный и полностью опенсорсный, и для организации синхронизации достаточно поднять лишь свой сервер для синхронизации
2) ффи фасад действительно большой, но это чисто фасад для клиента, но я подумаю, как это можно улучшить
3) такое есть, но это только при сценариях того, что пользователь просматривает / экспортирует секрет, а в основном пути (ссш-подключения) оно через жс не проходит
а если сервер требует какого либо интерактивного ввода (пароль / 2фа), то оно все равно проходит через интерфейс
4) это не мастер-токен, это одноразовый бутстрап-токен, который по сути живет всего несколько минут до момента того, как администратор инстанса его введет в панельке. его можно задать еще через энв в UNISSH__SETUP__CODE, чтобы он не генерировался случайным образом. в случае с энвом на данный момент, он попадет в логи, но я запишу и исправлю это. но даже если его украдут до момента инициализации инстанса и инициализируют его, то максимум, что получит злоумышленник – это пустой инстанс в который все равно врядли попадут данные
5) справедливо, формулировка не совсем точна, на остальных платформах используются системные кейчейны, андроид в доработке пока
6) запись сессий выключена по умолчанию и тумблер для записи надо включать отдельно в настройках конкретного хоста в клиенте. запись хранится в зашифрованном виде в волте, как еще один вид секрета. ну и отправляется оно куда-либо только в случае синхронизации волта с сервером синхронизации
7) наиболее зрелая и живая реализация протокола, которую и я и клод отдельно друг от друга смогли найти; позволяет использовать только его на все 5 платформ
Ну то есть дополнительный слой над ssh-agent.
Отдельно порадовало, как получилось решить онбординг нового устройства: заходите с нового девайса через escrow sign-in (хэндл + пароль (при наличии) + Secret Key) – кейсет восстанавливается и расшифровывается прямо на устройстве, до сервера он не доезжает.
Сепаратли лайк, бикоз онбординг нью девайс: джойнимся с нью девайса через escrow sign-in (хэндл + пассворд (если пресент) + сикрет кей) – кейсет ресторивается и декриптуется прямо на девайсе, до сервера у него пинг инвалид.
Прекрасно жить в свободных Штатах при обеспеченных харчах,
При службе, при больших зарплатах, автомобилях и домах!
Здесь лишь одно немного грустно: язык не тот. Не как в Москве.
Не говорят они по-русски, хоть кол теши на голове!
Но к трудностям такого сорта любой из нас уже привык.
Мы спикаем по-русски гордо, мы кипаем родной язык.
Мы соль не спилаем на раны, подругу киссаем взасос,
На службе ранаем программы, когда реквестает наш босс.
Мы дринкаем сухие вина, энджоем собственный уют,
Мы лихо драйваем машины, берём хайвей (когда дают).
Когда окьюрится возможность, возьмем э фью денёчков офф,
Махнем в апстейт по бездорожью, в лесу напикаем грибов,
Накукаем такой закуски, какой не видел целый свет!
Дринкнём как следует, по-русски! Факнём жену на склоне лет!
А то — возьмём большой вакейшен, допустим, парочку недель,
В Париже, в дистрикте старейшем себе забукаем отель.
А там — и Рим не за горами, Мадрид, Берлин, едрёна мать!
Мы будем шопать в Амстердаме! Мы будем в Праге ланчевать!
При наших, при больших зарплатах нам вся Европа — по плечу!
Ах, хорошо в Юнайтед Штатах! Эх, травеляй, куда хочу!
Аппрочает весенний вечер, даркеет — прямо на ходу.
Стихают речи, гаснут свечи, и Пушкин спинает в гробу...
Вы про продукт рассказываете с задором, но SSH - штука чувствительная, поэтому стоят вопросы безопасности, так сказать. Тут выше много кто уже покритиковал, но я со своей колоколенки выскажусь.
Про архитектуру вы написали, но архитектуры у вас тут как таковой нет в том ключе, в котором она понимается в безопасности: что по common criteria, что по нынешним отечественным регуляциям надо рисовать картинку с квадратиками модулей и подсистем и интерфейсами между ними. Всё это не блажь, а надобно ради понимания поверхности атаки и общего представления, как оно работает.
Потом, большой недостаток: моде не следуете. Где у вас статический анализ исходных кодов? А это, между прочим, простой и автоматизируемый минимум. В глубинные ужасы фаззинга и прочих исследований лазить не будем, но вот статику сильно советую.
Пока вы будете поднимать свой селфхост сервер на расте, я просто закину конфиг ssh в гитлаб. Бесплатно, сердито и работает с любого утюга)
Удобный ssh клиент, а точнее, удобный фасад - это и правда боль. Я много лет юзал secureCRT, но на ноуте у меня сейчас линух и я решил поискать альтернативы. Оказалось, что это тот ещё геморрой. По удобству, близкому у секуре, я не нашел ничего, у сожалению. Моя основная проблема в количестве хостов. У меня около 600 сохранённых сессий, плюс пара проксей, которые прокидыают ssh туннели. И вот на линухе я так и не смог найти ничего подобного. Из плюсов хотя бы то, что секура есть в виде deb пакета и она из под wine запускается) termius вроде выглядит норм, но я с ним уже успел повозиться. На некоторых коммутаторах зависали telnet сессии или вводились символы как будто коммутатор на Марсе , с com портами тоже приколы были. В общем, не думал я, что переезд на линух в этом плане будет таким болезненным)
О, Taury уже нормально поддерживает ios? Наконец-то)
unissh – современный, опенсорсный SSH клиент с selfhosted zero-knowledge сервером для синхронизации данных