1 điểm bởi GN⁺ 2023-06-27 | 2 bình luận | Chia sẻ qua WhatsApp
  • Trong popup Manage my account trên Android có thể mở ra một màn hình đi tới các website thông thường, và cũng có thể truy cập từ Settings cùng bộ ứng dụng Google
  • Đường vào lần lượt đi qua tab Security trong phần quản lý tài khoản Google, Password Manager, trợ giúp về mã hóa trên thiết bị, chính sách quyền riêng tư và menu Search
  • Màn hình này thậm chí có thể phát YouTube nhưng không có lịch sử truy cập hay thanh địa chỉ, và khi bấm quay lại thì sẽ trở về màn hình cài đặt thay vì lịch sử web
  • Trong console JavaScript có thể thấy đối tượng mm cùng các hàm closeView(), requestSecurityKeyHandshake(), updateSecurityKey(), nhưng công dụng thực tế của một số hàm vẫn chưa được xác nhận
  • Ban đầu Google trả lời đây không phải lỗ hổng bảo mật và việc vượt qua kiểm soát của phụ huynh cũng là hành vi có chủ đích, nhưng sau khi công khai và được báo chí đưa tin 3 ngày thì cho biết sẽ xem xét lại báo cáo

Trình duyệt ẩn mở bên trong cài đặt Android

  • Nhiều ứng dụng trên Android có popup Manage my account, và có thể truy cập cả trong các ứng dụng chính như Settings và bộ ứng dụng Google
  • Qua vài bước, bên trong popup sẽ hoạt động như một trình duyệt có thể đi tới các website thông thường
    • Settings → Google hoặc trong ứng dụng có thể chọn tài khoản, chọn “Manage my account”
    • Trong tab “Security”, chọn “Password Manager”
    • Chọn biểu tượng Settings ở góc trên bên phải
    • Chọn “Set up on-device encryption” → “Learn more about on-device encryption”
    • Trong menu hamburger, chuyển tới “Privacy Policy”
    • Nhấn menu 9 chấm ở phía trên, đợi khoảng 5 giây rồi chọn “Search”, hoặc đi tới mục Google
    • Nếu đăng xuất khỏi tài khoản Google thì có thể dùng nó như trình duyệt để đi tới nơi mình muốn
  • Ở trạng thái này còn có thể phát video YouTube, và màn hình sẽ mở bên trong ứng dụng Settings hoặc ứng dụng đã vào ban đầu
  • Điểm khác với trình duyệt thông thường

    • Không lưu lịch sử truy cập
    • Khi kết thúc phiên, tự động đăng xuất khỏi tài khoản Google đang đăng nhập
    • Không có thanh địa chỉ
    • Khi nhấn phím quay lại, nó không quay về trang web trước mà trở lại phần cài đặt của Password Manager

Đối tượng JavaScript mm và phản ứng của Google

  • Có thể kiểm tra đối tượng JavaScript mm trong console JavaScript di động như eruda
  • Đối tượng mm có ba hàm
    • closeView(): Đóng trình duyệt, hoạt động tương tự như khi nhấn phím quay lại
    • requestSecurityKeyHandshake(): Chưa xác nhận được chức năng, nhưng tên gọi cho thấy đây có vẻ là hàm nhạy cảm
    • updateSecurityKey(): Chưa xác nhận được chức năng, nhưng tên gọi cho thấy đây có vẻ là hàm nhạy cảm
  • Vì trình duyệt này được mở từ luồng tính năng on-device encryption, suy đoán rằng hai hàm chưa được xác nhận có thể liên quan đến thiết lập khóa mã hóa cục bộ vẫn chỉ dừng ở mức phỏng đoán
  • Với báo cáo ban đầu, Google trả lời đây không phải lỗ hổng bảo mật và việc vượt qua kiểm soát của phụ huynh là “Intended Behavior”
  • Sau khi bài viết được công khai, nhiều cơ quan truyền thông tiếng Anh và tiếng Nga cùng các nơi khác đã đưa tin, và 3 ngày sau khi công khai Google cho biết sẽ xem xét lại báo cáo đó
  • Có thảo luận liên quan tại Hacker News discussion

2 bình luận

 
wedding 2023-06-28

Mỗi lần vào phần quản lý mật khẩu đều có cảm giác hơi bị chậm một nhịp... hóa ra không phải chỉ là cảm giác của mình nhỉ

 
GN⁺ 2023-06-27
Ý kiến trên Hacker News
  • Tôi đã tìm hiểu một chút, và khi nhấn "Manage my account" thì nó không ở lại trong ứng dụng Cài đặt mà chuyển sang một Activity được nhúng bên trong Google Play Services
    Cuối cùng trình duyệt là com.google.android.gms/.auth.folsom.ui.GenericActivity, và có vẻ nó không dùng Chrome, tức phần triển khai WebView hệ thống mặc định trên điện thoại của tôi
    Android có thể tạo giao diện giữa mã Android và mã JavaScript bằng addJavascriptInterface, và có vẻ GMS dùng cái này khá nhiều, nên trông như một bề mặt tấn công đáng để xem sau
    Giao diện đáng ngờ mm nằm trong MagicArchChallengeView, và được nối tới lớp bwuz đã bị làm rối mã. Bản thân bwuz gần như trống rỗng nhưng lại nối tiếp tới một vài lớp làm rối mã khác
    Nếu tìm theo chuỗi thì thấy hai lớp "qvc""pdn" phơi ra các hàm liên quan; pdn có vẻ là phần cốt lõi, còn qvc có các log lỗi hữu ích cho thấy từng tham số là gì
    setVaultSharedKeys mong đợi một mảng đối tượng JSON chứa gaiaId, epoch, và hai giá trị key, rồi biến chúng thành danh sách và chuyển cho một lớp trừu tượng có vẻ liên quan sâu đến bảo mật tài khoản
    addEncryptionRecoveryMethod mong đợi gaiaId, danh sách miền bảo mật và khóa công khai của thành viên, rồi cũng chuyển cho cùng lớp trừu tượng đó
    Tôi phải dừng ở đây để đi làm, nhưng có vẻ không chỉ giao diện này mà cả các giao diện khác mà GMS phơi ra cho WebView cũng đáng để đào sâu hơn
    https://developer.android.com/reference/android/webkit/WebVi...

    • Tôi thắc mắc vì sao nó không dùng WebView hệ thống mặc định. Vậy nghĩa là nó dùng WebKit chứ không phải Blink sao?
      Dù là Blink thì nhiều khả năng nó cũng không mới bằng bản do Chrome cung cấp. Nhìn liên kết tài liệu thì có vẻ đúng là WebKit
    • Alex Russell từng nói trong State of the Browser 2021 rằng WebView trên Android không phải Chrome
      https://2021.stateofthebrowser.com/speakers/alex-russell/
    • gaiaId là viết tắt của Google Accounts and ID Administration ID; ai đặt cái tên này cho một ID duy nhất trên toàn Google chắc hẳn đã rất tự hào, mà cũng đáng thế thật
  • Tôi không hiểu nó khác gì các WebView nhúng khác. Chẳng phải gần như ứng dụng nào cũng có WebView nhúng cho những chỗ như "xem chính sách quyền riêng tư" sao?
    Hiển thị HTML thường dễ hơn nhiều so với việc giao toàn bộ chính sách quyền riêng tư cho nhà phát triển ứng dụng xử lý

    • Chính xác là vậy. Đây là Android System WebView, tức trình duyệt nhúng dùng khi ứng dụng không phải bản thân một trình duyệt
    • Có thể truy cập website tùy ý bằng WebView đó không? Tôi chưa từng làm được
      Theo trí nhớ của tôi thì ngay cả việc cấu hình WebView cho phép nhiều tên miền hay URL cũng khá khó. Tôi không phải nhà phát triển Android, và lần cuối đụng vào cũng đã vài năm rồi
    • Có vẻ WebView này có các hàm JavaScript đặc quyền cho quản lý và khôi phục khóa của trình quản lý mật khẩu
    • Nếu có thể vượt kiểm soát của phụ huynh từ bất kỳ ứng dụng nào có WebView nhúng, thì đây là một lỗi lớn hơn của Android
      Chuyện quản lý khóa hiện vẫn khá suy đoán, vì tác giả chưa thử kiểm tra nó thực sự làm gì, nên hiện mới chỉ ở mức “có hai phương thức trông đáng sợ nhưng chưa rõ là gì”
    • Hồi xưa trên iTunes cũng có thể đùa vui làm chuyện tương tự. Tôi không chắc đây có phải vấn đề lớn đến vậy không
  • Cũng hơi giống cách ngày trước vào Internet từ tệp trợ giúp CHM khi trình duyệt bị chặn
    Chết thật, lộ tuổi mất rồi

    • Giờ là tự khai tuổi qua exploit à? Kiểu như “dùng gopher trên máy ở thư viện đại học để vào một trang, mở phiên telnet rồi kiểm tra email của trường ngoài bang trong suốt kỳ nghỉ hè” thì sao?
    • Tôi cũng dùng nó để cài lại những trò chơi mà quản trị viên đã xóa
    • Ở trường cấp ba của tôi, bọn tôi mở Windows Explorer từ hộp thoại mở tệp của Notepad để thoát khỏi cái shell bookshelf kỳ quặc. Hình như là sản phẩm của IBM
  • Giống hệt cách tôi từng lách ứng dụng kiểm soát của phụ huynh trên Windows hồi nhỏ
    Tôi chỉ được dùng máy tính 1 tiếng, và khi hết giờ thì nó sẽ đóng mọi ứng dụng trừ các ứng dụng Microsoft Office vì được coi là phục vụ học tập
    Tôi bấm linh tinh một lúc rồi bằng cách nào đó mở được trình duyệt bên trong Outlook và chơi game Flash trên Miniclip

    • Làm tôi nhớ cách bọn tôi từng vượt qua Mac bị khóa hồi cấp ba. Chỉ được chạy vài ứng dụng nhất định và cũng không mở được System Preferences, nhưng trong Safari thì lại có thể đổi trình duyệt web mặc định
      Tôi đổi trình duyệt web mặc định thành Terminal, rồi mở Word, tạo một liên kết và bấm vào đó
      Bình thường Terminal mở theo cách thông thường sẽ bị hạn chế, kiểu như không chạy được ứng dụng khác, nhưng instance Terminal mở theo cách này có nhiều quyền hơn, nên có thể dùng open /path/to/your/app để chạy game từ đĩa đã gắn vào chẳng hạn
      Khi giáo viên coi tự học tới hỏi liệu chúng tôi có được chơi Starcraft không, tôi trả lời: “Thầy cũng biết mà, mấy máy này bị khóa khá kỹ, nên nếu bọn em chơi được trò này thì chắc là nhà trường đã cho phép rồi.” Tôi vẫn không tin là câu đó lại có tác dụng
  • Nếu một đứa trẻ tự tìm ra cách hack này để vào được các trang bị chặn, thì tôi nghĩ nó xứng đáng được hưởng thành quả đó

    • Cũng có thể nó không tự tìm ra mà đọc được trên mạng hoặc nghe từ những đứa trẻ khác
  • Một cách lách tương tự cũng từng tồn tại trong trang giấy phép của about
    Đi theo liên kết tới giấy phép là bạn có một trình duyệt. Khá hữu ích khi muốn mở trình duyệt trên những thứ như head unit trên xe hơi hoặc xe đạp Peloton

    • Tôi vừa thử vào trang "Third-party licenses" trên Pixel 6, và nó hiện ra một danh sách liên kết kéo dài vô tận
      Trông như danh sách mọi tệp trong hệ thống tệp vậy
  • Trải nghiệm của người báo lỗi cho Google này làm tôi nhớ đến trải nghiệm của mình
    Tôi: Google Sheets có lỗi làm nội dung đã xóa bị lộ cho bên thứ ba
    Google: Không phải lỗi. Hoạt động đúng như thiết kế. Đóng issue
    Tôi: Thật sao? Tôi đã thực sự bị thiệt hại khi dùng ứng dụng này
    Google: Thực ra đúng là lỗi, nhưng đây là issue đã được biết từ lâu nên không thuộc diện bug bounty. Đóng issue

    • Tôi cũng gần như y hệt khi báo cáo lỗ hổng cho Google
      Tôi: Gmail có lỗi cho phép email giả mạo xóa trạng thái DKIM thất bại và trông như hợp lệ
      Google: "Won't fix (Intended Behavior)"
      Tôi: Thật sự Google cố ý để email giả mạo trông như bình thường trong giao diện sao?
      Google: Thực ra đây là issue đã được biết đến
    • Tôi cũng có trải nghiệm giống vậy. Tôi chỉ nhận được những câu trả lời mơ hồ từ Google, rồi vài tháng sau trưởng bộ phận TAO công bố bản sửa lỗi cho chính lỗ hổng mà tôi đã nêu từ đầu
      Hơn nữa, các bài báo ban đầu còn cố liên hệ lỗ hổng đó với các vụ hack từ Trung Quốc/Nga. Kiểu tuyên truyền đó nên trả lại cho chính Google. Google là công ty Mỹ và đã để cửa hậu mở toang để bất kỳ ai, dù ở nước ngoài hay trong nước, đều có thể khai thác. Thực tế cả hai phía đều đã khai thác
      Google thực sự có vấn đề. Tôi không biết từ sau năm 2019 đã xảy ra chuyện gì, nhưng tình hình không ổn
    • Tôi cũng có thêm một câu chuyện tương tự
      Tôi: Google Play Services có lỗi
      Google: Không phải lỗi. Hoạt động đúng như thiết kế. Đóng issue
      Tôi: Tôi đã đăng lỗi lên blog, và báo chí đưa tin rất lớn
      Google: Có vẻ chúng tôi đã sai! Đúng là lỗi thật. Chúng tôi sẽ liên hệ lại sau vài tuần
  • Hôm nay tôi mới biết có thứ gọi là bảng điều khiển JavaScript trên di động
    https://eruda.liriliri.io/

    • Cũng có phiên bản từ xa do cùng người đó tạo ra: https://github.com/liriliri/chii
      Bạn có thể mở công cụ dành cho nhà phát triển từ máy tính khác và mọi thông tin được đồng bộ qua WebSocket. Tôi từng dùng một lần để gỡ lỗi sự cố trên thiết bị của khách hàng
    • Sẽ hay hơn nếu có bookmarklet. Các công cụ dành cho nhà phát triển trên trình duyệt hiện nay ban đầu cũng khởi đầu theo kiểu này, cụ thể là từ Firebug
    • Rất tuyệt. Trên Brave của iOS thì không chạy, nhưng trên Safari thì được, vậy là đủ rồi
    • Không biết có phải chỉ mình tôi không, nhưng nó hoàn toàn không hoạt động. Dán đoạn mã JavaScript vào thanh địa chỉ thì không có gì xảy ra, còn trên Nightly thì nó lại dùng chuỗi đó để tìm kiếm trên Google
    • Thỉnh thoảng tôi phải mất công dùng tới data:text/html,, nhưng cái này nhiều tính năng đến đáng ngạc nhiên
  • Tôi từng làm kiểu này ở sảnh chờ trong lúc bố mẹ đi giao dịch ngân hàng
    Hồi đó mấy thẻ best viewed in Netscape Navigator đúng là mỏ vàng. Quy trình gần như y hệt, cứ bấm thử cho đến khi hiện ra mấy thẻ đó rồi từ đó nhảy sang công cụ tìm kiếm

    • Tôi từng dùng cách này trên một chiếc Tesla đi mượn để vào được trình duyệt gần như toàn màn hình thông qua ứng dụng YouTube
      Sau đó tôi vào một trang stream đầy adware mờ ám, rồi ngay lúc chuyển sang video khác thì toàn bộ máy tính của Tesla bị treo cứng và tôi phải hard reboot cả xe
  • Làm tôi nhớ đến các phiên bản Windows ngày xưa. Nhấn F1 có thể kích hoạt nhiều lệnh chạy khác nhau thông qua Windows Help

    • Tôi cũng nghĩ ngay đến chuyện đó đầu tiên. Nó giống kiểu vượt qua màn hình đăng nhập trên Windows 95/98 bằng cách “F1 → mở file trợ giúp → Other... → nhấp phải explorer.exe rồi chọn Run”