Tóm tắt nhanh
- Hai nhà nghiên cứu Shubham Shah và Sam Curry chiếm quyền chạy lệnh trên máy chủ đăng nhập ForgeRock của hai hãng ô tô (chưa được nêu tên) vào đầu năm 2026, từ đó tạo được phiên đăng nhập cho bất kỳ khách hàng nào trên các hệ thống bị ảnh hưởng.
- Điểm yếu nằm ở cách vận hành chứ không phải một lỗi mới trong phần mềm: bảng quản trị Apache Felix còn mở và còn mật khẩu mặc định admin:admin, còn tường lửa web bị qua mặt bằng một đường dẫn mã hóa đặc biệt.
- Khi đã vào được tài khoản, họ nhận cùng quyền với chủ xe trong ứng dụng: xem vị trí, mở khóa cửa, khởi động và tắt động cơ. Toàn bộ chuỗi chỉ được thử đầy đủ trên xe của chủ xe đồng ý, tại Mỹ.
- Hai hãng vá lỗi và đổi thông tin xác thực khoảng hai giờ sau khi nhận báo cáo. Vụ việc không có mã CVE.
Khi hai nhà nghiên cứu mở khóa được một chiếc xe thử, thứ họ phá không phải là khóa điện tử hay mạng CAN trong xe. Họ phá một máy chủ đăng nhập trên đám mây, nơi lưu tài khoản của toàn bộ khách hàng hai hãng, rồi dùng đúng lệnh “doors-unlock” mà ứng dụng chính hãng vẫn gửi mỗi khi chủ xe bấm nút. Shubham Shah và Sam Curry công bố chi tiết vào ngày 7/11/2026.
Bảng quản trị vẫn dùng mật khẩu admin:admin sau lớp tường lửa

Cả hai ứng dụng xe kết nối đều đăng nhập qua ForgeRock, nền tảng quản lý danh tính nay thuộc Ping Identity. Nền tảng này chạy thành hai phần: một phần điều phối các bước đăng nhập, phần còn lại là OpenIDM, nơi giữ hồ sơ khách hàng. OpenIDM đi kèm bảng điều khiển Apache Felix, và chính tài liệu hướng dẫn bảo mật của ForgeRock dặn nhà vận hành phải gỡ hoặc bảo vệ bảng này trước khi đưa vào chạy thật vì nó lưu mật khẩu riêng, tách khỏi phần còn lại của hệ thống.
Trên máy chủ của hai hãng, bảng điều khiển vẫn còn đó với đúng mật khẩu mặc định đã được ghi trong tài liệu: tên đăng nhập admin, mật khẩu admin. Sam Curry cho biết khi liệt kê, bảng này đang chạy Apache Felix 7.0.1 với 343 trong 361 bundle ở trạng thái hoạt động.
Tường lửa ứng dụng web (WAF) có chặn các đường dẫn quản trị quen thuộc như /system/console, và lặp lại yêu cầu còn khiến địa chỉ IP của nhóm nghiên cứu bị chặn. Nhưng lớp biên và phần mềm Java phía sau đọc cùng một địa chỉ theo hai cách khác nhau. Đường dẫn /static%2f..;/system%2fconsole;/bundles/.json bị WAF coi là yêu cầu tài nguyên tĩnh bình thường, trong khi máy chủ Jetty giải mã dấu gạch chéo, bỏ phần sau dấu chấm phẩy, rồi chuyển nó đến đúng bảng Felix. Thêm admin:admin vào tiêu đề xác thực là vào được.
Từ một đường dẫn “tĩnh” đến quyền chạy lệnh trên máy chủ lưu tài khoản khách
Trong bảng điều khiển, Shah tìm thấy cấu hình lịch tác vụ của OpenIDM. Lịch này cho phép gọi dịch vụ script với Groovy và chép mã nguồn thẳng vào cấu hình. Nhóm nghiên cứu lưu một đoạn mã dưới dạng lịch bị tắt, đọc lại từng trường, rồi mới bật để chạy một lần. Đoạn mã cài một servlet nhỏ vào tiến trình OpenIDM và dùng nó làm cửa nhận lệnh shell. Sau khi xong việc, họ xóa lịch để mã cài đặt không chạy lại.
Từ shell, họ đọc biến môi trường của tiến trình và lấy được cặp idm.username, idm.password, tức tài khoản quản trị nội bộ của OpenIDM. WAF vẫn chặn việc đọc thư mục khách hàng từ bên ngoài, nhưng lệnh curl chạy ngay trên máy chủ gọi vào localhost nên không đi qua WAF nữa. Đây là chỗ cho thấy giới hạn của tường lửa: nó chỉ cản được kẻ đứng ngoài, còn một khi có chỗ đứng bên trong thì toàn bộ lớp bảo vệ ngoại vi vô nghĩa.
Chuỗi tấn công còn lại khá thẳng. Nhóm đổi email và mật khẩu của một tài khoản thử, đăng nhập bằng ứng dụng như người dùng thật, nhận mã OTP gửi về hộp thư do họ kiểm soát, rồi đổi phiên đăng nhập lấy bộ token mà ứng dụng chính hãng dùng. Ứng dụng của một hãng cấu hình PKCE ở chế độ “plain” trong bước đổi mã. Có token và mã định danh khách hàng, họ gọi API xe để lấy danh sách xe, số khung và các lệnh được hỗ trợ. Lệnh mở khóa trên nhánh API mới chỉ là một tin nhắn JSON có trường command bằng “doors-unlock”; khởi động xe đổi thành “engine-start”.
Phần vật lý được kiểm chứng cẩn thận: Shah mở khóa, nổ máy, tắt máy rồi khóa lại chiếc xe thử khi chủ xe đứng ngay cạnh. Nhóm nhấn mạnh họ chỉ chạy toàn bộ chuỗi này với tài khoản và xe tại Mỹ, và trong lúc thử, API chấp nhận lệnh chưa đủ để kết luận xe đã thực hiện nên họ làm mới trạng thái sau từng lệnh.
Đổi mật khẩu rồi mà chủ xe vẫn không hay biết
Điều khiến vụ này đáng lo hơn một lỗ hổng đăng nhập thông thường là gần như không có dấu hiệu nào báo cho chủ xe. Việc đổi email và mật khẩu không làm phiên đang mở trên điện thoại chủ xe bị đăng xuất, nên phiên của nhóm nghiên cứu chạy song song mà chủ xe vẫn dùng ứng dụng bình thường. Token đẩy thông báo cũng do ứng dụng phía máy khách đăng ký, vì thế nhóm có thể gửi thông báo về điện thoại của mình thay cho điện thoại chủ xe. Sau bài thử, họ trả lại email gốc; mật khẩu cũ không phục hồi được vì họ chưa từng biết nó, nên chủ xe phải đặt mật khẩu mới.
Với kẻ xấu, đó là điều kiện lý tưởng: xe vẫn mở được trong khi chủ xe không nhận cảnh báo nào, và tài khoản vẫn đăng nhập bình thường.
Ở Úc, cửa vào là mã quản trị nằm sẵn trong ứng dụng
Shah công bố một cuộc tấn công thứ hai nhắm vào hệ thống của cùng các hãng tại Úc, với cách vào khác hẳn. Phân tích mã ứng dụng Android cho thấy lời gọi đến một tên miền telematics, trong đó có trang “admintool” với màn hình đăng nhập “TEST HARNESS” mở ra Internet, và một gói JavaScript lẽ ra phải được lược bỏ lại chứa toàn bộ logic phía backend cùng khóa API cứng. Gói này còn chứa thông tin đăng nhập quản trị cứng, nhiều khả năng dành cho môi trường thử nghiệm, và môi trường Úc còn cho phép bỏ qua bước xác thực đa yếu tố.
Kết hợp hai cuộc tấn công, nhóm cho biết họ có thể gửi lệnh mở khóa và nổ máy tới xe của các hãng này tại Úc, Mỹ và Canada. Bài viết về Úc không nêu ngày hệ thống tại đây được vá.
Không có CVE, nên không có bản vá nào để chờ
Đây không phải lỗi zero-day của ForgeRock. Hai hãng vận hành sai: để bảng quản trị chạm tới Internet, giữ mật khẩu mặc định đã được tài liệu hóa nhiều năm, và dựa vào WAF để che. Vì vậy không có mã CVE, cũng không có thông báo bảo mật của nhà cung cấp nào để các đội kỹ thuật theo dõi. Hai khuyến nghị cho đội đang chạy ForgeRock hay PingIDM là tìm bảng Felix tại /system/console rồi gỡ hoặc đổi mật khẩu, và đừng giao việc giấu trang quản trị cho quy tắc đường dẫn trên WAF.
Với người dùng xe tại Việt Nam, hai báo cáo chỉ nói về Mỹ, Úc và Canada và không nhắc thị trường Việt Nam, nên chưa có cơ sở để cho rằng xe bán ở đây bị ảnh hưởng. Nhưng cách tấn công cho thấy rủi ro nằm ở nơi người dùng không nhìn thấy: ứng dụng điều khiển xe tin tưởng hoàn toàn vào hệ thống danh tính của hãng, và nếu hệ thống đó sai cấu hình thì mật khẩu mạnh hay xác thực hai bước của từng chủ xe cũng không cứu được. Người mua xe kết nối nên coi tính năng mở khóa và nổ máy từ xa là một bề mặt tấn công thực sự, và hỏi hãng cách họ thu hồi phiên đăng nhập khi mật khẩu bị đổi.
Hai bản mô tả không cho biết có ai khác từng phát hiện hoặc khai thác đường vào này trước khi nó được đóng hay không. Điều duy nhất được xác nhận là hai hãng xử lý trong khoảng hai giờ kể từ lúc nhận báo cáo, và đó là con số đáng để các hãng xe khác đối chiếu với thời gian xử lý lỗ hổng của chính họ.
Nguồn tham khảo: Sam Curry — Hacking Two Automakers: ForgeRock Path Confusion, RCE, and Remote Vehicle Access; The Hacker News; Tom’s Hardware








