Conchshell 2.9.0 — релиз безопасности (обновитесь как можно скорее)
🔐 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.
Установленная версия обновится сама.