Shustree Permissions and Manifest Configuration
User security and privacy are core principles of the Shustree architecture. In contrast to many traditional services that request excessive access to personal data, page source code, and cookies, our clients operate on the strictly necessary technical minimum of permissions.
Below is a detailed audit of the configuration manifests for both the Chromium extension and the Android application, along with official developer specifications.
---1. Browser Extension Manifest (Manifest V3)
The Shustree browser module is built on the modern Manifest V3 standard. We have deliberately declined to implement long-term session storage or browsing history tracking, retaining only the system interfaces required to manage proxy routing.
View original 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';"
}
}
Declared Permissions
-
proxy— Core system permission. Allows the extension to route network requests to restricted resources through the secure Shustree proxy infrastructure.
Chrome Proxy API Documentation -
tabs— Used exclusively to determine the URL of the active tab. This is required for the proper execution of our selective routing algorithm.
Chrome Tabs API Documentation -
storage— Local isolated browser storage. Utilized to persist user settings within the extension. This data never leaves the local device.
Chrome Storage API Documentation -
webRequestandwebRequestAuthProvider— System-level network request interception. Required for seamless authentication on our proxy nodes without prompting the user for manual credential entry during active sessions.
Chrome webRequest API Documentation -
alarms— A lightweight timer used by the background service worker to periodically check proxy server availability and refresh routing rulesets.
Chrome Alarms API Documentation
Host Permissions
*://shustree.ru/*— Allows the extension to securely exchange configuration payloads with the official website.<all_urls>— Mandatory to enable the proxy engine to handle and route traffic to restricted digital platforms across various domains. The extension does not collect or analyze page contents.
2. Android Application Manifest (AndroidManifest.xml)
The Shustree mobile client is designed around the standard system framework VpnService. This ensures all tunneled traffic is encrypted by the OS at the kernel level, leaving the application with zero entry points to harvest Advertising IDs.
View original 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>
Requested Low-Level Permissions
-
android.permission.INTERNET— Allows the application to establish outbound network sockets to transmit encrypted proxy traffic.
Android API: INTERNET -
android.permission.ACCESS_NETWORK_STATE— Required to track connection transitions (e.g., Wi-Fi to Cellular) and perform seamless tunnel reconnections without packet loss.
Android API: ACCESS_NETWORK_STATE -
android.permission.FOREGROUND_SERVICEandCONNECTED_DEVICE— Ensures uninterrupted background execution of the proxy daemon in Android 14+, mitigating the risk of aggressive OS memory termination.
Google Play: Foreground Service Types -
android.permission.BIND_VPN_SERVICE— A critical security declaration enforcing that only the Android OS kernel has the authority to bind to and interact with ourShustreeVpnServiceinstance.
Android API: BIND_VPN_SERVICE -
android.permission.VIBRATE— Restricts haptic feedback execution to subtle interface interactions when toggling proxy states.
Android API: VIBRATE
Additionally, the manifest enforces a strict networkSecurityConfig declaration, entirely mitigating Man-in-the-Middle (MITM) traffic interception vulnerabilities.