4 điểm bởi GN⁺ 2025-06-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đã thử reverse engineering máy POS thẻ tín dụng Worldline Yomani XR để phục vụ nghiên cứu bảo mật
  • Trong quá trình tháo rời thiết bị, phát hiện cơ chế phát hiện xâm nhập vật lý được triển khai tốt, nhưng về mặt phần mềm lại có vấn đề là root shell bị lộ qua cổng serial bên ngoài
  • Thông qua tháo chip nhớ, trích xuất và phân tích firmware, đã xác nhận cấu trúc của một hệ thống dựa trên nhân Linux 3.6 cùng nhiều thành phần rất cũ
  • Đã chứng minh rằng chỉ qua cổng console serial cũng có thể dễ dàng giành quyền root và cài mã độc mà không cần tháo rời thiết bị
  • Toàn bộ các tác vụ quan trọng liên quan đến thanh toán và xác thực đều được xử lý trên một bộ xử lý bảo mật riêng, nên rủi ro lộ dữ liệu quan trọng trên thực tế không lớn

Tổng quan dự án

  • Dự án này tập trung vào quá trình phân tích ngược mẫu Worldline Yomani XR với mục đích nghiên cứu bảo mật thiết bị đầu cuối thanh toán
  • Mẫu này được sử dụng rộng rãi trên khắp Thụy Sĩ; dù hiện đã ngừng sản xuất, nó vẫn còn được dùng tại nhiều chuỗi bán lẻ lớn và các cửa hàng nhỏ

Quan sát ban đầu và tháo rời phần cứng

  • Sau các bước khảo sát cơ bản như khám phá UI và quét cổng, nhóm bắt đầu tháo rời phần cứng
  • Quan sát được mức độ bảo mật phần cứng khá cao, với nhiều PCB, vỏ máy được thiết kế tốt, cùng bộ xử lý Arm lõi kép dựa trên ASIC tùy biến
  • SoC chính là một ASIC chuyên dụng có tên mã Samoa II, với flash và RAM gắn ngoài

Phát hiện xâm nhập và bảo vệ chống can thiệp

  • Ngay cả khi không mở vỏ, thiết bị vẫn có thể phát hiện sự kiện xâm nhập chỉ bởi lỗi ở kết nối bo mạch cảm biến áp lực (Zebra strip) hoặc do ốc bị nới lỏng
  • Việc phát hiện vẫn được duy trì nhờ pin, ngay cả khi nguồn điện chính bị ngắt
  • Trên PCB chính có đường mạch zíc zắc (trace), còn đầu đọc thẻ được bọc bởi PCB mềm, và hư hại ở các phần này sẽ kích hoạt phát hiện xâm nhập
  • Khi tháo ra rồi lắp lại trong thời gian ngắn, do phát hiện xâm nhập, thiết bị chỉ hiển thị màn hình đỏ "TAMPER DETECTED" và không phản hồi với đầu vào bên ngoài

Trích xuất firmware bằng phương pháp chip-off

  • Đã tháo hàn flash on-board và kết nối trực tiếp để trích xuất firmware
  • Dữ liệu không được mã hóa, nhưng phát hiện cấu trúc ECC đặc biệt và cách bố trí metadata của hệ thống tệp YAFFS2
  • Đã tự triển khai trình đọc filesystem để lấy được toàn bộ danh sách tệp
  • Hệ thống sử dụng nhân 3.6 dựa trên Buildroot phiên bản 2010, cùng uClibc, busybox và nhiều thư viện đã cũ

Quá trình tình cờ phát hiện root shell

  • Sau khi phân tích firmware, nhóm gắn lại flash và tìm đường tín hiệu console serial, rồi bắt tín hiệu bằng logic analyzer
  • Cùng với log khởi động, dấu nhắc đăng nhập đã lộ ra
  • Khi nhập "root", có thể vào root shell ngay lập tức mà không cần mật khẩu
  • Trên thực tế, cổng serial này có thể truy cập ngay từ bên ngoài chỉ bằng cách mở nắp che
  • Kẻ tấn công có thể nhanh chóng kết nối mà không cần tháo rời thiết bị và thực hiện các hành vi như chèn mã độc

Mức độ nghiêm trọng đến đâu?

  • Kết quả phân tích quá trình khởi động và cấu hình hệ thống cho thấy Linux chỉ phụ trách mạng, cập nhật và một phần logic nghiệp vụ
  • Mọi chức năng liên quan đến bảo mật như thanh toán thẻ, nhập PIN và hiển thị đều do bộ xử lý mp1 riêng biệt quản lý
  • Linux (mp2) luôn khởi động trước, sau đó image đã ký và mã hóa được nạp vào lõi bảo mật bởi bootloader an toàn
  • Về nội bộ, cơ chế bảo vệ lõi bảo mật vẫn hoạt động đúng, nên dữ liệu cốt lõi về bảo mật không bị lộ chỉ vì root shell bị phơi ra

Lịch công bố và báo cáo

  • 2024-11-14: Phát hiện root shell
  • 2024-11-15: Thông báo cho nhà sản xuất kèm mốc công bố sau 90 ngày
  • 2024-11-18: Nhận phản hồi xác nhận báo cáo từ nhà sản xuất
  • 2025-06-01: Công bố dự án

Kết luận

  • Việc root shell bị lộ qua cổng serial bên ngoài rõ ràng là một bề mặt tấn công không cần thiết và là sai sót trong quá trình kỹ thuật
  • Tuy vậy, nhờ thiết kế tách biệt bộ xử lý bảo mật, rủi ro lộ thông tin thanh toán trên thực tế là thấp
  • Có thể việc cho phép đăng nhập root đã vô tình được áp dụng trong firmware production, hoặc khác nhau tùy phiên bản
  • Trong quá trình nghiên cứu, cũng có những thiết bị mà tính năng đăng nhập root đã bị vô hiệu hóa hoàn toàn
  • Có khả năng vấn đề này đã được nhận diện và khắc phục nội bộ

Dự án này để lại nhiều kết quả thú vị, đồng thời một lần nữa cho thấy giá trị của việc đào sâu phân tích firmware

1 bình luận

 
GN⁺ 2025-06-02
Bình luận trên Hacker News
  • Một lời nhắn gửi tới các lập trình viên trẻ: đó mới chính là ý nghĩa của từ “hacker” trong “Hacker News”; bài viết này là ví dụ điển hình phân tích dễ hiểu theo từng bước về một hành trình hacker, nếu muốn xem thêm các trường hợp tương tự thì có thể tham khảo Hack-a-day; tác giả trông như một người rất tò mò và có nền tảng kiến thức cực kỳ vững; về bản chất đây là quá trình tra cứu datasheet của chip, tháo linh kiện mà không gây hư hại, nếu là bộ nhớ thì nối lại bằng dây, ứng biến và thử-sai; lần sau cũng có thể cân nhắc dùng camera lỗ kim khi khoan lỗ nông để tránh để lại dấu vết phá hoại; nếu tác giả còn vượt qua được cả bước kiểm tra chống can thiệp và thử cho thiết bị hoạt động bình thường thì đã còn thú vị hơn nữa

    • Giải thích rằng thuật ngữ hacker không chỉ giới hạn trong bảo mật máy tính mà còn có ý nghĩa rộng hơn nhiều cùng một định nghĩa mang tính triết lý; trích dẫn Jargon File do Guy Steele và những người khác tổng hợp để giới thiệu định nghĩa của hacker, chẳng hạn như “người thích học chi tiết của các hệ thống lập trình và mở rộng giới hạn của chúng”, “người say mê bản thân việc lập trình”, và cả “chuyên gia rất giỏi ở một chương trình cụ thể”; suy đoán rằng có lẽ PG, người sáng lập Hacker News, cũng đặt tên với định nghĩa rộng này trong đầu; bổ sung rằng khi nói về lịch sử của thuật ngữ hacker thì cũng nên nhắc tới The UNIX-HATERS Handbook

    • Hoàn toàn đồng cảm với câu đầu tiên, ngày nay mà lại có thêm một LLM wrapper nữa thì thật sự thấy ngán ngẩm

    • Quan điểm cho rằng việc trang này xuất thân từ một vườn ươm startup VC không có nghĩa là nó nói về hacking theo nghĩa bảo mật; có lẽ nó gần với kiểu hacking của startup là “move fast and break things”, tức phong cách tung code thật nhanh để phá vỡ trở ngại

    • Đã lurk trong thời gian dài, chỉ gần đây mới tạo tài khoản để bắt đầu bình luận, và khen rằng chính những bài đăng nổi bật về thông tin và khả năng thực thi như thế này mới thể hiện tinh thần ‘hacker’ của Hacker News

    • Thú nhận rằng đây là lần đầu tiên bấm nút upvote cho bài viết vì nó thực sự nói về hacking; bình thường chỉ upvote bình luận, nhưng bài này là ngoại lệ

  • Giới thiệu rằng chỉ với đầu đọc thẻ USB giá 2 USD là có thể mô phỏng giao dịch thẻ tín dụng/thẻ ghi nợ giả; mọi đặc tả và giao thức tuy đồ sộ nhưng đều công khai nên chỉ cần đọc tài liệu là có thể triển khai; nhưng để được phê duyệt giao dịch thực tế thì phải gửi dữ liệu tới ngân hàng qua Internet, và nếu làm vậy thì nhà chức trách (ví dụ FBI) sẽ lập tức phải vào cuộc; bản thân đầu đọc thẻ gần như không có cơ chế bảo vệ nào cả (đa số chạy Linux và dùng mật khẩu yếu), và tính an toàn đến từ hợp đồng cùng quy định giữa cửa hàng và ngân hàng

    • Phản bác nhận định rằng đầu đọc thẻ “không có cơ chế bảo vệ”; trên thực tế chỉ có thể chạy binary đã ký, hệ thống file thực thi là chỉ đọc, hệ thống file dữ liệu cũng có cờ noexec, đăng nhập root bị vô hiệu hóa, busybox bị cắt giảm chức năng, khóa được nạp từ vùng bảo mật lúc khởi động, việc cài master key cũng chỉ có thể thực hiện tại nhà máy, quá trình boot tự thân cũng rất an toàn, và khi phát hiện bị can thiệp thì chính con chip sẽ tự xóa trắng; chia sẻ kinh nghiệm rằng các thiết bị giá rẻ không được chứng nhận có thể gần như không có bảo mật, nhưng với tư cách người từng làm phát triển EMV thì các terminal thực tế gần như bị khóa kín hoàn toàn

    • Thừa nhận phần “quy định giữa cửa hàng và ngân hàng là lớp bảo mật duy nhất” là chính xác, vì vậy các thuyết âm mưu cho rằng người ta có thể dùng đầu đọc cầm tay để trộm tiền từ thẻ không tiếp xúc rất khó thực hiện trong thực tế; ngay cả nếu tạo được giao dịch thì do các bước tiếp theo và chuẩn bị từ trước, việc rút tiền ra an toàn gần như là bất khả thi; đặc biệt hiện nay còn có thông báo đẩy giao dịch nên khả năng hành vi phạm tội bị lộ là rất cao

    • Cho rằng điều đáng lo hơn là đầu đọc thẻ bị hack tại chỗ để đọc thông tin CC đã được cache hoặc cài malware kiểu chặn bắt, và đó là lý do nghiên cứu trong lĩnh vực này quan trọng

    • Giải thích rằng nội dung nói giao dịch phải được gửi tới ngân hàng qua Internet mới được phê duyệt là không đúng sự thật, vì ngân hàng không hề có Open API xử lý giao dịch thẻ trên Internet

    • Không đồng ý với nhận định rằng bảo mật của đầu đọc thẻ yếu, và giải thích rằng terminal tại cửa hàng thực tế có phần cứng bảo mật để lưu an toàn các khóa của ngân hàng và mạng thanh toán; đồng thời nói thêm rằng nếu các khóa đó bị lộ thì có thể giả mạo giao dịch hợp pháp

  • Chia sẻ kinh nghiệm đã mua và sử dụng 36 đầu đọc Stripe M2 thì có tới 7 cái hỏng: 2 cái pin không sạc được, 1 cái không quét được NFC, 4 cái chết với lỗi “tampered”; nhìn bề ngoài thì tỷ lệ lỗi có vẻ rất nghiêm trọng nhưng cũng cần xét thêm bối cảnh như số ngày sử dụng và tuổi đời thiết bị; điều khiến họ thấy nghiêm trọng hơn là trong tổng cộng chỉ 9 ngày sử dụng thực tế với các đầu đọc 1–3 năm tuổi mà đã có tới 7 cái hỏng; khi di chuyển thì mỗi cái đều được bảo quản cẩn thận bằng hộp cứng và lớp foam chèn nên cũng không phải do cất giữ kém; dù vậy Stripe M2 vẫn là lựa chọn dùng được nhất nên họ đành tiếp tục sử dụng; cũng nói thêm rằng công ty phụ trách thanh toán cho các lễ hội nên mới có bối cảnh phải dùng số lượng lớn trong thời gian ngắn

    • Khuyên rằng trước sự kiện tiếp theo nên đảm bảo cất giữ chúng trong trạng thái sạc đầy, vì đa số pin không thích bị để lâu ở mức sạc thấp, và tính năng phát hiện can thiệp cũng có thể cần pin ở trạng thái bình thường để hoạt động
  • Hình dung rằng nếu cơ chế chống can thiệp vật lý được kích hoạt thì có thể root shell sẽ mở ra, tức hoặc là hệ thống chuyển sang chế độ bảo mật với mọi khóa mã hóa cần thiết, hoặc là mở root shell để phục vụ debug/phân tích lỗi; nhưng trong trường hợp đó thì mong là các khóa riêng tư quan trọng đã bị xóa tự động

    • Người này cũng nói họ bắt đầu tò mò liệu có thể flash khóa mới qua root shell để tái sử dụng hay không; nếu terminal sắp bị loại bỏ thì việc kiếm hàng cũ có lẽ cũng không quá khó
  • Trích dẫn từ bài gốc rằng “dù root shell mở ra thì dữ liệu thẻ vẫn không gặp nguy hiểm”, rồi giới thiệu đây là tài liệu rất đáng đọc cho những người thiết kế bảo mật

    • Cho rằng nếu có thể truy cập vật lý vào terminal và còn có cả quyền root mà vẫn nói không thể đọc số thẻ thì thật sự rất khó tin; nhìn một cách lạnh lùng thì trong bảo mật, truy cập vật lý và truy cập root gần như đồng nghĩa với đã hack thành công
  • Ý kiến cho rằng Linux (đã bị can thiệp) là thành phần quyết định sẽ nạp “compromised mode” code hay hệ thống bảo mật mp1; ngay cả khi bản thân bootloader an toàn thì ý nghĩa của nó còn phụ thuộc vào môi trường mà nó thực thi; co-processor có thể đóng vai trò như Secure Enclave, nhưng nếu Linux có cấu trúc cho phép nạp bootloader riêng thì đó có thể là một vấn đề bảo mật rất nghiêm trọng

    • Phản bác rằng không thể nạp bootloader riêng; họ đã trực tiếp can thiệp rồi thử chỉnh bootloader nhưng hệ thống không boot bình thường, nên suy đoán có một boot ROM thứ ba đứng ra xác minh; đồng thời bổ sung rằng Linux luôn nạp cả loadercodemp1.img bất kể trạng thái can thiệp, còn việc rẽ nhánh theo trạng thái tamper được thiết kế diễn ra bên trong loadercode đã được bảo vệ tính toàn vẹn
  • Khuyên rằng nếu là người mới thì nên thử với terminal thẻ tín dụng hiện đại chạy Android trước, vì nhập PIN bằng màn hình cảm ứng nghe còn thú vị hơn

    • Giải thích rằng bộ điều khiển cảm ứng thường được nối với một MUX do secure processor điều khiển, và khi nhập thông tin bảo mật thì dữ liệu cảm ứng sẽ được chuyển thẳng tới secure processor mà hệ điều hành họ Android không can dự

    • Nhấn mạnh rằng dù hiển thị trên touchpad thì dữ liệu PIN vẫn do firmware chạy trong trust zone quản lý và ở trạng thái mã hóa; các ứng dụng nằm ở giữa sẽ không thể nhìn thấy PIN

    • Dự đoán rằng ngay cả khi hack được kiểu terminal Android này, nếu thiết kế bảo mật vẫn giống vậy thì chính thẻ cũng sẽ thực hiện mã hóa phức tạp nên thực tế sẽ không có thông tin hữu dụng; kiểu tấn công này chỉ hiệu quả khi chỉ còn đầu đọc thẻ tín dụng, mà những terminal như vậy đối với người dùng đã là tín hiệu cảnh báo về skimmer

    • Nhắc ngắn gọn một cách thích thú rằng các terminal Android dùng ở Ấn Độ vẫn còn chạy Android Oreo (hết hỗ trợ từ tháng 1 năm 2021)

  • Phản ứng rằng thật khó hiểu khi vừa bắt đầu phân tích bên trong terminal đã lập tức mở máy và kích hoạt chế độ can thiệp; suy đoán rằng có lẽ tác giả không biết đa số đầu đọc đều có phát hiện can thiệp; việc thử nghiệm trong chế độ tamper có thể làm giảm ý nghĩa, và cũng tò mò liệu sau khi kích hoạt tamper thì có phải shell được mở ra để phục vụ reset hay không; cuối cùng khuyên nên nghĩ lại xem việc mở máy ngay từ đầu có thực sự là bước đi hiển nhiên hay không

    • Giải thích rằng ban đầu họ mở ra vì nghĩ cần nắm thông tin cơ bản về phần cứng, SoC, giao diện, flash v.v.; nếu tiếp cận mà không điều tra trước thì có cảm giác như bắt đầu trong bóng tối; giờ nghĩ lại thì có thể chỉ cần động nhẹ vào đầu nối debug là đã xong; và bổ sung rằng ở chiếc terminal nguyên vẹn thứ hai họ cũng đã thành công lấy được shell
  • Khen rằng thật đáng ngạc nhiên khi dù có chống can thiệp rất kỹ thì vẫn còn nhiều thứ để lách qua và nhiều dấu vết thú vị để khai thác; đánh giá phần bảo mật được thiết kế theo hướng tê liệt an toàn là đúng đắn

    • Nhấn mạnh rằng bộ xử lý được tăng cường (mp1) vẫn ở trạng thái không thể xâm nhập; thực tế chỉ truyền chuỗi ký tự vào binary display_tool để trao đổi message với bộ xử lý kia; đầu đọc thẻ, keypad v.v. đều không thể được truy cập trực tiếp từ Linux, mà do bộ xử lý mp1 tách biệt hoàn toàn phụ trách các phần “bảo mật” như thẻ, nhập PIN, hiển thị màn hình; còn Linux mp2 chỉ xử lý mạng, cập nhật và business logic

    • Nêu ra kịch bản rủi ro rằng phía Linux có thể đóng vai trò phát hiện việc xử lý sự kiện tamper, nhưng nếu chỉ sau khi phát hiện đầy đủ tamper mới có thể xóa khóa bảo mật thì việc giành root shell từ trước rồi tìm cách lách tamper vẫn có thể xảy ra và sẽ rất nguy hiểm

  • Chia sẻ rằng loại terminal này hiện diện khắp châu Âu; tuy không chắc về Thụy Sĩ nhưng ở nhiều nơi tại châu Âu mà người này biết thì việc mang thẻ tín dụng lại khá hiếm; thay vào đó, vì POS terminal có thể đọc đủ loại thẻ nên gọi nó là “hệ thống POS” có lẽ phù hợp hơn; dù sao thì bài viết vẫn rất thú vị

    • Phàn nàn rằng họ thật sự ghét phải mang nhiều thẻ trong ví; ví đã gần như nổ tung vì đủ thứ lý do chứ không chỉ thanh toán, nên cũng chẳng muốn nhét thêm vào điện thoại hay smartwatch; họ cho rằng nếu mất thiết bị thì rò rỉ dữ liệu cá nhân sẽ quá nghiêm trọng; đó là sở thích cá nhân, họ thích đồng hồ cơ, và vì những lý do đó nên không dùng các cách tối giản hóa thẻ