Skip to content

Conchshell 2.9.0 — релиз безопасности (обновитесь как можно скорее)

Choose a tag to compare

@github-actions github-actions released this 02 Aug 11:54

🔐 2.9.0 — обновитесь как можно скорее

Это релиз безопасности. Проведён аудит всего приложения по семи поверхностям атаки; найденное исправлено. Одна из находок — критическая.

🔴 Критично: удалённое выполнение кода

r-shell слушал локальный порт (9001) для связи терминала с бэкендом и принимал любое соединение — без пароля, без проверки, кто подключается. А команда «запусти локальный терминал» не требовала никаких условий: она сразу запускала вашу оболочку.

Из-за того, что WebSocket не подчиняется обычным правилам изоляции сайтов, подключиться мог не только другой процесс на вашем компьютере, но и любая веб-страница, которую вы открыли в браузере. То есть простое посещение сайта могло дать чужому коду полноценную командную строку от вашего имени — а дальше: пароли серверов (они пока хранятся открыто), ключи из ~/.ssh, подмена доверенных ключей серверов.

Исправлено: канал теперь требует секретный токен, который создаётся при каждом запуске и передаётся только самому приложению. Веб-страница получить его не может.

Остальное исправленное

  • Внедрение команд. Шесть операций с файлами и логами подставляли пути в команды без экранирования. Для одной из них путь приходит от самого сервера — достаточно было создать на нём файл с апострофом в имени, чтобы выполнить произвольную команду.
  • Выход за пределы папки при скачивании. Вредоносный SFTP/FTP-сервер мог подсунуть в списке файлов имя вида ../../../.zshrc и при скачивании папки записать файл куда угодно на вашем диске.
  • FTPS принимал любой сертификат. Соединение шифровалось, но не проверялось — то есть любой, кто может вклиниться в сеть, читал ваш пароль FTP. Теперь сертификат проверяется. Если ваш FTPS-сервер с самоподписанным сертификатом — подключение будет отклонено с понятным объяснением; это сделано намеренно.
  • Нажатия клавиш попадали в лог. При включённом отладочном логировании в файл писалось всё, что вы набирали, — включая пароль, введённый в sudo.
  • Пароль FTP в логах — закрыто.
  • Временные файлы редактора (при «Открыть в VS Code») создавались доступными для чтения всем локальным пользователям. Теперь только для вас.

Что стоит сделать

Если вы пользуетесь r-shell на компьютере, к которому имеют доступ другие люди, или часто открываете браузер параллельно с работой — смените пароли серверов после обновления. Уязвимость существовала во всех предыдущих версиях, и следов её эксплуатации приложение не сохраняет.

🔒 Зашифрованное хранилище паролей — готово ядро

Пароли пока по-прежнему хранятся открыто, но в этой версии готова вся основа для их шифрования: формат хранилища, шифрование, атомарная запись, парольная фраза, миграция и резолв паролей на стороне Rust. Ключевое решение: команды «выдай пароль» не существует вовсе — даже скомпрометированный интерфейс не сможет их выгрузить. Включение по умолчанию — в следующем релизе.

📦 Установка

macOS (Apple Silicon): скачайте .dmg. Если Gatekeeper ругается:

xattr -dr com.apple.quarantine /Applications/r-shell.app

Linux (x86_64): .AppImage, .deb или .rpm.

Установленная версия обновится сама.