Cách các nhà phát triển đánh lừa quy trình duyệt App Store để được phê duyệt ứng dụng độc hại
(9to5mac.com)- Một số ứng dụng phát trực tuyến lậu trên iOS được thiết kế để vượt qua khâu kiểm duyệt như ứng dụng bình thường rồi mới bật các tính năng ẩn, và phân tích mã cho thấy có chặn theo vị trí cùng cơ chế cập nhật từ xa
- Các ứng dụng được phát hành bằng những tài khoản nhà phát triển khác nhau nhưng dùng chung cùng một nền mã nguồn, và với React Native cùng Microsoft CodePush SDK, có thể thay đổi một phần ứng dụng mà không cần đưa lại lên App Store để duyệt
- Một ứng dụng cụ thể dùng kho lưu trữ GitHub và API vị trí theo IP để kiểm tra dữ liệu quốc gia, vùng, thành phố, kinh độ và vĩ độ ước tính, đồng thời không hiển thị giao diện ẩn trong môi trường kiểm duyệt của Apple
- Bằng cách chờ vài giây sau lần chạy đầu tiên mới gọi API vị trí, ứng dụng đã né được quy trình duyệt tự động, và ngay cả khi đặt proxy tới San Jose, California thì màn hình ẩn cũng không xuất hiện
- Apple có thể tăng cường kiểm thử hành vi theo vị trí và đẩy mạnh gỡ bỏ ứng dụng lừa đảo, nhưng hiện mới chỉ xác nhận đã xóa các ứng dụng liên quan mà chưa công bố biện pháp cụ thể để ngăn các ứng dụng tương tự được phê duyệt
Cấu trúc hoạt động như một ứng dụng khác sau khi đã vượt qua kiểm duyệt
- 9to5Mac đã đề cập tới nhiều trường hợp ứng dụng phát trực tuyến lậu trên iOS đánh lừa quy trình duyệt của App Store để được phê duyệt, và sau đó phân tích mã để xác nhận chi tiết cách thức lách kiểm duyệt
- “Collect Cards” từng lọt top bảng xếp hạng tải xuống ứng dụng miễn phí trên App Store ở một số quốc gia, và sau khi bị công khai, Apple đã gỡ bỏ ứng dụng này
- Khi nhiều phiên bản của cùng ứng dụng tiếp tục xuất hiện trở lại trên App Store, cách đánh lừa đội ngũ kiểm duyệt đã trở thành đối tượng phân tích
Nền mã nguồn chung và cập nhật từ xa
- Các ứng dụng được phân tích được phát hành bằng những tài khoản nhà phát triển khác nhau nhưng dùng chung cùng một nền mã nguồn
- Các ứng dụng được xây dựng bằng React Native, một framework đa nền tảng dựa trên JavaScript
- Với CodePush SDK của Microsoft, có thể cập nhật một phần ứng dụng mà không cần gửi bản build mới lên App Store
- Bản thân việc dùng React Native và CodePush không vi phạm quy định của App Store, và nhiều ứng dụng phổ biến cũng dùng cách này
- Các nhà phát triển độc hại đã lợi dụng công nghệ cập nhật hợp pháp này để lách quy trình duyệt của App Store
Dùng vị trí để nhận diện môi trường kiểm duyệt của Apple
- Một trong các ứng dụng được phân tích trỏ tới kho lưu trữ GitHub dường như cung cấp tệp cho nhiều ứng dụng phát trực tuyến lậu
- Ứng dụng đó dùng một API cụ thể để kiểm tra vị trí thiết bị dựa trên địa chỉ IP
- API trả về dữ liệu như quốc gia, vùng, thành phố, kinh độ và vĩ độ ước tính
- Ứng dụng chờ vài giây sau khi được mở lần đầu rồi mới gọi API vị trí
- Vì độ trễ này, trong quy trình duyệt tự động của App Store, hành vi bất thường không bị lộ ra từ mã ứng dụng
- 9to5Mac đã dùng proxy để giả mạo vị trí thành San Jose, California nhằm kiểm tra hành vi của ứng dụng
- Ở vị trí này, ứng dụng tuyệt đối không hiển thị giao diện ẩn
Hiển thị giao diện thực sau khi được phê duyệt
- Sau khi Apple phê duyệt ứng dụng chỉ hiển thị chức năng cơ bản, nhà phát triển sẽ dùng CodePush để cập nhật nội dung mong muốn vào ứng dụng
- Ứng dụng chỉ hiển thị giao diện thực ở những vị trí được coi là “an toàn”
- Trong cấu trúc này, hành vi của ứng dụng trong môi trường kiểm duyệt của Apple và môi trường người dùng thông thường có thể khác nhau
Bài toán ứng phó mà Apple vẫn để ngỏ
- Apple có thể cải thiện quy trình duyệt bằng kiểm thử bổ sung để xác nhận ứng dụng hoạt động ra sao ở các vị trí khác nhau
- Cũng cần có biện pháp chủ động hơn để tìm và gỡ bỏ các ứng dụng lừa đảo khỏi App Store
- Năm 2017, Uber từng bị nghi đã dùng “geofence” nhắm vào trụ sở Apple ở Cupertino
- Theo cáo buộc, khi ứng dụng chạy tại vị trí đó, đoạn mã dùng để thu thập dấu vân tay người dùng và theo dõi trên web sẽ tự động bị vô hiệu hóa
- Theo tài liệu năm 2021, đội App Store Review có hơn 500 chuyên gia con người, mỗi tuần xem xét hơn 100.000 ứng dụng
- Dù vậy, phần lớn ứng dụng vẫn phải trải qua quy trình duyệt tự động để kiểm tra khả năng vi phạm hướng dẫn App Store trước khi được con người xem xét thủ công
- Người phát ngôn của Apple cho biết sau khi thông tin này được công khai, các ứng dụng liên quan đã bị gỡ khỏi App Store, nhưng không cung cấp chi tiết về các biện pháp của công ty nhằm ngăn những ứng dụng tương tự được phê duyệt
1 bình luận
Các ý kiến trên Hacker News
Ngay cả khi Apple chặn việc vượt qua giới hạn theo khu vực, việc che giấu hành vi vẫn rất dễ
Không cần mã động hay mã thông dịch nào cả, và có đủ nhiều biến thể kiểu này đến mức cuối cùng có vẻ sẽ quy về bài toán dừng, nên không thể quyết định được
Cần có cách ứng phó bên ngoài các biện pháp kỹ thuật. Chẳng hạn như để những người thực sự phân tán ở nhiều nơi kiểm thử ứng dụng theo kiểu crowdsourcing nhằm tìm hành vi độc hại
Nói tổng quát hơn, chức năng kiểm tra cập nhật, tức kiểm tra xem có phiên bản mới hay không, đồng thời cũng có thể dùng để kiểm tra “phiên bản này có còn đang trong quá trình xét duyệt ứng dụng không?”
Khả năng bị loại khỏi hệ sinh thái Apple App Store hoặc bị trả đũa pháp lý là một trong những cách kiềm chế các hành vi không mong muốn mà về mặt kỹ thuật không thể chặn được
Cuối cùng cần tận dụng nhiều hơn sức ép ở cấp hệ sinh thái và chính phủ để các điều khoản hợp lý và công bằng. Vì việc hack để lách điều khoản gần như sẽ trở nên bất khả thi. Tôi nghĩ những cách hack này thông minh, nhưng có lẽ sẽ không tồn tại lâu
Nếu bạn tò mò về câu chữ của Apple đối với cập nhật động như CodePush thì ở đây: https://github.com/microsoft/react-native-code-push#store-gu...
“Mã thực thi
Trừ các trường hợp được nêu trong đoạn sau, ứng dụng không được tải xuống hoặc cài đặt mã thực thi. Mã thông dịch có thể được tải xuống ứng dụng, nhưng mã đó không được (a) thay đổi mục đích chính của ứng dụng bằng cách cung cấp tính năng không phù hợp với mục đích dự kiến và được quảng cáo của ứng dụng đã nộp lên App Store, (b) tạo một cửa hàng hoặc chợ cho mã hay ứng dụng khác, hoặc (c) vượt qua chữ ký, sandbox hoặc các tính năng bảo mật khác của hệ điều hành.”
Trông như có một thỏa thuận giữa các hãng game và Google/Apple rằng đổi lại việc lách xét duyệt, doanh thu loot box hàng chục tỷ đô la vẫn tiếp tục chảy
Một nhóm tính năng nổi bật là cách nhiều ứng dụng thu phí đăng ký bên ngoài hệ thống thanh toán trong hàng rào của Apple. Đó là vì công việc thực tế của ứng dụng không chỉ diễn ra trên thiết bị mà còn ở đám mây. Việc tách ứng dụng thành ứng dụng cục bộ cơ bản và phần việc bổ sung trên đám mây có những ưu điểm, nhưng khi hiệu năng thiết bị tốt lên, việc xem có thể làm gì cục bộ ngày càng hấp dẫn hơn
Nếu cấu trúc cấp cao của ứng dụng đủ rõ ràng, các chi tiết bên trong có thể được lấp đầy sau
Từ lâu tôi đã thích những thứ như SDUI, cho phép tạo giao diện động hơn theo sở thích hay mẫu sử dụng của người dùng, v.v.
Cách tiếp cận làm phần mềm cho các quy trình công việc cố định ngày càng trở nên lỗi thời. Dù là nhu cầu thay đổi theo từng giai đoạn phong tỏa trong đại dịch, hay cá nhân hóa thực sự trải nghiệm người dùng, phần mềm có tư duy cố định đang được thay thế bằng phần mềm cần sự linh hoạt
Khi phải đưa qua xét duyệt một hành vi mà Apple không thích, tôi đã dùng mánh dựa trên thời gian
20 ngày sau khi nộp ứng dụng, hành vi của một nút thay đổi để hộp thoại “mở tệp” đi thẳng tới thư mục gốc của người dùng
Tôi đặt bộ hẹn giờ 2 tuần, và sau đó ứng dụng bắt đầu hoạt động thật, bao gồm cả các lệnh gọi API
Quy trình xét duyệt ứng dụng của Apple đúng là một trò hề
Có lẽ cũng có thể tìm ra cách nhận diện hệ thống của người xét duyệt như dấu vân tay rồi chỉ trực tiếp ẩn tính năng với họ
Nhân tiện, có vẻ tuyệt đại đa số ứng dụng lừa đảo lấy tiền của mọi người bằng đăng ký lặp lại hằng tuần
Vé sử dụng 1 tuần không lặp lại có thể hữu ích. Ví dụ như một ứng dụng VPN dùng 1 tuần trong lúc đi du lịch. Nhưng thanh toán lặp lại hằng tuần nên cần phê duyệt thủ công. Không phải ứng dụng nào cũng được phép thu phí định kỳ theo tuần
Gọi ứng dụng vi phạm bản quyền là độc hại thì có vẻ hơi quá. Tôi đã bỏ lỡ điều gì, hay bài này do chủ sở hữu bản quyền viết?
Dù vậy, các ứng dụng có doanh thu cao nhất vốn đã là ứng dụng lừa đảo, và theo tôi nhớ thì vẫn luôn như vậy, nên cũng chẳng có gì mới
“Theo các tài liệu được công bố năm 2021, đội ngũ App Store Review có hơn 500 chuyên gia con người, xét duyệt hơn 100.000 ứng dụng mỗi tuần.”
Bỏ qua cách diễn đạt mơ hồ trong câu này, nếu giả định những người xét duyệt dành 100% thời gian làm việc cho việc review và theo tuần làm việc tiêu chuẩn, thì mỗi ứng dụng có khoảng 12 phút
Thật không may, Apple nghèo khó có lẽ không đủ khả năng thuê thêm người xét duyệt để bảo đảm quy trình xét duyệt có ý nghĩa cho mọi ứng dụng, và trả lương đủ cho người lao động làm việc trong điều kiện tử tế. Có lẽ họ đang bị dí theo hạn ngạch ứng dụng phải xét duyệt mỗi tuần
Vậy rốt cuộc vì sao Apple lại xứng đáng lấy 30% nhỉ?
Nếu phiên bản ứng dụng mới nhất vượt qua được quy trình xét duyệt App Store và còn tồn tại, sẽ có các kênh/nhóm Telegram với hàng nghìn người tụ tập để dùng nó cho đến khi Apple ra tay
Cũng có cả thị trường mua bán chứng chỉ ký và suất dùng máy nhà phát triển Apple, nên những người rành kỹ thuật hơn có thể tự ký IPA và cài đặt
Mỹ rất cần một đạo luật kiểu DMA. Không thể để một công ty nắm giữ hơn 60% người dùng Mỹ trong vấn đề cài ứng dụng mà họ muốn dùng
Tương tự, cũng không thể để hai công ty Apple và Google lấy 15–30% toàn bộ doanh thu phát sinh trên thị trường ứng dụng di động
Trước hết, 60% đó đã chọn iOS. Họ không phải là “con tin”; họ có thể rời đi. Và đây cũng không phải là cách vận hành mới, nó đã tồn tại từ khi iPhone ra mắt. Người tiêu dùng đang bỏ phiếu cho điều này [1]
Thứ hai, Google không kiểm soát người dùng cài gì, nên theo định nghĩa họ không lấy một phần của “toàn bộ doanh thu”. Phần lớn giá trị đến từ ứng dụng di động cũng phát sinh ở nơi khác [2], nên ngay cả con số của Apple cũng không chính xác
Là nhà phát triển thì đương nhiên muốn được thoải mái truy cập thiết bị của người dùng và chạy đoạn mã mình muốn. Đáng tiếc là một số nhà phát triển muốn quyền truy cập đó vì những lý do có hại cho người tiêu dùng. Vì vậy các nhà phát triển tìm cách lách hệ thống, còn ứng dụng trung thực thì bị từ chối
Nhưng cần hiểu rằng người dùng muốn cách tiếp cận được tuyển chọn này, và họ đang bỏ phiếu ủng hộ chứ không phải phản đối
[1] Có thể tranh luận về trình nhắn tin, nhưng đó là vấn đề của trình nhắn tin chứ không phải của ứng dụng
[2] Hầu như mọi ứng dụng tôi cài đều miễn phí. Công ty làm ra các ứng dụng đó kiếm doanh thu từ phần khác của hệ thống. Chúng tôi cũng có một “ứng dụng miễn phí” tích hợp với sản phẩm, và mọi người trả tiền cho sản phẩm đó
Một mặt, mỗi bên tự nhận vai trò người gác cổng trong cửa hàng của mình, và cả hai đều tuyên bố bảo vệ an toàn cho người dùng cuối
Mặt khác, nếu ứng dụng có vấn đề mang lại lợi nhuận cao hoặc liên quan đến vô số dòng sản phẩm khác của họ, họ tự cho phép mình linh hoạt áp dụng quy tắc một cách có chọn lọc
Ai giám sát người giám sát?
Kế hoạch cho việc đó là gì?
“Ứng dụng streaming bất hợp pháp”?
Tôi tưởng đây là bài về cách khiến Apple cho phép ứng dụng đèn pin thu phí thuê bao 50 đô la mỗi tháng
Rất nhiều ứng dụng chỉ là WebView hiển thị trang web từ xa
Mỗi khi máy chủ cập nhật trang, ứng dụng cũng được cập nhật, và không cần xét duyệt