Аналіз витоку збірки Android Q показує, що в Android буде більше оновлень конфіденційності: блокування фонового читання буфера обміну, кращий захист медіа тощо.
Кожна нова версія Android постачається з новими функціями, а це означає, що Android потребує нових дозволів для доступу до цих функцій. Я знайшов багато нових дозволів у фреймворку Android Q (не всі з них я розгляну в цій статті, оскільки багато з них нецікаві). Деякі дозволи, які я знайшов, не мали жодного опису, але їхні назви все одно досить зрозумілі. Давайте зануримося та обговоримо нові закулісні вдосконалення конфіденційності в Android Q, а також кілька інших цікавих функцій, які я знайшов.
Особлива подяка PNF Software за надання нам ліцензії на використання Декомпілятор JEB. JEB Decompiler — це професійний інструмент зворотного проектування для програм Android.
Блокування фонового доступу до буфера обміну
Ви знали, що кожна програма в Android може читати буфер обміну, і вам не потрібно надавати їм дозвіл на виконання для цього? Ймовірно, багато людей копіюють конфіденційну інформацію, як-от імена користувачів, паролі, адреси тощо. весь час, тож будь-якій програмі буде легко отримати ці дані у фоновому режимі. Ось чому багато програм для керування паролями, як
KeePass мають власні клавіатури, за допомогою яких можна обійти диспетчер буфера обміну Android. Програми для керування паролями часто очищають буфер обміну після того, як ви щось скопіюєте та вставите. Причина, чому програми Android повинні читати буфер обміну, полягає в тому, що вони не можуть прийняти будь-який текст із буфера обміну без нього, тобто ви не можете вставити будь-який текст, який ви скопіювали. На щастя, Android Q прагне це змінити.Додано новий дозвіл під назвою «READ_CLIPBOARD_IN_BACKGROUND
», схоже, що він робитиме саме те, що сказано: обмежує, які програми можуть читати буфер обміну у фоновому режимі. Рівень захисту цього дозволу – «підпис», тобто лише програми, підписані OEM, можуть отримати цей дозвіл.
<permissionandroid: name="android.permission.READ_CLIPBOARD_IN_BACKGROUND"android: protectionLevel="signature"/>
Підтримується повернення до версії програм?
Ви коли-небудь встановлювали оновлення для програми в Google Play і одразу про це шкодували? Іноді розробник вводить оновлення, яке порушує те, чого вони не очікували, але після того, як оновлення буде надіслано та встановлено, робити що-небудь з цим буде надто пізно. Розробник має швидко випустити виправлення, а користувачеві потрібно або припинити використання програми, доки не буде випущено оновлення, або видалити програму та завантажити старішу версію. Немає способу знизити версію програми, якщо у вас немає рутованого пристрою з подібною програмою TitaniumBackup, оскільки менеджер пакунків Android блокує встановлення старіших версій програм. Для цього є вагома причина, оскільки встановлення старішої версії програми може призвести до поломки, якщо дані програми не очищаються, або це може наражати користувача на небезпеку, якщо старіша версія вразлива до безпеки недолік.
Хоча ми не знаємо напевно, чи Google дозволить користувачам повертати програми до старішої версії, ми знайшли кілька дозволів і команд в Android Q, які вказують на те, що це можливо. По-перше, новий "PACKAGE_ROLLBACK_AGENT
" і "MANAGE_ROLLBACKS
” Дозволи свідчать про те, що попередньо встановлена програма Market може діяти як агент для керування відкатом версій програми. Перший дозвіл — це «підпис», а другий — «інсталятор» поверх «підпису», тому це означає лише підписану платформою програму з можливістю інсталювати програми (зазвичай лише менеджер пакунків, магазин Google Play або інші магазини програм першої сторони, залежно від пристрою) можуть використовувати ці дозволи. Додано два нові захищені наміри трансляції: "PACKAGE_ENABLE_ROLLBACK
" і "PACKAGE_ROLLBACK EXECUTED
.” Ці широкомовні повідомлення не можуть надсилатися сторонніми програмами, і вони, ймовірно, призначені для того, щоб дати програмі знати, коли її було знижено (багато наприклад, як програмам повідомляється, коли вони оновлені, що дає їм можливість відобразити якесь повідомлення під час наступного запуску.) Нарешті, додано новий прапорець "pm install
” команда оболонки. Прапор під назвою «--enable-rollback
”, може дозволити вам повернути програму до попередньої версії. Однак я не міг змусити його працювати.
<protected-broadcast android: name="android.intent.action.PACKAGE_ENABLE_ROLLBACK"/>
<protected-broadcast android: name="android.intent.action.PACKAGE_ROLLBACK_EXECUTED"/>
<permissionandroid: name="android.permission.PACKAGE_ROLLBACK_AGENT"android: protectionLevel="signature"/>
<permissionandroid: name="android.permission.MANAGE_ROLLBACKS"android: protectionLevel="installer|signature"/>
Захист файлів на зовнішньому носії
Зберігання даних в Android передбачає «внутрішнє сховище» (/data, за винятком /data/media) і «зовнішнє сховище» (/data/media та будь-які підключені SD-карти або USB-накопичувачі). Файли .apk та їхні найбільш конфіденційні дані зберігаються у внутрішній пам’яті, а будь-які спільні медіафайли, як-от документи, зображення, відео тощо. зберігаються у зовнішній пам’яті. За замовчуванням програми можуть лише читати та записувати файли в один каталог зовнішньої пам’яті: /data/media/[user]/Android/data/[package_name]. (Щоб дізнатися більше про таку поведінку, рекомендую прочитати мій стаття про sdcardfs в Android Oreo.) Щойно користувач надасть програмі будь-який дозвіл у групі дозволів зовнішнього сховища (READ_EXTERNAL_STORAGE
або WRITE_EXTERNAL_STORAGE
), потім програма може читати або записувати будь-який файл у зовнішній пам’яті. Це проблематично, оскільки ви надаєте додатку можливість потенційно збирати багато даних про вас, коли ви просто хочете дозволити йому читати або писати певні файли. Щоб виправити це, Google, здається, представляє кілька нових дозволів, пов’язаних із зовнішньою пам’яттю, в Android Q. Дозволи забезпечать наступні функції:
- Можливість читати локації з ваших носіїв. (Ймовірно, доступ до метаданих зображень блокується за замовчуванням.)
- Можливість доступу до музичних файлів.
- Можливість доступу до фотографій.
- Можливість доступу до відео.
Для програм, які вже містять READ_EXTERNAL_STORAGE
або WRITE_EXTERNAL_STORAGE
дозволів до оновлення Android Q, вони отримають нові читати дозволи, але не новий писати дозволи. Наприклад, програма, яка вже була надана READ_EXTERNAL_STORAGE
користувачем буде автоматично надано READ_MEDIA_IMAGES
дозвіл, але не WRITE_MEDIA_IMAGES
дозвіл.
Відповідні рядки з Android Q's framework-res
<stringname="permgroupdesc_aural">access your musicstring>
<stringname="permgrouplab_visual">Photos & Videosstring>
<stringname="permgrouprequest_aural">Allow <b>%1$s</b> to access your music?string>
<stringname="permgroupdesc_visual">access your photos & videosstring>
<stringname="permgrouplab_activityRecognition">Activity recognitionstring>
<stringname="permgrouplab_aural">Musicstring>
<stringname="permdesc_videoRead">Allows the app to read your video collection.string>
<stringname="permdesc_videoWrite">Allows the app to modify your video collection.string>
<stringname="permdesc_imagesRead">Allows the app to read your photo collection.string>
<stringname="permdesc_imagesWrite">Allows the app to modify your photo collection.string>
<stringname="permdesc_audioRead">Allows the app to read your music collection.string>
<stringname="permdesc_audioWrite">Allows the app to modify your music collection.string>
<stringname="permlab_audioRead">read your music collectionstring>
<stringname="permlab_audioWrite">modify your music collectionstring>
<stringname="permdesc_mediaLocation">Allows the app to read locations from your media collection.string>
"android.permission.READ_EXTERNAL_STORAGE"
targetSdk="10000">
<new-permission name="android.permission.READ_MEDIA_AUDIO" />
<new-permission name="android.permission.READ_MEDIA_VIDEO" />
<new-permission name="android.permission.READ_MEDIA_IMAGES" />
split-permission>"android.permission.WRITE_EXTERNAL_STORAGE"
targetSdk="10000">
<new-permission name="android.permission.READ_MEDIA_AUDIO" />
<new-permission name="android.permission.READ_MEDIA_VIDEO" />
<new-permission name="android.permission.READ_MEDIA_IMAGES" />
split-permission>
читати далі
Повернення фонового доступу до місцезнаходження
Android Oreo та Android 9 Pie зробили серйозні кроки вперед у забезпеченні конфіденційності користувачів, але деякі користувачі вважають, що Google зайшов занадто далеко. Однією з таких областей, яку можна вважати регресією ознак, є фоновий доступ до місцезнаходження. Доступ до місцезнаходження в Android Oreo та пізніших версіях сильно обмежено, якщо не зовсім припинено для програм, що працюють у фоновому режимі, тому програми повинні або бути на передньому плані, або мати запущену службу переднього плану, якщо вони хочуть постійно опитувати пристрій Місцезнаходження. Це блокує додатки від шпигування за вашим місцезнаходженням у фоновому режимі, але це також блокує користувача від відображення свого власного місцезнаходження за допомогою програми у фоновому режимі. Це проблема, яку ми торкалися в окремій статті, і, схоже, Google додає новий дозвіл в Android Q, щоб вирішити проблеми цих розробників і користувачів.
В Android Q додано новий дозвіл, який дозволяє програмі мати фоновий доступ до місцезнаходження пристрою. Опис дозволу для користувача попереджає, що «програма завжди матиме доступ до місцезнаходження, навіть якщо ви не використовуєте програму». Цей дозвіл може отримати дозволи «додатково до приблизного або точного місцезнаходження», щоб програма «могла отримати доступ до місцезнаходження під час роботи у фоновому режимі». У контрасті, приблизний дозвіл на визначення місцезнаходження може лише отримати ваше місцезнаходження на основі мережевих джерел, таких як вежі стільникового зв’язку або мережі Wi-Fi, але лише тоді, коли програма знаходиться в передній план.
Відповідні рядки з Android Q's framework-res
<stringname="permgroupbackgroundrequest_location">Always allow <b>%1$s</b> to access this device’s location?string>
<stringname="permgroupbackgroundrequestdetail_location">The app will always have access to the location, even when you’re not using the app.string>
"permdesc_accessBackgroundLocation">If this is granted additionally to the approximate or precise location access the app can access the location while running in the background.</string>
"permdesc_accessCoarseLocation">This app can get your location based on network sources such as cell towers and Wi-Fi networks, but only when the app is in the foreground. These location services must be turned on and available on your phone for the app to be able to usethem.string>
"android.permission.ACCESS_FINE_LOCATION"
targetSdk="10000">
<new-permission name="android.permission.ACCESS_BACKGROUND_LOCATION" />
split-permission>
"android.permission.ACCESS_COARSE_LOCATION"
targetSdk="10000">
<new-permission name="android.permission.ACCESS_BACKGROUND_LOCATION" />
split-permission>
читати далі
Розпізнавання фізичної активності
В Android Q додано новий дозвіл, який дозволяє програмі «розпізнавати вашу фізичну активність». Технічно це не є новим вже є частиною служб Google Play, але це може означати, що Google від’єднає дозвіл від Play Services. Зважаючи на те, наскільки сервіси Google Play були невід’ємними для надання основних функцій Android, приємно бачити, що частина їхньої потужності повертається AOSP.
<stringname="permgroupdesc_activityRecognition">recognize activitystring>
<stringname="permgrouprequest_activityRecognition">Allow <b>%1$s</b> to recognize your physical activity?string>
<stringname="permdesc_activityRecognition">This app can recognize your physical activity.string>
Щоб дізнатися більше про Android Q, перегляньте наш тег з останніми новинами, відсортованими за датою. Нещодавно ми опублікували статтю з багатьма доказами того, що Google працює над нею підтримка апаратного забезпечення ідентифікації обличчя, подібного до Face ID в Android Q. У нас також є раннє практичне знайомство зі злитою збіркою Android Q (і навіть є відео), яке ви повинні переглянути тут. Ми публікуватимемо більше наших висновків із цієї ранньої збірки Android Q, яку ми отримали, тому слідкуйте за оновленнями.