Vừa mới đây, Justin Angel - một kĩ sư của Nokia và là "người cũ" của chính Microsoft, đã đăng tải 1 bài viết trên blog "hướng dẫn" cách thức để qua mặt một số game trên Windows 8, biến game chơi thử (trial) thành game chơi không bị giới hạn (full), tắt hết các quảng cáo phiền nhiễu trong game miễn phí (cần câu cơm của lập trình viên), mua vật phẩm trong game mà không cần phải bỏ tiền...Blog của Justin Angel không lâu sau đã bị "quá tải" với lượng truy cập khổng lồ cho thấy "dân tình" rất thèm khát đồ chùa. Nhưng nó cũng dấy lên những quan ngại không nhỏ cho cả Microsoft lẫn tương lai của Windows 8 bởi rõ ràng, nếu lập trình viên không thể kiếm được tiền từ ứng dụng (do đã bị hack) thì sẽ chẳng còn ai viết app cho Windows 8 nữa.
Ứng dụng trên Windows 8 đã bị hack như thế nào?
Khi Angel "trình diễn" quá trình hack các game trên Windows Store, giới lập trình viên có lẽ đã không quá ngạc nhiên bởi một vài kĩ thuật mà Angel nói tới không còn là vấn đề quá mới mẻ nữa. Các hacker trước đây cũng đã từng dùng các kĩ thuật này để hack ứng dụng ở các nền tảng khác. Đó là việc hacker can thiệp vào tập tin dữ liệu của ứng dụng sau đó chỉnh sửa các tập tin XML để thực hiện các thay đổi như xóa quảng cáo, biến ứng dụng dùng thử thành bản full... Trong trường hợp của Windows Store, một ví dụ là trò Ultraviolet Dawn - một trò chơi cho phép dùng tiền mua bán vật phẩm trong game. Người chơi sẽ dùng tiền tệ để mua các vật phẩm cao cấp. Giá của các vật phẩm cũng như các đồ nâng cấp khác đều được lưu trữ trong tập tin dữ liệu - một phần trong toàn bộ hệ thống tập tin của trò chơi đó. Các tập tin dữ liệu này có thể bị khai thác để chỉnh sửa và hacker có thể không cần bỏ ra xu tiền thật nào vẫn có thể nâng cấp vật phẩm cho mình.
Justin Angel chỉnh sửa 1 tập tin để thay đổi số gold trong game.
Điều đáng quan ngại là hầu hết các ứng dụng trên Windows Store đều dùng ngôn ngữ XAML để viết giao diện (XAML là dạng biến thể của ngôn ngữ XML của gã khổng lồ phần mềm). Các tập tin XAML được lưu trữ dưới dạng văn bản thuần (plain text), và giống như trường hợp của trò Ultraviolet Dawn ở trên, hacker có thể chỉnh sửa các tập tin này bằng Notepad một cách đơn giản. Việc chỉnh sửa tập tin này cũng sẽ giúp loại bỏ các quảng cáo trong game.
Điều khiến người ta ngạc hiên là vì sao các ứng dụng trong Windows Store có thể bị bẻ khóa dễ dàng như vậy? Để ngăn chặn side-loading (kĩ thuật cho phép cài ứng dụng vào máy từ nguồn ngoài), tất cả các ứng dụng trong Windows Store phải có dấu chứng nhận của Microsoft. Các thành phần của ứng dụng khi có chứng nhận này sẽ không thể dễ dàng bị bẻ khóa bởi Notepad như trên bởi nếu hacker can thiệp vào tập tin, ứng dụng sẽ bị mất tính hợp pháp. Tuy nhiên, việc Microsoft đã không áp dụng cơ chế này cho các tập tin dữ liệu XML và đó là điều khá khó hiểu. Bởi việc lưu trữ con dấu chứng nhận cho ứng dụng và xác thực các con dấu này trước khi khởi chạy nó không phải là quá khó khăn. Trước đây trong các phiên bản Beta của Windows 8, chính Angel cũng đã nêu ra các vấn đề bảo mật này với các các ngôn ngữ lập trình HTML hay JavaScript, Microsoft đã từng có động thái này.
Với trường hợp hacker có thể khai thác để chỉnh sửa tập tin như với trò Ultraviolet Dawn ở trên, bản thân lập trình viên cũng có thể tạo ra các bước kiểm tra, tuy nhiên, với ngôn ngữ lập trình XAML, công việc này sẽ khó thực hiện hơn do XAML là ngôn ngữ chủ yếu của các thư viện hệ thống và 1 giải pháp tương tự từ Microsoft là đơn giản và toàn vẹn hơn rất nhiều.
Angel cũng trình diễn 1 phương pháp hack tương tự nhưng có phần phức tạp hơn trong trò Soulcraft. Giống như Ultraviolet Dawn, Soulcraft cũng cho phép dùng tiền mua vật phẩm. Người chơi phải bỏ tiền thật ra để mua tiền tệ trong game. Ứng dụng Soulcraft sẽ lưu trữ profile của người chơi trong ổ cứng máy tính. Profile này sẽ bao gồm lượng tiền tệ mà người chơi đang sở hữu và sẽ được mã hóa nên việc chỉnh sửa thông thường bằng Notepad như trên không áp dụng được. Tuy nhiên, về bản chất thì Soulcraft cũng bắt buộc phải lưu trữ tất tần tật mọi dữ liệu của game, trong đó bao gồm cả dữ liệu để giải mã profile người dùng. Trong ví dụ của mình, Angel cho thấy rằng việc giải mã các profile này là khả thi và có thể thực hiện dễ dàng.
Thách thức và nhiệm vụ của Microsoft
Như đã nói, cách thức hack game hay các ứng dụng khác trên Windows 8 không có gì là quá mới mẻ. Nó đã diễn ra từ lâu. Bất kì 1 ứng dụng nào lưu trữ profile trên ổ cứng máy tính đều có nguy cơ bị qua mặt. Việc mã hóa không có nhiều tác dụng. Bản thân ứng dụng bắt buộc phải lưu trữ dữ liệu giải mã trên máy và việc tìm cách giải mã chỉ là vấn đề thời gian mà thôi. Bản thân Microsoft cũng có thể cung cấp các phương thức bảo mật tốt hơn, như cung cấp 1 bộ nhớ lưu trữ riêng và bộ nhớ này sẽ được mã hóa bởi HĐH thay vì mã hóa bởi bản thân ứng dụng, khiến hacker khó thâm nhập hơn. Tuy nhiên, một khi hacker tìm ra được cách để lấy key giải mã, phương pháp này cũng sẽ bị khuất phục.
Những giải pháp khác đã được tính tới như lưu trữ profile người dùng và các tập tin dữ liệu của ứng dụng lên server. Điều này sẽ khiến hacker không thể nào can thiệp được vào dữ liệu, tuy nhiên, nhược điểm của nó là gây nên khó khăn cho lập trình viên bởi giờ đây họ lại phải tốn chi phí để thiết lập server cho nhiệm vụ này.
Có một số giải pháp nho nhỏ mà Microsoft có thể, và nên áp dụng. Đó là việc ngăn chặn việc chỉnh sửa các tập tin XAML và các tập tin khác liên quan tới dữ liệu của ứng dụng. Điều này có thể ngăn chặn các thủ đoạn hack để xóa quảng cáo trong game ("cần câu cơm" chủ yếu của các ứng dụng miễn phí). Microsoft cũng nên cung cấp cho lập trình viên 1 giải pháp lưu trữ tốt hơn để họ có thể lưu trữ các tập tin nhạy cảm trên, giảm bớt các nguy cơ bị hacker qua mặt. Bản thân lập trình viên cũng nên áp dụng các biện pháp phòng hộ tốt hơn. Nhà phát triển Soulcraft nên lưu trữ profile cũng như tiền tệ mà người chơi sở hữu trên một server nào đó thay vì lưu trữ trong PC người dùng. Tuy nhiên, có một thách thức không nhỏ cho Microsoft lẫn lập trình viên, đó là các kĩ thuật tấn công mà Angel miêu tả là những cách thức tấn công truyền thống trên PC. Windows là một nền tảng mở và nó cho phép người dùng chạy bất kì chương trình gì họ muốn, từ ứng dụng thông thường cho tới các loại ứng dụng ảo hóa, trình sửa lỗi (debugger) vv....là các loại ứng dụng cho phép thực hiện các kĩ thuật đảo ngược, chỉnh sửa 1 cách dễ dàng.
Những kĩ thuật tấn công này thường ít phổ biến hơn trên các nền tảng di động, đặc biệt là iOS. Đó là bởi các ứng dụng mà hacker có thể dùng để thực hiện các kĩ thuật đảo ngược, chỉnh sửa trên Windows, sẽ không dễ dàng chạy được trên thiết bị iOS. Theo mặc định, tất cả ứng dụng iOS được chạy trong môi trường sandbox và chúng bị cô lập với các ứng dụng khác, bởi thế, việc can thiệp vào 1 app nào đó là khó thực hiện hơn nhiều. Tuy nhiên, không phải cứ là iOS thì sẽ tránh được bị hacker tấn công. Với các thiết bị iOS đã bị jailbreak, hacker sẽ chạy được các ứng dụng hack ứng dụng như trên Windows. Ứng dụng trên iOS cũng đã được mã hóa và có dấu xác thực giống như của Microsoft, tuy nhiên, việc jailbreak đã loại bỏ con dấu cũng như giải mã các tập tin đã được mã hóa này. Các ứng dụng trên Android sau khi được root cũng có thể áp dụng phương pháp tương tự như trên iOS.
Microsoft, Apple, và Google - tất cả đều có các hệ thống giúp xác minh tình trạng bản quyền của từng ứng dụng một, ngăn chặn các phương thức can thiệp ở trên. Tuy nhiên, phương pháp bảo vệ này cũng tồn tại những hạn chế, bởi 1 khi hacker có được 1 ứng dụng để thử nghiệm, sớm muộn gì phương pháp kiểm tra bản quyền này cũng sẽ được tìm ra và rồi được đem đi áp dụng cho các ứng dụng khác.
Windows 8 còn khá non trẻ nhưng một khi đã phổ biến, hacker sẽ áp dụng nhiều cách thức để hack các ứng dụng. Đó là một lời khuyến cáo cho các nhà phát triển. Một bộ phận developer có thể chuyển sang suy nghĩ "từ bỏ" Windows, tập trung viết ứng dụng cho các nền tảng khác, thế nhưng, việc bảo mật cho ứng dụng suy cho cùng là trách nhiệm của cả nhà phát triển HĐH lẫn lập trình viên. Đồng thời, Windows không phải là nền tảng duy nhất chịu các cuộc tấn công này mà trường hợp của iOS và Android ở trên là một minh chứng cụ thể.
Tham khảo: Arstechnica