1 điểm bởi GN⁺ 2024-06-30 | 1 bình luận | Chia sẻ qua WhatsApp
  • Do CVE-2024-27867 trong firmware AirPods, người biết địa chỉ Bluetooth MAC có thể kết nối với thiết bị để nghe micro hoặc phát nhạc
  • Lỗ hổng phát sinh vì đường dẫn Fast Connect, giao thức độc quyền của Apple, không kiểm tra rõ ràng trạng thái xác thực và mã hóa
  • Địa chỉ Bluetooth MAC cần cho tấn công không hoàn toàn riêng tư; có thể thu được qua sóng vô tuyến khi ở chế độ ghép đôi hoặc khi AirPods đang hoạt động
  • Nếu AirPods nằm trong hộp sạc đang đóng hoặc AirPods Max nằm trong Smart Case, chức năng không dây sẽ tắt nên không thể kết nối được
  • Apple đã phát hành bản cập nhật firmware cho AirPods và một số thiết bị Beats, nhưng người dùng Android·Windows·Linux sử dụng không qua iOS·macOS có thể gặp quy trình cập nhật rườm rà hơn

Lỗ hổng firmware AirPods và phạm vi ảnh hưởng

  • Firmware Apple AirPods có lỗ hổng bảo mật CVE-2024-27867
  • Người biết địa chỉ Bluetooth MAC có thể kết nối với AirPods và thực hiện các hành động sau
    • Nghe micro
    • Phát nhạc
    • Kiểm tra và tạm dừng nhạc đang phát trên thiết bị kết nối khác
    • Thực hiện một số thao tác mà giao thức AAP cho phép
    • Gửi thông điệp sai định dạng để làm AirPods bị crash
  • Kẻ tấn công vẫn có thể kết nối thêm ngay cả khi AirPods đã được kết nối với điện thoại
    • Tuy nhiên, nếu kẻ tấn công bật micro thì việc phát nhạc sẽ dừng lại
  • Nếu AirPods nằm trong hộp sạc đang đóng hoặc AirPods Max nằm trong Smart Case, chức năng không dây sẽ tắt nên không thể có bất kỳ kết nối nào

Cách phát hiện lỗ hổng

  • AirPods 3 hoạt động tự nhiên với nhiều tính năng khi dùng kết hợp macOS và thiết bị Apple, nhưng khi khởi động cùng laptop đó vào Linux thì không kết nối đồng thời với điện thoại và laptop được
  • Do khác biệt này, người phân tích cho rằng có sử dụng giao thức riêng của Apple không có trên tai nghe Bluetooth thông thường, và bắt đầu phân tích để tái triển khai một số tính năng trên Linux
  • Trong quá trình phân tích, lỗ hổng được phát hiện trong tính năng Fast Connect của Apple dùng để kết nối thiết bị ngoại vi Bluetooth

Cách Fast Connect hoạt động

  • Fast Connect là giao thức độc quyền của Apple và sử dụng một cách sáng tạo tính năng ping trong đặc tả Bluetooth
  • Mục tiêu là giảm thời gian thiết lập kết nối giữa hai thiết bị Apple từ khoảng 1 giây xuống khoảng 0,5 giây
  • Trước khi xác thực với thiết bị đích, hai thiết bị trao đổi thông điệp L2CAP ping
    • Apple đặt thông điệp giao thức vào trong payload ping
    • Bằng cách này, hai bên xác nhận có hỗ trợ Fast Connect hay không mà không vi phạm đặc tả Bluetooth
  • Sau đó, quá trình thương lượng cần thiết cho kết nối được thực hiện bằng 3 lượt thông điệp khứ hồi bổ sung
  • Tổng cộng chỉ có 4 lượt thông điệp khứ hồi, nên nhanh hơn quy trình trao đổi SDP descriptor và cấu hình kênh trong kết nối Bluetooth thông thường

Thiếu kiểm tra xác thực

  • Vấn đề nằm ở việc một bước kiểm tra quan trọng bị thiếu trong đường dẫn mã riêng triển khai Fast Connect
  • AirPods không kiểm tra liệu bên kết nối đã thực sự xác thực và bật mã hóa hay chưa
  • iOS và macOS bình thường sẽ thực hiện bước xác thực và kích hoạt mã hóa sau thông điệp Fast Connect ban đầu
  • Ngay cả khi kẻ tấn công bỏ qua bước này, AirPods vẫn tiếp tục quy trình Fast Connect
  • Khi kết nối với AirPods bằng phương thức Bluetooth thông thường không qua Fast Connect, bước xác thực được bao gồm ngầm định; vì vậy có khả năng đường dẫn mã Fast Connect đã bị thiếu kiểm tra rõ ràng

Điều kiện về địa chỉ Bluetooth MAC

  • Kẻ tấn công cần biết địa chỉ Bluetooth MAC cố định của AirPods
  • Địa chỉ này không phải thông tin hoàn toàn riêng tư
    • Nó được quảng bá qua sóng vô tuyến khi thiết bị Bluetooth ở chế độ ghép đôi
    • Khi AirPods đang hoạt động, có thể dễ dàng lấy từ sóng vô tuyến bằng phần cứng như Ubertooth One

Cập nhật và vấn đề với người dùng không dùng Apple

  • Apple đã phát hành nhiều bản cập nhật firmware khắc phục lỗ hổng này trong vài ngày gần đây
  • Các thiết bị áp dụng gồm AirPods 2, AirPods 3, AirPods Pro, AirPods Pro 2, AirPods Max và một số tai nghe Beats
  • Người dùng cần kiểm tra xem firmware AirPods đã là phiên bản mới nhất chưa
  • Firmware AirPods được cập nhật tự động, nhưng chỉ tự động cập nhật khi dùng cùng iPhone hoặc MacBook
  • Những người dùng AirPods không có thiết bị iOS hoặc macOS, chẳng hạn người dùng Android, Windows, Linux, khó cập nhật firmware một cách dễ dàng
  • Có vẻ những người dùng này có thể cập nhật firmware tại Apple Store

Báo cáo và công cụ

  • Jiska Classen của University of Potsdam đã hỗ trợ các câu hỏi liên quan đến Bluetooth và quy trình công bố
  • Các công cụ cộng đồng Linux như BlueZ là cần thiết để tìm ra vấn đề này

1 bình luận

 
GN⁺ 2024-06-30
Các ý kiến trên Hacker News
  • Hai thiết bị trong cùng một phòng, dù chỉ dùng một phần rất hẹp của phổ điện từ, lẽ ra vẫn có thể trao đổi hàng nghìn thông điệp mỗi giây; vậy tại sao trong Bluetooth, một thông điệp lại mất tới hàng trăm mili giây thay vì micro giây?
    Muốn biết yếu tố nào quyết định đơn vị thời gian của quá trình này
    • Trường hợp này thì không chắc, nhưng thường là kết quả của vài yếu tố chồng lên nhau: thiết bị quảng bá gửi beacon thường xuyên đến mức nào, có nhiều kênh quảng bá hay không, beacon và handshake có được truyền ở tốc độ chậm nhất của giao thức để tương thích ngược hay không, có cần truyền lại ở tầng vật lý do nhiễu xung quanh hay không, v.v.
      Cuối cùng, cấu trúc là handshake để xác nhận hai bên hỗ trợ những tính năng nào và sẽ giao tiếp bằng giao thức tầng vật lý nào sẽ ngốn thời gian
  • Tôi nhớ là các thiết bị Beats bị ảnh hưởng dùng cùng chip thực ra có thể cập nhật qua ứng dụng Beats trên Android
    • Tôi đã dùng AirPods Pro thế hệ 1 và 2 với điện thoại Android, nhưng trên Android không có cách nào tử tế để cập nhật firmware, kiểm tra phiên bản, chọn chế độ, đổi thao tác nhấn giữ, hay kiểm tra mức pin
      Có một số ứng dụng bên thứ ba, nhưng độ tin cậy thấp; may là trên Mac thì làm được hầu hết, nhưng kiểm tra độ vừa khi đeo thì vẫn cần iPhone. Việc nâng cấp firmware không cho người dùng kiểm soát, cũng không có thông tin trạng thái hay tiến độ nào, nên được thiết kế theo kiểu gây rối tối đa
      Có lần nhân viên hỗ trợ ở Apple Store bảo tôi “đặt AirPods trong hộp đang mở khi đang kết nối với Mac, cắm hộp vào nguồn và để khoảng 30 phút”, nhưng thực tế có cảm giác việc cập nhật khá ngẫu nhiên. Nhân viên Apple Store dường như đôi khi cũng hiểu rất mơ hồ về khả năng phối hợp giữa các sản phẩm Apple ngoài iPhone, và họ đã hai lần bối rối khi biết tôi dùng AirPods chỉ với Mac và Android, không có iPhone
  • Liên kết Apple Support trong bài có vẻ là bản Ấn Độ; bản Mỹ ở đây:
    https://support.apple.com/en-us/106340
    Bản Mỹ hiển thị số phiên bản firmware mới nhất khác; ví dụ AirPods Pro thế hệ 2 là 6F8, còn bản Ấn Độ là 6B34
  • Sẽ rất thú vị nếu có một bài viết nói về chi tiết triển khai tính năng này trên Linux
    Khiến tôi chờ bài tiếp theo về triển khai trên Linux
  • Firmware của AirPods 2 của tôi đang ở phiên bản cũ, nhưng từ phía người dùng thì không thể yêu cầu iOS cập nhật một cách rõ ràng, cũng không có hiển thị khi nào cập nhật diễn ra
    Giá mà có nhiều quyền kiểm soát cập nhật hơn
    • Có ghi rằng “các bản cập nhật firmware được tự động chuyển tới khi AirPods đang sạc và nằm trong phạm vi Bluetooth của iPhone, iPad hoặc Mac có kết nối Wi‑Fi”
      https://support.apple.com/en-us/106340
    • Khi ngày càng có thêm tính năng cho AirPods hiện tại và tương lai, tôi muốn có thể tự kích hoạt cập nhật, hoặc ít nhất nhận được thông báo rằng cập nhật đã diễn ra
      Đúng là hơn 95% người dùng AirPods không cần biết về cập nhật firmware, nhưng với những người quan tâm thì nên có cách để biết chuyện gì đang xảy ra
      Thường thì không phải vấn đề lớn, nhưng đã có lần tôi nhận firmware AirPods muộn vài ngày, và trong tương lai có thể sẽ có thời điểm cập nhật ngay lập tức trở nên quan trọng
    • Nếu muốn có nhiều quyền kiểm soát hơn, có lẽ sản phẩm Apple không phù hợp với bạn
    • Tôi muốn thử đầu tư thời gian reverse engineering cái này. Có vẻ thú vị
  • Lỗ hổng tất nhiên là xấu, nhưng tôi muốn biết thực tế nó nghiêm trọng đến đâu. Tò mò kẻ tấn công có thể làm việc gì “đáng sợ”
    Nếu là kiểu ngắt kết nối hiện có thì có vẻ khó nghe lén cuộc gọi hoặc luồng âm thanh mà người dùng không biết. Không rõ kịch bản tệ nhất chỉ là quét địa chỉ MAC ở cự ly gần rồi tự động kết nối để phát tiếng ồn vào tai, hay còn vấn đề lớn hơn
    Có thể chiếm AirPods khi một nhân vật nổi tiếng cấp cao hoặc chính trị gia đang gọi video, nhưng chắc sẽ bị phát hiện ngay; tôi tò mò liệu có chuyện gì tệ hơn không
    • Kẻ tấn công có thể phát âm thanh lớn đến mức nguy hiểm, có thể nghe lén âm thanh xung quanh của người đang đeo AirPods nhưng không dùng, và cũng có thể giả làm người gọi mà không đi qua dịch vụ gọi điện hay để lại lịch sử cuộc gọi
      Ngoài ra, chiếm được kết nối Bluetooth đồng nghĩa với việc có một bề mặt tấn công khá rộng, nên nếu kẻ tấn công biết lỗ hổng khác thì cũng mở đường cho chuỗi khai thác bổ sung
    • Trường hợp tệ nhất, ai đó có thể tạo một thiết bị có thể thả vào túi để ghi lại mọi âm thanh từ tai nghe. Cũng có thể có dạng như USB drive
      Giao thức “Fast Connect” có vẻ cho phép “kết nối” đồng thời với nhiều thiết bị, nên người dùng nhiều khả năng sẽ không nhận ra. Một kiểu tấn công khác là đặt các thiết bị hình đế lót ly cà phê khắp văn phòng như nhân viên vệ sinh để chộp âm thanh từ AirPods xung quanh
      Về cơ bản, phần khó nhất đã được giải quyết; chỉ cần làm một thiết bị có pin nhỏ, bộ phát Bluetooth và bộ nhớ là có thể thu thập âm thanh chất lượng cao gần nơi mọi người nói chuyện
    • Nhiều người vẫn đeo AirPods trong tai ngay cả khi không chủ động dùng, nên trong trường hợp đó có thể dùng micro để nghe lén các cuộc trò chuyện trực tiếp
      Tuy nhiên phải ở trong phạm vi Bluetooth, nên có khi nghe lén theo cách bình thường còn dễ hơn
    • Thực tế thì tệ nhất có lẽ chỉ là gây phiền nhiễu
      Nếu chưa được vá, hẳn ai đó đã làm một ứng dụng phá AirPods cho Flipper Zero để cắt âm thanh AirPods của mọi người ở nơi công cộng và khiến họ bực mình
  • Trong Settings > Bluetooth > Your AirPods, nhấn [i] thì có thể xem phiên bản ngay cả khi AirPods hiện không được kết nối
    6A326 có vẻ là phiên bản chứa bản sửa lỗi
    https://support.apple.com/en-us/HT214111
    • Có ghi “AirPods Firmware Update 6A326, AirPods Firmware Update 6F8, and Beats Firmware Update 6F8”, và thiết bị của tôi là 6F8
      Có lẽ là phiên bản dành cho AirPods Pro thế hệ 2
  • Tôi biết khả năng thấp, nhưng hy vọng sự việc lần này sẽ trở thành cơ hội khiến Apple bằng cách nào đó hỗ trợ cập nhật AirPods trên các hệ điều hành khác, ít nhất là cập nhật AirPods trên Android
  • Không có tùy chọn cập nhật thủ công. Chỉ có cập nhật tự động, và cũng không rõ phải làm thế nào để thúc đẩy quá trình tự động đó
    • Nếu tôi nhớ không nhầm, nếu gỡ AirPods hoặc hủy ghép đôi rồi buộc ghép đôi lại thì sẽ buộc kích hoạt cập nhật
  • Ngoài việc không hết pin, tai nghe có dây lại có thêm một ưu điểm nữa
    • Còn có ưu điểm là kết nối ổn định. Bluetooth trên Linux đúng là thảm họa