2 điểm bởi GN⁺ 2024-07-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • CCC có thể xem SMS chứa mật khẩu dùng một lần theo thời gian thực thông qua vụ lộ dữ liệu của IdentifyMobile; đây là trường hợp hơn 198 triệu SMS của hơn 200 công ty bị rò rỉ
  • 2FA-SMS là lớp hỗ trợ để ngăn chặn tình huống chỉ mật khẩu bị đánh cắp, nhưng mức độ bảo mật thực tế cũng phụ thuộc rất lớn vào năng lực quản lý của nhà cung cấp dịch vụ gửi SMS
  • IdentifyMobile đã để lộ mã xác thực, số điện thoại người nhận, tên người gửi và một phần thông tin tài khoản trên Internet; chỉ cần đoán subdomain idmdatastore là có thể truy cập
  • Google, Amazon, Facebook, Microsoft, Telegram, Airbnb, FedEx, DHL nằm trong phạm vi bị ảnh hưởng; chỉ với feed thời gian thực, kẻ tấn công có thể chiếm số WhatsApp hoặc thử giao dịch tài chính/đăng nhập dịch vụ
  • Xác thực hai bước qua SMS vẫn tốt hơn chỉ dùng mật khẩu, nhưng các phương thức ít phụ thuộc hơn vào mạng di động và nhà cung cấp SMS, như mật khẩu dùng một lần dựa trên ứng dụng hoặc token phần cứng, sẽ an toàn hơn

Điểm yếu của 2FA-SMS được phơi bày qua vụ lộ dữ liệu IdentifyMobile

  • 2FA-SMS yêu cầu đồng thời mật khẩu mà người dùng biết và mã SMS chứng minh quyền truy cập vào số điện thoại
    • Được dùng như một lớp bổ sung để ngăn chiếm đoạt tài khoản khi chỉ mật khẩu bị lộ
    • SMS có thể chứa các mã chỉ có hiệu lực trong thời gian ngắn, như mã xác thực WhatsApp hoặc TAN dùng cho chuyển khoản ngân hàng
  • Xác thực dựa trên SMS vốn đã bị phơi bày trước nhiều hướng tấn công
  • Trong trường hợp này, ngay cả khi kẻ tấn công không nhắm trực tiếp vào mạng viễn thông hoặc người dùng, nhà cung cấp dịch vụ gửi SMS vẫn có thể trở thành điểm yếu trong chuỗi xác thực
    • IdentifyMobile là nhà cung cấp gửi SMS hàng loạt cho nhiều công ty và dịch vụ
    • Nhà cung cấp này có thể truy cập nội dung SMS, trong đó có mã xác thực
    • CCC có thể truy cập dữ liệu theo thời gian thực chỉ bằng cách đoán subdomain idmdatastore

Phạm vi lộ dữ liệu và rủi ro thực tế

  • Dữ liệu bị lộ không chỉ gồm nội dung SMS mà còn có số điện thoại người nhận, tên người gửi và trong một số trường hợp là thông tin tài khoản khác
  • Hơn 200 công ty bị ảnh hưởng, bao gồm các trường hợp giao phó bảo mật xác thực cho IdentifyMobile trực tiếp hoặc thông qua nhà cung cấp dịch vụ khác
    • Google, Amazon, Facebook, Microsoft
    • Telegram, Airbnb, FedEx, DHL
    • Tổng cộng hơn 198 triệu SMS bị rò rỉ
  • Chỉ với feed thời gian thực cũng có thể thực hiện nhiều kịch bản lạm dụng
    • Chiếm đoạt số WhatsApp
    • Thực hiện giao dịch tài chính mà không cần truy cập điện thoại, nếu đã biết mật khẩu
    • Đăng nhập vào nhiều dịch vụ, nếu đã biết mật khẩu
  • Việc lạm dụng thực tế nhìn chung vẫn cần mật khẩu, nhưng trong dữ liệu cũng có cả liên kết 1-click login
    • Với một số doanh nghiệp lớn bị ảnh hưởng, phạm vi IdentifyMobile bảo vệ chỉ giới hạn ở từng dịch vụ riêng lẻ
    • Sự bất cẩn của IdentifyMobile đã đặt doanh nghiệp và khách hàng vào rủi ro đáng kể
    • CCC không lưu giữ dữ liệu, nhưng không thể loại trừ khả năng người khác đã truy cập

Các phương thức xác thực có thể chọn thay cho SMS

  • Khi có thể, dùng mật khẩu dùng một lần được tạo trong ứng dụng hoặc token phần cứng thay cho SMS sẽ an toàn hơn
    • Các phương thức này không phụ thuộc vào mạng di động
    • Cũng không phụ thuộc vào nhà cung cấp gửi SMS như IdentifyMobile
    • Dù vậy, xác thực hai bước vẫn tốt hơn chỉ dùng một mật khẩu

1 bình luận

 
GN⁺ 2024-07-12
Các ý kiến trên Hacker News
  • Gần đây một người quen của tôi bị dính lừa đảo Google Ads: kẻ tấn công mua quảng cáo cho các từ khóa tìm kiếm như “BANKNAME login”, sao chép rất tinh vi trang đăng nhập ngân hàng, và ở phía sau đang thực hiện một cuộc tấn công chuyển tiếp
    Khi nhập mã xác thực hai bước từ ứng dụng trên điện thoại, màn hình báo từ chối và yêu cầu mã mới, nhưng thực ra mã thứ hai là mã phê duyệt để thêm người nhận “pay anyone” mới, và tiền đã bị rút đi bằng cách đó
    Tôi vẫn nghĩ xác thực hai bước qua SMS yếu ở cấp độ giao thức, nhưng trong trường hợp này, cách SMS của ngân hàng, gửi thông điệp khác khi thêm người nhận mới so với lúc đăng nhập, có thể đã tốt hơn
    Lý tưởng thì không nên chỉ là một ứng dụng tạo token đơn giản, mà cần tạo token theo từng loại giao dịch, như token để đăng nhập và token để thêm người nhận, và khiến chúng không thể thay thế cho nhau. Tôi tò mò không biết có ngân hàng nào cung cấp xác thực hai bước ở mức như vậy chưa
    Có lẽ passkey, vì thiết lập kết nối vật lý với phần cứng cục bộ, có thể khiến vấn đề kiểu này trở nên không còn ý nghĩa. Nhân tiện, nạn nhân cuối cùng đã được hoàn tiền

    • Quảng cáo không chỉ là thứ khủng bố tâm lý phiền toái, ngốn băng thông và tài nguyên tính toán, mà còn là con đường số một để phát tán lừa đảo và mã độc trên web
      Nếu muốn cải thiện tư thế bảo mật, cài trình chặn quảng cáo là một trong những cách tốt nhất. Tôi rất khuyên nên thiết lập uBlock Origin cho bạn bè hoặc người thân không rành công nghệ
    • HSBC thực sự có tính năng như vậy. Trong ứng dụng của từng quốc gia, có thể tạo các mã bảo mật khác nhau cho đăng nhập website, xác nhận giao dịch (ví dụ: chuyển tiền cho người nhận), và tái xác thực (ví dụ: thay đổi thông tin cá nhân như số điện thoại)
      Có thể xem màn hình ứng dụng tại Úc ở đây, ứng dụng tại Mỹ và Anh cũng tương tự: https://www.hsbc.com.au/content/dam/hsbc/au/images/ways-to-b...
      HSBC đã cung cấp tính năng này nhiều năm rồi, nhưng tôi không rõ vì sao nó vẫn chưa thành tiêu chuẩn hoặc vì sao các ngân hàng Mỹ khác chưa áp dụng
    • Vì tò mò, tôi từng thử mua quảng cáo Google một lần; dù chỉ thử vì họ cho tín dụng miễn phí, tôi vẫn phải lách qua vô số điều kiện và hướng dẫn vô lý trước khi quảng cáo được duyệt
      Thế mà tôi không hiểu vì sao họ lại khắt khe đến vậy với quảng cáo thông thường, nhưng lại bán quảng cáo cho các trang phishing giả mạo ngân hàng và nhắm vào người đang tìm kiếm ngân hàng đó
    • Cũng đáng nói với gia đình và người quen rằng FBI cũng khuyến nghị dùng tiện ích chặn quảng cáo trên công cụ tìm kiếm để tránh đúng kiểu lừa đảo này [0]
      “Khi tìm kiếm trên Internet, hãy dùng tiện ích chặn quảng cáo. Hầu hết các trình duyệt Internet cho phép thêm tiện ích mở rộng, bao gồm cả tiện ích chặn quảng cáo. Những trình chặn quảng cáo này có thể được bật và tắt trong trình duyệt, cho phép quảng cáo trên một số website cụ thể trong khi chặn quảng cáo ở nơi khác.”
      [0] https://www.ic3.gov/Media/Y2022/PSA221221
    • Một bài học khác ở đây là hãy đánh dấu trang hoặc ghi nhớ URL ngân hàng, và đừng tin rằng công cụ tìm kiếm sẽ đưa bạn đến đúng ngân hàng
  • Tôi đã nghi ngờ từ lâu rằng các công ty bắt buộc dùng xác thực hai bước qua SMS không thật sự nghiêm túc về bảo mật, mà chỉ muốn lấy số điện thoại và dùng xác thực hai bước như một màn diễn kịch bảo mật để thu thập số

    • Chắc chắn cũng có phần đó. Số điện thoại đã trở thành định danh duy nhất gần như không thay đổi và liên kết người dùng trên nhiều dịch vụ, giống như số căn cước công dân mới
      Hơn nữa, đó còn là định danh bạn trực tiếp trao cho từng người gặp, nên có thể nói nó trông giống một hệ thống tệ
    • Nếu là dịch vụ có tài khoản miễn phí, việc yêu cầu số điện thoại giúp ích cho chống gian lận hoặc ngăn lạm dụng nhiều tài khoản
      Nó ngăn việc tạo tài khoản mới để né chặn, và giúp dễ liên kết các hành vi xấu xuất hiện trên nhiều tài khoản
    • Phần lớn công ty thực ra muốn số điện thoại vì chống spam
      Tôi nghĩ mức độ những kẻ spam góp phần làm Internet suy thoái đang bị đánh giá thấp
    • Lý do bắt buộc dùng xác thực hai bước qua SMS là vì giả định người dùng có số điện thoại thì ít ma sát hơn rất nhiều so với giả định họ đã cài ứng dụng xác thực hai bước và biết quản lý công cụ đó
      Hỗ trợ cũng dễ hơn
    • Hoặc cũng có thể ban đầu họ dùng email để xác thực hai bước, rồi kiểm toán viên nói “đó không phải là xác thực hai bước”, nên họ nhận ra middleware gửi thông báo không chỉ hỗ trợ email mà còn hỗ trợ cả SMS
  • NIST từ khá lâu đã nói rõ không nên dùng xác thực hai bước qua SMS
    NIST SP 800-63B §5.1.3.3
    https://pages.nist.gov/800-63-3/sp800-63b.html#pstnOOB

    • Góc nhìn và lợi ích của NIST không nhất thiết trùng với những điều nhà cung cấp dịch vụ phải quan tâm về trải nghiệm khách hàng/người dùng
      Khách hàng: “Ứng dụng xác thực hai bước là gì? Không phải mã sẽ được gửi về điện thoại của tôi sao?”
      Hỗ trợ: “Đúng vậy, nhưng hiện chúng tôi không còn hỗ trợ xác thực hai bước qua SMS nữa.”
      Khách hàng: “Nhưng trước đây khi mã được gửi về điện thoại thì đâu có vấn đề gì.”
      Hỗ trợ: “Vâng, nhưng NIST khuyến nghị không dùng xác thực hai bước qua SMS.”
      Khách hàng: “NIST là cái gì? Thật bực mình. Tôi cần vào tài khoản của mình.”
  • Đáng tiếc là gần như mọi ngân hàng đều buộc dùng SMS. Vì các ứng dụng ngân hàng từ chối chạy trên điện thoại đã root. Một thành tựu bảo mật thật tuyệt vời

    • Dù sao thì vẫn coi như có phương án thay thế
      Ở nước tôi, gần như mọi ngân hàng bắt buộc xác thực hai bước dựa trên ứng dụng, không có phương án SMS thay thế
      Nếu không muốn mua và mang theo một điện thoại riêng, bạn chỉ còn cách dùng duy nhất một ngân hàng không yêu cầu điều đó
    • Đó đúng là một lợi ích về bảo mật
      Trên điện thoại đã root, tức là đã mở khả năng để ứng dụng khác rình xem và đánh cắp thông tin ngân hàng
      Việc ứng dụng ngân hàng không chạy trên điện thoại bị tổn hại bảo mật có vẻ hoàn toàn hợp lý
    • Gây tranh cãi, nhưng điện thoại đã root về bản chất là kém an toàn hơn
      Tuy nhiên GrapheneOS không thuộc trường hợp này, vì các bản build chính thức của GrapheneOS không có quyền root
  • Bài viết đang trộn lẫn hai vấn đề có ý nghĩa bảo mật khác nhau
    Liên kết 1-click login là điều đáng lo ngại, và các dịch vụ như WhatsApp có thể bị chiếm đoạt chỉ bằng quyền truy cập SMS
    Nhưng mã xác thực 2 bước thì tương đối ít đáng lo hơn. Vì là yếu tố thứ hai nên kẻ tấn công cũng cần cả mật khẩu
    Trong trường hợp như vậy, tôi sẽ bớt lo lắng hơn nhiều về việc dùng SMS và rủi ro bị chặn bắt

    • Cứ mỗi lần một cơ sở dữ liệu tin nhắn SMS bị rò rỉ, thì có khoảng 1000 cơ sở dữ liệu thông tin đăng nhập tài khoản bị rò rỉ
  • Ở Anh, có vẻ như hầu hết mọi giao dịch ngân hàng trực tuyến hiện nay đều được xác minh bằng SMS. Nhìn thì có vẻ như được luật yêu cầu, và đã thay thế hệ thống xác minh trước đây bằng thẻ ngân hàng + đầu đọc thẻ + PIN
    Cách cũ không chỉ an toàn hơn, mà cũng không phụ thuộc vào một chiếc điện thoại di động đang hoạt động bình thường và có sóng
    Hy vọng một ngày nào đó điều này sẽ được thừa nhận là một sai lầm khủng khiếp và được sửa lại, nhưng tôi không kỳ vọng nhiều

    • Tò mò là ngân hàng nào vậy. Tôi dùng Lloyds và giao dịch được xác minh bằng ứng dụng, không phải SMS
    • Câu đầu tiên hoàn toàn không đúng. SMS là một trong các lựa chọn, nhưng nhiều ngân hàng hỗ trợ xác thực 2 bước dựa trên ứng dụng
      Tôi đồng ý rằng đầu đọc thẻ hữu ích khi ngoại tuyến. Nhưng tôi hầu như chẳng bao giờ nhớ mang theo thiết bị đó, nên thường bị kẹt khi đi du lịch
  • Thụy Điển đã giải quyết vấn đề này từ lâu bằng BankID
    https://en.wikipedia.org/wiki/BankID
    Thật đáng kinh ngạc khi các cơ quan công và tư chỉ cần hợp tác một chút là có thể đạt được gì. Đây là cách duy nhất để đăng nhập và xác thực 2 bước cho các dịch vụ chính phủ và hầu hết ngân hàng, và nó hoạt động tốt
    Thật khó tin là không phải quốc gia nào cũng có hệ thống như vậy, thậm chí toàn EU cũng chưa có một hệ thống như thế

    • EU đang triển khai Digital Wallet cho việc này. Hy vọng nó dễ dùng hơn phiên bản BankID của Phần Lan, và sẽ càng tốt nếu ít phụ thuộc hơn vào ngân hàng hay các tổ chức tư nhân trục lợi khác
      Dù vậy tôi cũng không đặt kỳ vọng quá cao
      https://ec.europa.eu/digital-building-blocks/sites/display/E...
    • Theo mô tả trên wiki thì tôi thắc mắc liệu nó thật sự không hỗ trợ Linux hay không. Có lẽ có thể dùng dạng thẻ để thay thế
  • Có vẻ các tin nhắn trong bucket S3 được cập nhật mỗi 5 phút: https://www.zeit.de/digital/datenschutz/2024-07/it-sicherhei...
    Tuy nhiên CCC đã sai khi định nghĩa đây là vấn đề chỉ riêng của 2FA-SMS. Bị ảnh hưởng không chỉ có Twilio Verify (API xác thực 2 bước), mà là tất cả SMS được gửi qua nhà cung cấp này

    • Tò mò là căn cứ liên quan đến Twilio Verify đến từ đâu. Không thấy được nhắc ở đâu cả
  • Đây giống vấn đề bảo mật nhà cung cấp do không bảo vệ đúng cách kho lưu trữ dữ liệu nhạy cảm, hơn là vấn đề của bản thân SMS

    • Đây cũng là vấn đề của SMS ở chỗ OTP và token phần cứng không cần ghi giá trị bí mật luân phiên vào một kho dữ liệu có khả năng bị đọc công khai
      Đường tấn công cụ thể như vậy hoàn toàn không tồn tại với các công nghệ đó
  • Nhiều tổ chức tài chính nơi tôi làm việc yêu cầu xác thực 2 bước qua SMS và không cung cấp tùy chọn HOTP/TOTP. Phát điên lên được