Разрешения и конфигурация манифестов Shustree

Безопасность и приватность пользователя — базовые принципы архитектуры Shustree. В отличие от многих традиционных сервисов, запрашивающих избыточный доступ к персональным данным, коду страниц и куки, наши клиенты используют строго необходимый технологический минимум разрешений.

Ниже представлен детальный аудит конфигурационных манифестов расширения Chromium и Android-приложения с официальными спецификациями для разработчиков.

---

1. Манифест браузерного расширения Shustree (Manifest V3)

Браузерный модуль Shustree работает на базе современного стандарта Manifest V3. Мы сознательно отказались от долгосрочного хранения сессий или отслеживания истории переходов, оставив только системные интерфейсы для управления прокси-маршрутизацией.

Просмотреть оригинальный manifest.json
{
"manifest_version": 3,
"name": "__MSG_appName__",
"version": "1.7.3",
"default_locale": "en",
"permissions": [
"proxy",
"tabs",
"alarms",
"storage",
"webRequest",
"webRequestAuthProvider"
],
"host_permissions": [
"*://shustree.ru/*",
"<all_urls>"
],
"description": "__MSG_appDesc__",
"icons": {
"16": "img/shustree16.png",
"32": "img/shustree32.png",
"48": "img/shustree48.png",
"128": "img/shustree128.png"
},
"background": {
"service_worker": "shustreeBackground.js"
},
"action":{
"default_popup": "shustree.html",
"default_title": "__MSG_defaultTitle__"
},
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self';"
}
}

Декларируемые разрешения (Permissions)

  • proxy — Главное системное разрешение. Позволяет расширению перенаправлять запросы к заблокированным ресурсам через защищенную сеть прокси-серверов Shustree.
    Документация Chrome Proxy API
  • tabs — Используется исключительно для определения URL в активной вкладке. Это необходимо для корректной работы алгоритма выборочной (селективной) маршрутизации трафика.
    Документация Chrome Tabs API
  • storage — Локальное изолированное хранилище в браузере. Применяется для сохранения пользовательских настроек расширения. Данные никогда не покидают устройство.
    Документация Chrome Storage API
  • webRequest и webRequestAuthProvider — Перехват сетевых запросов на системном уровне. Требуется для бесшовной аутентификации на наших прокси-узлах без ручного ввода паролей.
    Документация Chrome webRequest API
  • alarms — Легковесный таймер для периодической проверки доступности прокси-серверов и фонового обновления списков маршрутизации.
    Документация Chrome Alarms API

Разрешения на хосты (Host Permissions)

  • *://shustree.ru/* — Разрешает расширению безопасно обмениваться конфигурационными данными с официальным сайтом.
  • <all_urls> — Необходим для того, чтобы прокси-модуль мог маршрутизировать трафик к заблокированным медиаплатформам на любых доменах. Расширение не собирает и не анализирует содержимое страниц.
---

2. Манифест Android-приложения Shustree (AndroidManifest.xml)

Мобильный клиент Shustree построен вокруг стандартного системного каркаса VpnService. Это гарантирует, что весь туннелируемый трафик шифруется силами ОС на уровне ядра, а приложение не имеет лазеек для сбора рекламных идентификаторов (Advertising ID).

Просмотреть оригинальный AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Shustree"
android:networkSecurityConfig="@xml/network_security_config">
<activity
android:name="ru.shustree.shustreeproxy.MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.Shustree"
android:screenOrientation="fullSensor"
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="ru.shustree.shustreeproxy.data.ShustreeVpnService"
android:permission="android.permission.BIND_VPN_SERVICE"
android:exported="false"
android:foregroundServiceType="connectedDevice" >
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
</service>
</application>
</manifest>

Запрашиваемые низкоуровневые доступы

  • android.permission.INTERNET — Разрешает приложению устанавливать исходящие сетевые соединения для передачи зашифрованного прокси-трафика.
    Android API: INTERNET
  • android.permission.ACCESS_NETWORK_STATE — Необходим для отслеживания типа подключения (Wi-Fi/Cellular) и бесшовного переподключения туннеля при смене сети.
    Android API: ACCESS_NETWORK_STATE
  • android.permission.FOREGROUND_SERVICE и CONNECTED_DEVICE — Обеспечивают непрерывную фоновую работу прокси-службы в Android 14+ без риска внезапной выгрузки операционной системой.
    Google Play: Foreground Service Types
  • android.permission.BIND_VPN_SERVICE — Важнейшая декларация безопасности, гарантирующая, что доступ к интерфейсу управления ShustreeVpnService имеет исключительно ядро ОС Android.
    Android API: BIND_VPN_SERVICE
  • android.permission.VIBRATE — Используется только для легкого тактильного отклика при переключении состояний в интерфейсе.
    Android API: VIBRATE

В манифесте также зафиксирована жесткая конфигурация сетевой безопасности (networkSecurityConfig), полностью защищающая трафик приложения от атак перехвата (MITM).

Была ли эта статья полезна?