Security policy
First edition, 31 August 2026.
Reporting a vulnerability
Write to security@minice.ai in English or Russian. Include what you did, what you expected, and what happened.
- We acknowledge within 3 working days that a person has read it.
- We tell you within 10 working days whether we consider it a vulnerability and what we intend to do.
- We tell you when it is fixed, and credit you if you would like to be credited.
There is no bug bounty. We say so rather than letting silence imply one. If a report gets no human answer within 10 working days, that is our failure and publishing after that point is reasonable.
Safe harbour
Follow this section and we will treat your work as research, not as an attack. We will not pursue you and will not ask a platform or host to.
You may, against the hosts in scope:
- probe authentication and authorisation boundaries against your own account;
- register an account in order to test;
- report anything you find, including what you found by accident.
Please do not:
- scan at a rate that degrades service for other people — ask us first and we will usually say yes and tell you when;
- access, modify or retain another person’s data. If you can demonstrate access, stop and tell us. One record you already reached is evidence; a dumped table is not research;
- use social engineering against us, our users or our suppliers, or attempt physical access;
- disrupt anything on purpose — no denial of service, no deletion, no locking accounts;
- publish before we have had a reasonable chance to fix it. Ninety days from acknowledgement is our default; shorter if it is being exploited, longer if you agree it is warranted.
Scope
In scope — we operate these:
api.minice.ai— the API behind the desktop applicationastra.minice.ai— the international storefront and account pagesknice.tech— the Russian storefront and account pagesauth.minice.ai— the identity provider both storefronts and the client useminice.ai— the marketing site- the Astra desktop application, on every platform we publish it for
Out of scope, each for a stated reason:
auth.test.knice.tech— a retired identity provider being decommissioned. It still answers and is deliberately not maintained. Findings about migrating off it are in scope and welcome.- Third-party services — payment processors, mail, hosting. Their own policies apply. How we use them is in scope: an exposed credential of ours, an unauthenticated webhook of ours, an open redirect of ours.
- Findings that require an attacker who already controls the user’s machine, unless the point is that we made it worse than it had to be.
- Scanner output with no analysis, missing headers with no demonstrated impact, self-XSS.
Two things worth knowing before you test
The desktop client is not a security boundary.Its own “authorized” state is derived from verified claims, so it is correct when nothing is tampering with it — but it runs on your computer and you can patch it. What holds is that the API re-verifies the token signature and re-checks the entitlement role on every request. “I flipped a boolean in the client and the UI opened” is expected behaviour of a program running on your own machine. “The API served a request it should have refused” is a real finding and we want it.
The API holds no payment credential. A storefront takes the payment and relays the fact of it over a credential bounded by rail, tier, identity namespace, period length, how far ahead it may grant and how many grants a day. A stolen relay credential cannot grant an unbounded entitlement, or one on a rail it was not minted for.
What the desktop app stores, and what it sends
Stated plainly, because the alternative is a user who believes a protection that is not there. Someone running as you, on your machine, gets everything. That is true of almost every desktop application; it is here because people assume otherwise.
- Your sign-in credential is encrypted at rest, and on Linux and macOS the key sits in the same directory. On Windows it is DPAPI, which decrypts on request for your account. So the encryption defends against the file copied without its key — a leaked backup, a synced folder, a disk image — and against nothing else. A stolen credential is a session theft, not an escalation: the API re-checks the issuer and the entitlement on every request.
- The app passcode is a screen lock. It encrypts nothing. A locked install and an unlocked one have identical files, and deleting the record unlocks the app on the next start with the session intact. What it does is stop someone at the keyboard.
- Everything else on disk is plaintext — conversation transcripts including dictated input, the contents of files the assistant read and the arguments of every tool it ran, plus long-term memory, caches and logs.
- Astra is network-active while idle. With no action from you it checks the session roughly every seven minutes while signed in, refreshes its token and fetches the plugin catalogue.
- There is no analytics, telemetry or crash reporting. Verified absent across our own code rather than asserted. The debug log that records full prompts is local and off unless you switch it on.
- Plugins run with no sandbox. A plugin is an ordinary program running as you, with your files, your network and your session. The permission list governs what a plugin may ask Astra to do, not what it may do to your machine. The signature proves who published the bytes, never how they behave. Installing one is a decision of the same weight as installing any other program.
Политика безопасности
Первая редакция, 31 августа 2026 года.
Как сообщить об уязвимости
Пишите на security@minice.ai по-русски или по-английски. Опишите, что вы сделали, чего ожидали и что произошло.
- В течение 3 рабочих дней подтверждаем, что письмо прочитал человек.
- В течение 10 рабочих дней сообщаем, считаем ли мы это уязвимостью и что намерены делать.
- Сообщаем, когда исправлено, и указываем вас, если вы этого хотите.
Программы вознаграждений нет. Мы говорим это прямо, чтобы молчание не читалось как её наличие. Если на сообщение за 10 рабочих дней не ответил человек — это наша вина, и публикация после этого срока разумна.
Гарантии исследователю
Если вы соблюдаете этот раздел, мы считаем вашу работу исследованием, а не нападением, и не преследуем вас.
Можно, в отношении хостов из области действия:
- проверять границы аутентификации и авторизации на своей собственной учётной записи;
- завести учётную запись для проверки;
- сообщать обо всём найденном, в том числе найденном случайно.
Пожалуйста, не надо:
- сканировать с интенсивностью, ухудшающей работу сервиса для других — спросите заранее;
- получать доступ к чужим данным, изменять или сохранять их. Если доступ получен — остановитесь и напишите нам. Одна запись как доказательство — это свидетельство, выгруженная таблица — уже не исследование;
- применять социальную инженерию и пытаться получить физический доступ;
- намеренно нарушать работу — никаких отказов в обслуживании, удаления, блокировок;
- публиковать до того, как у нас была разумная возможность исправить. По умолчанию — 90 дней с момента подтверждения.
Область действия
Входят: api.minice.ai, astra.minice.ai, knice.tech, auth.minice.ai, minice.ai и настольное приложение Astra на всех платформах, где мы его публикуем.
Не входят: auth.test.knice.tech — выводимый из эксплуатации провайдер личности, который намеренно не сопровождается (находки про переезд с него — входят); сторонние сервисы платежей, почты и хостинга — но то, как мы их используем, входит; находки, требующие, чтобы нападающий уже управлял машиной пользователя; вывод сканера без анализа.
Два факта, полезных до начала проверки
Настольный клиент не является границей безопасности. Его собственное состояние «авторизован» выводится из проверенных утверждений токена, но исполняется на вашей машине, и вы можете его изменить. Держит другое: API заново проверяет подпись токена и наличие роли на каждом запросе. «Я поменял значение в памяти клиента, и интерфейс открылся» — это ожидаемое поведение программы на вашем компьютере. «API выполнил запрос, который должен был отклонить» — настоящая находка, и она нам нужна.
У API нет платёжных реквизитов. Платёж принимает витрина и передаёт сюда только факт оплаты — по учётным данным, ограниченным рельсом, тарифом, пространством имён, длиной периода, горизонтом и числом выдач в сутки.
Что настольное приложение хранит и что отправляет
Прямо, потому что иначе человек будет полагаться на защиту, которой нет. Тот, кто работает под вашей учётной записью на вашей машине, получает всё. Это верно почти для любого настольного приложения; сказано потому, что обычно считают иначе.
- Учётные данные входа зашифрованы на диске, но на Linux и macOS ключ лежит в той же папке. На Windows это DPAPI, который расшифровывает по запросу вашей учётной записи. То есть шифрование защищает от копии без ключа — утёкшей резервной копии, синхронизированной папки, образа диска — и больше ни от чего. Украденный токен — это кража сессии, не повышение прав: API заново проверяет издателя и право доступа на каждом запросе.
- Код-пароль приложения — это блокировка экрана. Он ничего не шифрует. Заблокированная и разблокированная установки имеют одинаковые файлы, а удаление записи снимает блокировку при следующем запуске, сессия при этом цела.
- Всё остальное на диске — открытым текстом: расшифровки разговоров вместе с надиктованным, содержимое прочитанных ассистентом файлов и аргументы каждого запущенного инструмента, долговременная память, кэши и журналы.
- Astra обращается к сети в простое. Без каких-либо ваших действий она проверяет сессию примерно раз в семь минут, обновляет токен и запрашивает каталог плагинов.
- Аналитики, телеметрии и отчётов о сбоях нет. Проверено по нашему коду, а не заявлено. Отладочный журнал, записывающий запросы целиком, — локальный и выключен, пока вы его не включите.
- Плагины работают без песочницы. Плагин — обычная программа, запущенная от вас, с вашими файлами, сетью и сессией. Список разрешений управляет тем, о чём плагин может попросить Astra, а не тем, что он может сделать с машиной. Подпись доказывает, кто опубликовал байты, и ничего не говорит об их поведении. Установка плагина — решение того же веса, что установка любой другой программы.