Обновления безопасности получает только последняя выпущенная версия. Более старые версии могут содержать уязвимости и не поддерживаются.
| Версия | Поддерживается |
|---|---|
| 0.5.x | ✅ |
| 0.4.x | ✅ |
| < 0.4 | ❌ |
Если вы используете старую версию, приложение предложит обновиться автоматически при запуске. Если автообновление недоступно, скачайте последнюю версию вручную:
https://github.com/iinquisitor/TextFormatter/releases/latest
- Внимание! Если вы используете старую версию TextReplacer версии 0.3-alpha и ниже, вам необходимо скачать новую программу TextFormatter вручную, старая программа потеряла свою актуальность и поддержку.
Не открывайте публичный issue на GitHub по вопросам безопасности.
Сообщайте об уязвимостях приватно через один из каналов:
- GitHub Security Advisories (предпочтительно): https://github.com/iinquisitor/TextFormatter/security/advisories/new (что это и как работает)
- Discord (личные сообщения): https://dsc.gg/pixel-pioneer —
найдите
ɪɴqᴜɪsɪᴛᴏʀ - Контакт через GitHub-профиль: https://github.com/iinquisitor
Пожалуйста, приложите:
- Описание проблемы — в чём уязвимость, какое влияние.
- Шаги воспроизведения — в идеале минимальный пример.
- Затронутая версия — видна в заголовке окна приложения и в Настройки → Об авторе.
- Операционная система — Windows / macOS / Linux, версия.
- Proof of concept — если применимо (скриншот, файл-пример, видео).
- Первый ответ в течение 72 часов.
- Оценка (серьёзность, затронутые версии, план) в течение 7 дней.
- Исправление и скоординированное раскрытие — я согласую с вами
график. Обычно:
- Критичные / высокие — патч в течение 7 дней, публичное раскрытие после того, как исправленная версия доступна не менее 14 дней.
- Средние / низкие — патч в следующем плановом релизе.
- Указание авторства в примечаниях к релизу, если хотите быть названным.
- Удалённое выполнение кода (RCE) через парсинг файлов (YAML, JSON, Markdown, конфиги)
- Обход доверенных папок (path traversal)
- Повышение привилегий через модель доверенных папок
- Обход подписи в механизме автообновления
- Внедрение кода через подсветчик синтаксиса Minecraft
- Утечка данных за пределы заявленной сетевой активности
- Отказ в обслуживании (DoS) через специально сформированные файлы (OOM, бесконечные циклы)
- Атаки, требующие физического доступа к машине жертвы
- Атаки, требующие от пользователя установить вредоносную версию вручную
- Уязвимости сторонних библиотек без практического пути эксплуатации в приложении (сообщайте о них разработчикам библиотеки)
- Социальная инженерия
- Отсутствие «best practice» заголовков, не влияющих на функциональность
- Проблемы, уже зарегистрированные и подтверждённые в трекере
Приложение следует этим принципам:
Приложение может читать и записывать файлы только внутри папок, которые пользователь явно сделал доверенными. Доверие выдаётся:
- выбором папки через нативный диалог «Открыть папку»;
- перетаскиванием папки в окно приложения;
- ручным добавлением папки в Настройки → Доверенные папки.
Ни одна папка не является доверенной по умолчанию, кроме собственной
подпапки приложения storage/ (используется для черновиков).
Список доверенных папок сохраняется в директории конфигурации приложения и восстанавливается при каждом запуске.
Пакеты обновлений криптографически подписаны приватным ключом Ed25519. Приложение проверяет подпись перед установкой любого обновления, сверяя её с публичным ключом, вшитым в скомпилированный бинарник на этапе сборки.
Если подпись не совпадает, обновление отклоняется, и пользователь видит сообщение об ошибке. Это защищает от атак «человек посередине» (MITM) и скомпрометированных точек распространения.
Приватный ключ подписи никогда не покидает машину разработчика (или GitHub Secrets в CI-пайплайне релиза).
Приложение не собирает и не передаёт:
- статистику использования;
- отчёты о падениях;
- содержимое файлов;
- пути к файлам;
- идентификаторы пользователя.
Единственный сетевой запрос — проверка обновлений по адресу
https://github.com/iinquisitor/TextFormatter/releases/latest/download/latest.json
раз в сутки (или по ручному запросу). Запрос содержит только
стандартные HTTP-заголовки — никакой идентифицирующей информации.
Все операции с файлами выполняются локально. Настройки хранятся
локально в localStorage приложения; снимки истории — локально в
директории данных приложения.
- Редактор CodeMirror изолирован средствами стандартного WebView.
- Рендеринг Markdown в модалках «История изменений» и «Обновление» вырезает сырой HTML.
- Цветовые коды Minecraft и теги MiniMessage отображаются как текст, никогда не вычисляются как HTML.
- Приложение не изолировано на уровне ОС — оно работает с привилегиями пользователя, который его запустил. Скомпрометированный бинарник или supply-chain атака на зависимости могли бы затронуть файлы пользователя.
- Механизм обновлений доверяет цепочке TLS-сертификатов GitHub. Если
бы сам GitHub был очень специфично скомпрометирован, атакующий мог
бы подсунуть валидно выглядящий
latest.json— но проверка подписи всё равно отклонила бы вредоносный бинарник. - WebView может генерировать crash-дампы на уровне ОС; приложение никуда их не отправляет.
Приложение зависит от экосистемы Tauri, React, CodeMirror и
небольшого числа Rust-крейтов. Уязвимости зависимостей
отслеживаются через cargo audit и npm audit в CI.
Безопасностно-значимые обновления зависимостей выпускаются как
патч-версии.
Если у вас есть вопросы по модели безопасности, не покрытые здесь, открывайте нечувствительный GitHub Discussion или пишите в Discord.