Microsoft và đội ngũ VirusTotal của Chronicle đã hợp tác với nhau để phát triển các công cụ giúp cảnh báo nhanh hơn, chính xác hơn đối với các tệp MSI đã bị sửa đổi để biến thành các kho lưu trữ mã Java độc hại.
Khi các nhà phát triển tạo ra một phần mềm, họ thường ký chúng (sign) bằng cách sử dụng các chữ ký kĩ thuật số (digital code-signing) để xác nhận rằng mình mới người đã tạo phần mềm này. Một lợi ích khác là tất cả các sửa đổi đối với Windows PE đã được ký (.exe) sẽ khiến chữ ký trở nên không hợp lệ, điều này giúp cung cấp thêm một lớp bảo mật để đảm bảo rằng chương trình đó không bị giả mạo.
Mặc dù các nhà phát triển cũng có thể ký một tệp Microsoft Installer (MSI) bằng chứng chỉ chữ ký kĩ thuật số, nhưng trong trường hợp này các chữ ký lại không thể đảm bảo được rằng liệu tệp MSI đó đã bị giả mạo hay chưa. Điều này là do nội dung của tệp MSI đã ký hoàn toàn có thể sửa đổi được, trong khi chữ ký sẽ vẫn còn hiệu lực.
Vấn đề trên góp phần gây ra sự cố vì nó có thể cho phép kẻ tấn công sử dụng các tệp MSI làm cơ chế lưu trữ cho các chương trình độc hại, trong khi các tệp đó vẫn được hiển thị như đã được ký. Ngoài ra, một số phần mềm chống virus dựa vào chữ ký điện tử để giúp xác định xem một tệp có độc hại hay không, thế nên điều này cũng có thể cho phép các tệp bị giả mạo độc hại tránh được việc bị phát hiện.
Vấn đề với phương pháp phân tán phần mềm độc hại kiểu này là một chương trình khác vẫn sẽ được yêu cầu trích xuất mã độc từ tệp MSI và thực thi nó. Tuy nhiên, theo bài đăng blog mới của VirusTotal, tất cả điều này sẽ thay đổi nếu một tệp JAR Java độc hại được thêm vào tệp MSI đã ký.
Các tệp zip được đọc từ phía cuối
Các tệp lưu trữ Java (JAR) chỉ đơn giản là các tệp Zip chứa các thành phần, mã và bảng kê khai cần thiết cho phép chúng được thực thi bởi trình khởi chạy Java. Theo đặc điểm của tệp Zip, kho lưu trữ Zip hợp lệ sẽ phải kết thúc bằng "phần cuối của bản ghi thư mục trung tâm", cho biết đâu là phần cuối của tệp ZIP và chứa các tiêu đề cho mỗi tệp được lưu trữ trong đó.
VirusTotal giải thích rằng bởi các tệp JAR chỉ đơn giản là các tệp Zip, do đó, khi Java thực thi một tệp, nó sẽ đọc từ cuối tệp đến đầu tệp lưu trữ và bỏ qua phần còn lại của tệp MSI. Điều này cho phép kẻ tấn công phân tán các tệp MSI đã ký bằng các tệp JAR độc hại được nối thêm, đổi tên chúng thành tệp JAR và sau đó thực thi chúng bằng trình khởi chạy javaw.exe của Java.
“Vấn đề nằm ở chỗ định dạng tệp JAR dựa trên ZIP để lưu trữ các thành phần và tài nguyên khác nhau, và loại ZIP này được xác định chính xác bởi sự hiện diện của phần cuối của bản ghi thư mục trung tâm (nằm ở cuối của kho lưu trữ) để cho phép dễ dàng nối thêm các tệp mới. Khi Java mở tệp JAR, nó sẽ nhìn vào cuối thay vì đầu tệp, do đó, tệp JAR sẽ được thực thi độc lập với dữ liệu ở đầu tệp. Ngoài ra, trên các hệ thống Microsoft Windows, chương trình cài đặt của Java Runtime Environment sẽ đăng ký liên kết mặc định cho các tệp JAR để khi bạn nhấp đúp vào tệp JAR trên máy tính, hệ thống sẽ tự động chạy tệp đó với "javaw -jar"".
Để minh họa loại tệp MSI độc hại này, VirusTotal đã đưa ra một mẫu được phát hiện trong thực tế sử dụng phương pháp trên. Chronicle cũng đã tiết lộ rằng các nhà cung cấp đang hoạt động trên VirusTotal đã phát hiện ra các loại mẫu này, gọi chúng là "Jacksbot" và chúng cực kỳ hiếm.
"Cho đến nay, kỹ thuật này đã được chứng minh là cực kỳ hiếm. Mặc dù bạn có thể nối bất cứ thứ gì vào cuối các tệp MSI, nhưng trong trường hợp cụ thể này, chỉ có một tệp JAR sẽ thực thi theo cách như được mô tả”, đại diện của Chronicle cho biết.
VirusTotal hợp tác với Microsoft
Hai chuyên gia bảo mật Mark Russinovich và Mark Cook của Microsoft đã tiến hành cập nhật công cụ Sigcheck của họ để phát hiện xem liệu tệp MSI đã ký có bị giả mạo hay không. Tính năng mới này có thể được tìm thấy trong Sigcheck 2.70 và đang được VirusTotal sử dụng để nhận diện xem các tệp MSI đã ký có bị sửa đổi khi chúng được tải lên dịch vụ của họ hay không.
Nếu Sigcheck phát hiện ra một tệp MSI đã ký bị sửa đổi, nó sẽ hiển thị cảnh báo có nội dung Signed but the filesize is invalid (the file is too large), tạm dịch: Tệp này đã được ký nhưng kích thước tệp không hợp lệ (tệp quá lớn). Bạn có thể tham khảo hình minh họa bên dưới.
Phát hiện mới này cũng sẽ được hiển thị trong command line như hình dưới đây:
Trung tâm phản ứng bảo mật của Microsoft (Microsoft Security Response Center) cũng đã xem xét các loại tệp độc hại này và tuyên bố rằng chúng sẽ hiển thị như đã ký trong các phiên bản Windows 10 và Java mới nhất (đã được cập nhật). Và Microsoft đã quyết định sẽ không khắc phục sự cố này trong các phiên bản Windows hiện tại, ít nhất là vào thời điểm này.
"Vectơ tấn công này đã được xác minh trong các phiên bản mới nhất của Windows 10 và Java có sẵn tại thời điểm hiện tại (Windows 10 Phiên bản 1809 và Java SE Runtime Environment 8 Update 191). Microsoft đã quyết định rằng họ sẽ không khắc phục vấn đề này trên các phiên bản hiện tại của Windows”.
Xem thêm:
- Bản dựng Windows 10 đầu tiên cho các máy tính có thể gập lại đã xuất hiện trên các máy chủ Microsoft
- Microsoft tung video nhắc ngày "khai tử" Windows 7 và khuyên người dùng nên nâng cấp lên Windows 10
- Góc làm giàu: Một công ty treo giải 1 triệu USD cho ai hack được WhatsApp và iMessage
- Hacker khoan thủng bảo mật 2 yếu tố chỉ bằng những cuộc tấn công phishing tự động