- Từ Android 11, Google đã hạn chế việc truy vấn giữa các ứng dụng, nhưng nhiều ứng dụng vẫn có thể kiểm tra danh sách ứng dụng đã cài đặt chỉ bằng khai báo trong
AndroidManifest.xml
- Chính sách package visibility yêu cầu ứng dụng chỉ được xem các ứng dụng cần thiết cho chức năng cốt lõi, nhưng việc khai báo từng package riêng lẻ và bộ lọc
ACTION_MAIN đã được dùng như đường vòng
- Swiggy khai báo 154 ứng dụng, Zepto 165, KreditBee 860, Moneyview 944, qua đó có thể truy vấn xem thiết bị người dùng có một ứng dụng cụ thể hay không
- Trong 47 ứng dụng Ấn Độ được xem ngẫu nhiên, 31 ứng dụng dùng intent filter
ACTION_MAIN, cho phép xem hầu hết ứng dụng đã cài đặt có màn hình mà không cần QUERY_ALL_PACKAGES
- Dữ liệu ứng dụng đã cài đặt và quyền
READ_SMS có thể dẫn tới profiling, phân biệt giá, đánh giá tín dụng/tư cách, nhưng người dùng khó biết ứng dụng đọc gì và khi nào
Lỗ hổng trong chính sách hiển thị ứng dụng của Android
- Trước đây trên Android, ứng dụng có thể xem các ứng dụng khác được cài trên điện thoại người dùng mà không cần quyền riêng
- Từ Android 11, Google giới thiệu chính sách package visibility để hạn chế quyền truy cập này
- Ứng dụng chỉ nên được xem các ứng dụng đã cài đặt khác khi điều đó là thiết yếu cho chức năng cốt lõi
- Nhà phát triển phải nêu rõ các ứng dụng muốn kiểm tra trong
AndroidManifest.xml, tệp cấu hình bắt buộc của mọi ứng dụng Android
- Quyền
QUERY_ALL_PACKAGES được cho phép ngoại lệ đối với các trường hợp sử dụng cụ thể như trình quản lý tệp, trình duyệt, ứng dụng diệt virus
- Các trường hợp như hiển thị ứng dụng thanh toán UPI, phát hiện ứng dụng nhân bản/đa tài khoản có thể là lý do hợp pháp để truy vấn ứng dụng
- Nhiều manifest được khảo sát cũng có truy vấn ứng dụng vì mục đích thanh toán, bảo mật và phát hiện gian lận
Swiggy và Zepto truy vấn ứng dụng trên phạm vi rộng
- Swiggy liệt kê 154 tên package trong manifest, cho phép kiểm tra các ứng dụng đó có trên điện thoại hay không
- Danh sách bao gồm các ứng dụng như Xbox, PlayStation, Naukri, Upstox
- Các danh mục rất rộng, nên khả năng thu thập dữ liệu nhằm profiling người dùng và xây dựng hồ sơ hành vi là lớn
- Google coi danh sách ứng dụng đã cài đặt là dữ liệu người dùng cá nhân và nhạy cảm
- Zepto đăng ký trong manifest để kiểm tra 165 ứng dụng trên thiết bị
- Bao gồm các ứng dụng phổ biến thuộc nhiều danh mục như Netflix, Bumble, Binance
- Đã có bài báo nói rằng Zepto hiển thị giá khác nhau cho người dùng iOS và Android, và một số khách hàng báo cáo có chênh lệch giá giữa các điện thoại Android
- Khi cài ứng dụng từ Play Store, người dùng không thể thấy danh sách truy vấn ứng dụng nào được đưa vào manifest của ứng dụng đó
Phạm vi truy vấn của ứng dụng dành cho shipper giao đồ ăn và ứng dụng vay cá nhân
- Ứng dụng dành cho shipper của Swiggy và Zepto có danh sách truy vấn ứng dụng khác với ứng dụng dành cho người tiêu dùng
- Cả hai ứng dụng đều có các mục có thể kiểm tra shipper đang làm cho công ty nào khác
- Swiggy còn kiểm tra cả ứng dụng vay cá nhân, ứng dụng tài chính cá nhân, và các game như Ludo King, Carrom Pool
- Các hành vi săn mồi của ứng dụng vay cá nhân tại Ấn Độ đã được ghi nhận, và vài năm trước từng có đợt trấn áp lớn khiến hàng nghìn ứng dụng bị gỡ khỏi Play Store
- KreditBee là một trong những ứng dụng hàng đầu trong mảng vay cá nhân trên Play Store, có hơn 50 triệu lượt tải xuống và kiểm tra 860 ứng dụng trong manifest
- Danh sách cũng có các mục như Tamil Calendar, Odia Calendar, Qibla Direction Finder, ứng dụng đền chùa, ứng dụng chiêm tinh
- Ví dụ còn xuất hiện ứng dụng hôn nhân dành cho người chưa tốt nghiệp trung học
Jodii for Diploma, +2,10 below và ứng dụng giao dịch bò/bò trâu Buy and Sell Cows and Buffaloes Animall, cả hai đều có hơn 10 triệu lượt tải xuống
- Moneyview cũng là ứng dụng vay cá nhân có hơn 50 triệu lượt tải xuống và đưa 944 ứng dụng vào manifest
- Chính sách Play Store hạn chế rõ ràng việc ứng dụng vay cá nhân dùng
QUERY_ALL_PACKAGES, nhưng KreditBee và Moneyview vòng qua hạn chế này bằng cách liệt kê từng ứng dụng mong muốn trong manifest
Cách xem danh sách ứng dụng mà không cần QUERY_ALL_PACKAGES
- Trong các ứng dụng được khảo sát, Cred là trường hợp duy nhất đưa quyền rủi ro cao/nhạy cảm
QUERY_ALL_PACKAGES vào manifest
- Play Store cho phép “ngoại lệ tạm thời” đối với quyền này cho các ứng dụng có mục đích cốt lõi có thể xác minh là hỗ trợ giao dịch tài chính liên quan đến sản phẩm tài chính được quản lý
- Manifest của PhonePe hay PayTM trong cùng lĩnh vực không có quyền này
- Cred cũng cung cấp khoản vay cá nhân, và dường như không thuộc đối tượng ngoại lệ theo chính sách vay cá nhân của Play Store
- Manifest của một số ứng dụng có intent filter
ACTION_MAIN như sau
<queries>
[...]
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
[...]
</queries>
- Bộ lọc
ACTION_MAIN cung cấp khả năng nhìn thấy hầu hết ứng dụng đã cài đặt có màn hình, và có thể xem danh sách ứng dụng trên điện thoại mà không cần quyền QUERY_ALL_PACKAGES
- Khi truy vấn ứng dụng đã cài đặt bằng một ứng dụng Android cơ bản có cùng cấu hình, danh sách tất cả ứng dụng trên điện thoại được trả về
- Trong 47 ứng dụng Ấn Độ được phân tích ngẫu nhiên, 31 ứng dụng dùng bộ lọc này, tức khoảng 2 trong 3 ứng dụng
- Ứng dụng dùng: Astrotalk, Axis Mobile, Bajaj Finserv, BookMyShow, Cars24, Cure.fit, Fibe, Groww, Housing, Instamart, Ixigo, JioHotstar, KreditBee, KukuTV, LazyPay, Ludo King, Meesho, MoneyTap, Moneyview, Navi, NoBroker, Nykaa, Ola, PhonePe, PhysicsWallah, Slice, Spinny, Swiggy, Swiggy Delivery, Tata Neu, Zomato
- Ứng dụng không dùng: Airtel Thanks, Blinkit, Byju’s, MyGate, Dream11, Flipkart, HDFC Mobile, Healthify, INDmoney, MyJio, Paytm, PaisaBazaar, ShareChat, Unacademy, Vedantu, Zepto
- Swiggy cũng có bộ lọc
ACTION_MAIN, nhưng đồng thời liệt kê rõ danh sách truy vấn ứng dụng, qua đó hé lộ một phần thực tiễn thu thập dữ liệu
- Các tệp manifest đã đọc được công khai tại android-manifest-files, phần lớn được tải xuống vào ngày 18 hoặc 19 tháng 3
- Thiết lập này không chỉ giới hạn ở ứng dụng của các công ty Ấn Độ
- Facebook, Instagram, Snapchat, Subway Surfers, Truecaller có cùng thiết lập
- Amazon, Spotify, X, Discord, WhatsApp thì không
Tính nhạy cảm của dữ liệu ứng dụng đã cài đặt và quyền SMS
- Dữ liệu ứng dụng đã cài đặt là dữ liệu cá nhân nhạy cảm
- Năm 2022, Vice đưa tin rằng ngay sau tin Roe v. Wade có thể bị lật ngược, một marketplace dữ liệu tên Narrative đang bán dữ liệu người dùng đã tải ứng dụng theo dõi chu kỳ kinh nguyệt
- Ngoài truy vấn ứng dụng đã cài đặt, manifest của ứng dụng cũng có thể chứa rộng rãi các quyền có vẻ vượt quá phạm vi cần thiết
- Zepto yêu cầu quyền
READ_SMS
- Người dùng có thể từ chối, nhưng quyền này là bắt buộc khi đăng ký Zepto Postpaid
- Nếu cho phép quyền này, nhiều TRAI sender ID của ngân hàng và cả SMS từ Blinkit, Swiggy, Bigbasket, Flipkart cũng nằm trong phạm vi kiểm tra
- Có vẻ ứng dụng đọc SMS ngân hàng để kiểm tra điều kiện tham gia gói Postpaid, nhưng vẫn có thể đọc ngay cả khi người dùng không chọn tính năng đó
- Sau khi cấp các quyền như
READ_SMS cho ứng dụng, người dùng không thể thấy ứng dụng truy cập nội dung gì và khi nào
- Thông tin cài đặt ứng dụng Android có thể được dùng cho các mục đích như profiling bởi nhà phát triển ứng dụng và data broker, đối chiếu chéo với dữ liệu mạng quảng cáo, và định giá
1 bình luận
Ý kiến trên Hacker News
Lỗ hổng ACTION_MAIN từng được đề cập trước đây: https://commonsware.com/blog/2020/04/05/android-r-package-vi...
Google không định vá lỗi này. Không biết nếu gửi lên Android VDP dưới dạng bypass quyền thì sẽ ra sao
Cũng có câu hỏi SO do tác giả đăng về cách bypass: https://stackoverflow.com/q/79527331
Khi đó, chính luồng Android hỏi có muốn đặt một game ngẫu nhiên vừa tải về làm launcher mặc định hay không sẽ trở thành một tương tác khá rủi ro đối với app đáng ngờ. Người dùng có thể thoát ra rồi báo cáo, hoặc người dùng không rành có thể chọn nó làm launcher mặc định, làm hỏng màn hình chính rồi báo cáo lên Play Store. Thực tế nếu phân phối dưới dạng app cấp launcher thì có lẽ cũng sẽ kèm kiểm thử tự động và các yêu cầu bổ sung, tạo thêm gánh nặng cho nhà phát triển
Khó tin là các kỹ sư Google không biết về lỗ hổng được dùng rộng rãi này, nhưng tôi cũng tò mò liệu có nguồn nào nói rằng Google đã từ chối sửa nó không
Tôi vẫn hoàn toàn không hiểu tại sao lại cần “app” native. Từ trước tới giờ tôi chưa thấy “app” nào mà website hoặc web app không đủ, và đa số có lẽ còn tốt hơn nếu là web app
Lợi thế duy nhất của “app” dường như là nhà phát triển có thể truy cập thông tin cá nhân mà thực ra họ không cần
Cũng có lợi thế là được lên “App Store”, nhưng App Store là một khái niệm không cần thiết do Apple/Google tạo ra để lấy một tỷ lệ lớn từ doanh số
Trình duyệt web cung cấp sandboxing khá ổn, không có phí “submit”, và mọi người trên mọi điện thoại đều có thể truy cập
Thực tế là phần lớn web app di động rất tệ. Trải nghiệm người dùng không thể sánh với app native. Tôi ghét việc văn bản bị chọn, ghét việc kéo để làm mới trên mọi trang, và ghét việc vuốt sang trái lại quay về trang trước
Có thể tìm cách né các vấn đề này, nhưng thư viện Silk mới (https://silkhq.co/) có vẻ là trường hợp đầu tiên tiến rất gần tới trải nghiệm native. Nhưng chỉ riêng việc nó là thư viện trả phí cũng cho thấy vấn đề này không hề nhỏ
Có nhiều việc app native làm được nhưng trình duyệt làm không tốt hoặc hoàn toàn không làm được. Ví dụ như chỉnh sửa video/audio nặng, truy cập nhiều RAM, tận dụng tính toán GPU, hay các tác vụ gần với phần cứng thì chỉ dùng trình duyệt vẫn chưa đủ
Không có nghĩa là cách Apple và Google thực sự triển khai là tốt, nhưng tôi không nghĩ sẽ có tương lai chỉ dùng web app. Vì cùng lý do đó, trong một thời gian nữa tôi sẽ không đổi máy tính thật của mình sang Chromebook
Tuy vậy, các app hoạt động offline trên thiết bị và không rải dữ liệu sang những dịch vụ tôi không kiểm soát vẫn rất tốt. Tôi cũng không muốn phải phụ thuộc vào kết nối Internet dù đang ở đâu
Tôi thích các app offline như OsmAnd/Organic Maps chỉ đường khi ở trong rừng hay trên núi, và cũng thích các app kết nối trực tiếp với thiết bị local của tôi để chia sẻ dữ liệu thay vì qua máy chủ bên thứ ba
Nếu có thể, mọi app nên được phát triển theo hướng offline-first và chỉ yêu cầu Internet khi cần. App nào không thể hoạt động nếu không có Internet thì làm web app là đủ, không cần nằm trên thiết bị của tôi
Tôi tự hỏi lần gần nhất bạn đặt vé máy bay trên mobile web là khi nào. Tôi cũng không biết bạn chịu nổi phần diện tích màn hình mà trình duyệt chiếm như thế nào. App có thể cache xác thực và xử lý bằng FaceID, còn việc lần nào cũng phải đăng nhập cũng là vấn đề
Vì vậy tôi thích Hacker News
Hôm qua tôi phát hiện bài này và đăng lên bảng Android trên Reddit: https://old.reddit.com/r/Android/comments/1jmwg4w/everyone_k...
0 lượt upvote, phần bình luận thì đầy những phản ứng không rõ là của người chán đời hay bot
Ở đây thì nó đang ở nhóm hạng 2, và đa số bình luận đều thú vị
Có nhiều subreddit đã chết, nhưng r/android gần như là một trong những nơi tệ nhất
Hơn nữa, các subreddit theo chủ đề nhìn chung có vẻ được kiểm duyệt bởi những người có lợi ích liên quan đến chủ đề đó, và điều này gây hại cho cộng đồng. Tôi từng đăng một bài viết chi tiết về Llama của Meta nằm dưới loại giấy phép độc quyền nào và giấy phép đó chính xác có ý nghĩa gì, nhưng các moderator của r/LocalLlama đã xóa thủ công mà không nêu lý do, và dù tôi hỏi để hiểu rõ hơn về quy tắc, họ cũng không trả lời vì sao đã xóa
Sau đợt “thanh lọc Reddit” cuối cùng, khi nhiều moderator cộng đồng bị thay bằng nhân viên Reddit, tôi tự hỏi liệu một phần đáng kể của nền tảng đã bị bán để từng công ty tự kiểm duyệt không gian của mình hay chưa
Nếu bấm vào liên kết “past” dưới tiêu đề, có một thread từ 2 ngày trước đã chết hẳn
Hacker News hiểu khái niệm phê bình mang tính xây dựng
Phần cốt lõi là đoạn “vượt ra ngoài các danh mục thông thường, họ còn kiểm tra cả những thứ như Tamil Calendar, Odia Calendar, Qibla Direction Finder, ứng dụng mandir, ứng dụng chiêm tinh. Họ biết mình đang làm gì”
Ứng dụng cho vay này đang lập hồ sơ người dùng dựa trên sắc tộc/bản sắc vùng miền (Tamil, Odia) và tôn giáo (Qibla Direction Finder là người Hồi giáo, ứng dụng mandir là người Hindu)
Ứng dụng Android của HSBC UK xem xét các ứng dụng đã cài đặt, và nếu có ứng dụng mang một số quyền nhất định thì nó từ chối chạy. Ví dụ không được có launcher thay thế, và giờ thì chỉ cần có một ứng dụng được cài từ ngoài cửa hàng ứng dụng Google là nó cũng từ chối chạy
Trước đây tôi cũng từng phàn nàn ở đây, nhưng cuối cùng đã yêu cầu một thiết bị bảo mật phần cứng và dùng website thay thế
Tôi tự hỏi liệu họ có nói rằng dữ liệu này không được gửi về công ty hay không
Câu trả lời cho câu hỏi “Vì sao việc biết trên điện thoại của tôi có cài ứng dụng Xbox hay Playstation lại cần thiết cho chức năng cốt lõi của Swiggy? Biết tôi có ứng dụng Naukri hay Upstox thì giúp gì cho việc giao thực phẩm đến nhà tôi?” là nhằm mục đích lấy dấu vân tay
Ứng dụng ngân hàng cũng tương tự; nếu là kẻ lừa đảo, biết trước mục tiêu dùng ngân hàng nào sẽ cực kỳ hữu ích
Đặc biệt nếu có thể liên kết với số điện thoại, hẳn sẽ có khá nhiều nhóm muốn loại thông tin này
Ở đoạn “đối với những trường hợp sử dụng rất cụ thể như trình quản lý tệp, trình duyệt, ứng dụng diệt virus, Google cấp ngoại lệ quyền QUERY_ALL_PACKAGES để có thể xem toàn bộ ứng dụng đã cài đặt”, tôi không hiểu vì sao trình duyệt cần liệt kê các ứng dụng đã cài
Tại sao?!
Nói cách khác, cứ đổ lỗi cho quản lý sản phẩm của Google
Ví dụ Obsidian yêu cầu quyền đối với toàn bộ hệ thống tệp, nhưng thực ra chỉ cần truy cập các tệp mà người dùng cho nó xem là đủ
Đây là một tính năng rất hữu ích nên tôi nghĩ mình sẽ không thích nếu nó biến mất
“Mọi người đều biết tất cả ứng dụng trên điện thoại của bạn” là nói về điện thoại Android. iPhone không có khiếm khuyết bảo vệ quyền riêng tư kiểu này
https://blog.verichains.io/p/technical-analysis-improper-use...
Nếu dùng hồ sơ công việc, cách làm tiêu chuẩn hiện nay trên Android, thì chỉ thấy được các ứng dụng bên trong hồ sơ công việc
Một trong những động lực lớn nhất để tạo ứng dụng là thu thập đủ loại dữ liệu từ người dùng. Chỉ cần nhìn xem có bao nhiêu ứng dụng đòi quyền truy cập danh bạ, và có bao nhiêu ứng dụng thực sự cần danh bạ cho chức năng của chúng. Vì vậy vẫn hơi ngạc nhiên khi thấy nhiều người bất ngờ trước những phát hiện như thế này
Trước đây có thể thử giao tiếp với ứng dụng bằng custom URI scheme; nếu thành công thì biết ứng dụng đó đã được cài. Twitter đã dùng cách này để fingerprinting
Giờ ứng dụng phải nhận intent đặc biệt và phải khai báo danh sách ứng dụng sẽ dùng cho mục đích đó
Gần đây tính năng LLM của họ được cập nhật lớn, nên tôi cài ứng dụng để xem thử. Trong thời gian ứng dụng được cài, mỗi lần xem website di động đều hiện một banner lớn bảo tôi chuyển sang ứng dụng, và không thể xóa bằng trình chặn quảng cáo hay trình chặn yếu tố gây phiền nhiễu. Khi tôi gỡ ứng dụng đi thì nó biến mất
Tại sao lại như vậy? Tôi tò mò website di động biết ứng dụng đã cài bằng cách nào. Khi ứng dụng chưa được cài, các lời mời dùng ứng dụng đều có thể bị chặn bằng trình chặn nội dung/yếu tố gây phiền nhiễu, nhưng khi đã cài thì vì sao lại không chặn được?
Cần root, nhưng có thể chặn hoặc giả mạo việc này bằng các module LSPosed[1] như XPrivacyLua[2]. Tôi nghe nói cũng có AppOps[3] mã nguồn đóng, nhưng chưa dùng thử
[1]: https://lsposed.org
[2]: https://github.com/M66B/XPrivacyLua / https://github.com/0bbedCode/XPL-EX
[3]: https://appops.rikka.app
Điều thú vị là XPrivacyLua không còn được hỗ trợ nữa, và ứng dụng companion bản pro sẽ bị Google gỡ khỏi Play Store vì dùng quyền QUERY_ALL_PACKAGES
[0]: https://github.com/M66B/NetGuard
[1]: https://xdaforums.com/t/closed-app-xposed-6-0-xprivacylua-an...
Tôi tự hỏi liệu các ứng dụng Windows, đặc biệt là ứng dụng không cài từ MS Store, có thể liệt kê tiêu đề của tất cả cửa sổ đang mở không. Một ứng dụng giám sát toàn bộ lưu lượng web chỉ bằng tiêu đề thì khó đến mức nào?
Đây là câu hỏi thật. ChatGPT chỉ phụ họa tất cả nên không giúp được mấy; tôi cần ai đó nói cho biết vì sao điều này không khả thi trong thế giới thực
Có các hàm EnumWindows() và EnumChildWindows() cho mục đích này
Ví dụ về tính năng này là tiện ích “Windows Modifier v2.00” và Spy++ (SPYXX.EXE) của Microsoft. Ngày trước khi tôi mới tải về thì có nhiều trang liên quan, nhưng giờ tìm đúng tên cũng gần như không ra, như một dấu hiệu cho thấy Internet đã trở nên rất giỏi trong việc quên lãng
Giải pháp cho các ứng dụng không tin cậy là hoàn toàn không dùng, hoặc dùng trong VM
Điều này đúng ít nhất với Windows và hầu hết các hệ thống *nix truyền thống, đặc biệt là X11
Ở điểm này Android có một điều làm tốt. Theo mặc định, mọi ứng dụng chạy dưới các user khác nhau. Nghĩa là chúng có thư mục home khác nhau và không thể thấy ứng dụng khác
Dù vậy, các công cụ như ManicTime hay ActivityWatch, nếu không cài plugin trình duyệt, sẽ theo dõi lịch sử trình duyệt bằng tiêu đề cửa sổ
https://www.manictime.com/
https://activitywatch.net/
Đặc biệt, câu “UAC [vẫn] không phải là rào chắn bảo mật” là đúng. Khi bạn bấm xác nhận hoặc nhập mật khẩu để nâng quyền một tiến trình, trên thực tế bạn đang nâng quyền cho toàn bộ desktop và mọi thứ đang chạy trên đó