В приложении есть чужие данные — расписание и имена учеников, — а на сервере живут токены YClients. Поэтому у сообщений о дырах должен быть один адрес, и он не публичный.
Во вкладке Security репозитория есть кнопка «Report a vulnerability» — она открывает приватное обсуждение, видное только владельцу проекта. Пишите туда.
Не заводите публичный issue. Пока дыра не закрыта, публичное описание делает её доступной всем, кто читает ленту репозитория, — а закрывается она не в тот же час.
В сообщении полезно: что именно уязвимо, как воспроизвести, версия приложения (видна на экране «О программе») и версия Android. Скриншоты и логи — по желанию; перед отправкой уберите из них имена учеников.
Только последний релиз. Старые версии не чинятся — вместо этого выходит новая и приложение обновляет себя само. Если вы сидите на сборке годичной давности, первое действие при любой проблеме — обновиться.
Проект личный, у него нет дежурной смены и нет SLA. Честный ответ: отвечаю, когда увижу. Обещать 24 часа было бы враньём, а обещание, которое не выполняется, хуже отсутствующего.
Что могу пообещать: сообщение не пропадёт, и пока дыра не закрыта, я не раскрою её публично сам.
NEIRO_PUSH_API_KEY в APK. Ключ действительно лежит в сборке открытым
текстом, достаётся распаковкой файла — и это известно. Он открывает ровно один
эндпоинт: попытку входа по логину и паролю YClients, под ограничением попыток
(5 за 15 минут на устройство и на IP). Ни данных, ни админских ручек он не
даёт: ADMIN_API_KEY в приложении нет, токены YClients в сборку не попадают —
они живут только на сервере владельца.
Разбор целиком, вместе с отвергнутыми вариантами, — docs/updater/RISKS.md § Секреты в публичном APK.
Туда же относятся: отсутствие обфускации строк, доступ к данным приложения на устройстве с root, и то, что APK со страницы релизов можно распаковать. Это свойства открытого проекта, а не дефекты.