6 cách bảo vệ game khỏi Hacker, Cracker và Copycatter

Nội dung bài chia sẻ hôm nay bạn đọc cùng Appota News xem xét 6 chiến lược đáng được quan tâm đối với môi trường mobile. Các nhà phát triển game hoàn toàn có thể ứng phó được với những vấn đề như đánh cắp thông tin, vi phạm bản quyền (ví dụ như vụ việc can thiệp vào hệ thống của máy PS4 gần đây, máy chủ MMORPG bất hợp pháp hay đánh cắp thông tin máy chủ, vv)

Trước khi bắt đầu Appota New cần nhấn mạnh tới độc giả 2 điều:

  • Những chiến lược bảo mật là đáng tin cậy chỉ khi chúng được triển khai trước khi game của bạn được tung ra thị trường. Điều này là rất quan trọng và cần luôn luôn được ghi nhớ.
  • Không có bất cứ giải pháp nào là an toàn tuyệt đối, đặc biệt là các nền tảng ngày nay luôn được cải tiến không ngừng và luôn có rất nhiều kẻ muốn đánh cắp thông tin game của bạn vì những mục đích khác nhau.

1. Ngăn ngừa sự xâm nhập vào bộ nhớ

Case:

Công cụ xâm nhập vào bộ nhớ của tựa game Angry Birds, nó cho phép xác định và thay đổi giá trị tốc độ của game​

Những tựa game mobile Free-to-play chủ yếu kiếm lợi nhuận bằng cách bán các item thông qua các thanh toán bên trong ứng dụng, những thứ sẽ giúp người chơi vượt qua các chướng ngại vật nhanh hơn, hiệu suất tốt hơn, v.v… Xâm nhập vào bộ nhớ có thể cô lập nơi mà các giá trị item đó được lưu trữ và thay đổi chúng, hoặc cho phép các hacker truy cập vào hệ thống và tùy chỉnh lượng gold/cash không giới hạn bằng cách sử dụng cùng một phương pháp.

Dưới đây là cách thức thực hiện:

Trong hầu hết các game, khi một người chơi thực hiện một hành động thì bộ ghi của hành động và các kết quả mà hành động đó tạo ra sẽ được ghi lại trong local memory (bộ nhớ cục bộ – trên thiết bị mobile trong trường hợp này) sau đó tự động xử lý trước khi được gửi đến máy chủ. Chúng được truyền tải dưới dạng batch (các câu lệnh xử lý tự động) vì việc tải lên mỗi và mọi hành động cùng một lúc sẽ dẫn đến tình trạng lag và làm gián đoạn trải nghiệm chơi game. Tuy nhiên, điều này lại cho phép các công cụ xâm nhập vào bộ nhớ nhắm mục tiêu vào các điểm truyền tải batch và đính kèm một công cụ sửa đổi bộ nhớ ngoài vào bên trong bộ nhớ của ứng dụng, do đó, các hacker có thể sửa đổi những hành động trong game – bao gồm quyền truy cập vào các item thanh toán trong ứng dụng. (Một số các công cụ xâm nhập vào bộ nhớ có thể hoạt động được bất kể game đã được decompile (dịch ngược) hay chưa được decompile, vì vậy điều quan trọng là phải tạo ra hoặc sử dụng một giải pháp của bên thứ ba toàn diện để bảo vệ game tránh khỏi sự nguy hại trên)

6-cach-bao-ve-game-khoi-hacker-cracker-va-copycatter-2

Phát hiện và ngăn chặn bất kỳ sự sửa đổi bộ nhớ ngoài có thể giúp ngăn ngừa loại đánh cắp thông tin này xảy ra. Điều này có thể tự phát triển, nếu nhà phát triển tự tin vào khả năng của họ trong việc tạo ra những biện pháp ngăn ngừa/bảo vệ sự xâm nhập vào bộ nhớ, nếu không, các giải pháp thương mại luôn có sẵn trên thị trường để có thể được tích hợp vào game. Lời khuyên mang tính cá nhân của tôi là hãy thực hiện những nghiên cứu của bạn và chọn ra một giải pháp thương mại; chương trình xâm nhập vào bộ nhớ luôn luôn được phát triển và nâng cấp và các dịch vụ thương mại có thể đầu tư nhiều nguồn lực để xử lý những vấn đề này tốt hơn là một nhà phát triển game tầm trung.

Dự kiến thời gian thực hiện:

Phụ thuộc vào việc các giải pháp được cung cấp thông qua binary injection (dữ liệu đầu nhị phân) (có thể mất vài phút), một SDK integration (điều này có thể mất từ vài ngày đến vài tuần), v.v…

2. Ngăn ngừa dịch ngược mã nguồn

Ví dụ về dịch ngược trước và sau

Mã nguồn được viết theo văn bản tiếng Anh thì dễ đọc, nhưng khi văn bản đó được thay thế bằng các ký hiệu và số, lại là một vấn đề hoàn toàn khác. Obfuscated code (nôm na là kỹ thuật làm rối code) sẽ làm chậm khả năng để hacker có thể hiểu rõ được mã nguồn, hãy chỉ để một mình bạn làm chủ những thứ bên trong game của bạn.

6-cach-bao-ve-game-khoi-hacker-cracker-va-copycatter-3

Thời gian dự kiến thực hiện:

Một vài phút đến hơn một giờ, tùy thuộc vào mức độ phức tạp của code của bạn. Ví dụ, tại Second Wave Games, chúng tôi chọn sử dụng các công cụobfuscator/packer được cung cấp bởi Google cho các tựa game Android của chúng tôi. Chúng tôi mất khoảng một giờ để đọc qua các tài liệu và bài ​​viết liên quan đến Stack Overflow, sau đó dành thêm một giờ để thực hiện.

3. Mã hóa các key theo dạng động chứ không phải là tĩnh

Số lần mà chúng tôi tìm thấy các key code thủ công và tĩnh trong một mã nguồn của game trong plain text (Văn bản thuần túy) là đáng kinh ngạc. Điều này không chỉ xuất hiện ở các nhà phát triển nhỏ và vừa. Chúng tôi thấy các game và ứng dụng của các nhà xuất bản lớn cũng như các tập đoàn nổi tiếng đều sử dụng một token (mã xác thực) cho tất cả các cài đặt của họ.

6-cach-bao-ve-game-khoi-hacker-cracker-va-copycatter-4

Ảnh trên: key lỗ hổng của snapchat (nguồn)

Case ví dụ

Đây là một trong những lỗ hổng bảo mật của snapchat theo báo cáo của Gibson Security:

Do sự mã hóa đối xứng được sử dụng bởi snapchat cho mỗi snap đã được gửi, nếu người dùng nguy hiểm được quyền truy cập vào các máy chủ của snapchat, họ có thể có khả năng:

  • Xem tất cả các snap chưa được đọc gần đây (mà không ai biết).
  • Sửa đổi hoặc thay thế các snap chưa được đọc gần đây (mà không ai biết).
  • Xem các snap cũ đã được gửi đi. Cho dù đó là một key mà bạn đang sử dụng để mã hóa dữ liệu được truyền đi hoặc lưu trữ trên các thiết bị, code thủ công chúng trong plain text đồng nghĩa là mã hóa có thể dễ dàng xâm nhập.

Hãy suy nghĩ đơn giản hơn theo cách này: Bạn sẽ không bao giờ sử dụng một chìa khóa cho toàn bộ những chiếc xe của bạn và bạn không nên sử dụng một mật khẩu cho tất cả các trang web. Có lẽ quan trọng hơn, bạn sẽ không bao giờ làm ra những chiếc chìa khóa hoặc mật khẩu có sẵn để người khác sử dụng hoặc sao chép.

Key mã hóa là một trong những nền tảng của dịch vụ Internet bảo mật, nhưng nó phải được sử dụng một cách chính xác. Bất cứ khi nào có thể, hãy sử dụng các key động và nếu bạn phải sử dụng một key tĩnh, phải đảm bảo rằng bạn đã mã hóa nó.

Thời gian dự kiến thực hiện:

Một vài giờ đến vài tuần, tùy thuộc vào thời lượng của chu kỳ phát triển game và có bao nhiêu công việc có liên quan đến việc xác định tất cả các key mà cần phải được giải quyết.

4. Mã hóa theo hệ nhị phân

Ở bên trái, là tựa game Tap Titans gốc, được phát triển bởi Game Hive và được phát hành tại Trung Quốc bởi Oniix – còn bên phải, là tựa game nhái Tap Tap-Heroes xuất hiện trên thị trường một tháng sau khi Titans ra mắt , với những cơ chế cấp độ, chiến đấu, cân bằng game, và tỉ lệ monetization giống y chang bản gốc.

6-cach-bao-ve-game-khoi-hacker-cracker-va-copycatter-5

Nếu mã hóa mã nguồn tương đương với việc khóa chặt cánh cửa phòng ngủ của bạn, thì mã hóa cấp độ theo nhị phân tương đương với khóa chặt cánh cổng của bạn và dựng lên một hàng rào bao bộc xung quanh ngôi nhà của bạn. Phương pháp này mã hóa ở cấp độ tập tin ứng dụng, làm cho việc giải mã trở nên khó khăn hơn. Và bởi vì nội dung của chính bản thân ứng dụng được giữ nguyên vẹn, phương pháp này không cản trở hiệu suất ứng dụng.

Chiến lược này cung cấp một sự bảo đảm an toàn chống lại kỹ thuật đảo ngược, với yêu cầu dịch ngược các tập tin nhị phân. Điều không may đây là một kỹ thuật khá phổ biến của hacker.

Thời gian dự kiến thực hiện:

Tùy thuộc vào giải pháp, sự tích hợp có thể mất vài tháng (đối với giải pháp đòi hỏi tích hợp sâu rộng từ sự phát triển ban đầu của ứng dụng), phải mất hai hoặc nhiều tuần với SDK. Các giải pháp mới luôn có sẵn để có thể giảm bớt được lượng thời gian này xuống chỉ còn vài phút. Một giải pháp mà gần đây giúp tôi kiểm tra những yêu cầu của việc upload/download một tập tin đơn giản và toàn bộ quá trình chỉ mất 10 phút để hoàn thành.

5. Xác nhận thanh toán thời gian thực

6-cach-bao-ve-game-khoi-hacker-cracker-va-copycatter-6

Case:

Bên trên: Dòng IAP mẫu từ trang web phát triển của Apple

App Store cung cấp một mã xác minh thanh toán bất cứ khi nào một hành động IAP được thực hiện. Từ khi có một hành động mua hàng được xác nhận bởi máy chủ game và gửi lại cho máy chủ thanh toán của app store để xác nhận, app store cho phép sử dụng mã xác minh thanh toán để được tái sử dụng nhiều lần, đôi khi trên nhiều ứng dụng khác nhau.

Do các quy định ngân hàng và cách thẻ tín dụng được xử lý thông qua clearinghouses (thanh toán bù trừ), đôi khi một khoản phí thẻ tín dụng sẽ bị thất thoát ngay lập tức. Hay có những trường hợp, sẽ mất khoảng một hoặc hai ngày cho một khoản phí để hiển thị lên hoặc đi từ “cấp phát” đến “gửi.” (Việc xác minh đôi khi bị đảo lộn và phải xử lý mỗi vài giờ một lần, hoặc mỗi ngày một lần). Ví dụ, quy trình thanh toán thẻ tín dụng của Uber diễn ra theo thời gian thực, tuy nhiên sẽ mất đến 24 giờ để khoản phí này hiển thị trong thông báo mua hàng của tôi. Điều này tạo ra một trường hợp một số thẻ tín dụng giả, cũng như thẻ tín dụng bị đánh cắp, có thể được sử dụng để thực hiện các hành động in app purchase.

Tình trạng này khá phổ biến. Theo báo cáo từ công ty phân tích mobile Appsalar “tỉ lệ gian lận vượt quá 50 % đối với các thiết bị đã được bẻ khóa.” có thông tin cho rằng một trong những đối tác của nhà phát triển Game platform mang tên SOOMLA đã kiếm được hơn $ 1,000 sau ngày đầu tiên, tuy nhiên báo cáo doanh thu của Apple tiết lộ rằng công ty này chỉthực sự kiếm được $ 1-2.

Bằng cách thực hiện xác minh thanh toán thời gian thực trên server-side, bạn có thể ngăn chặn nhiều trường hợp lạm dụng mã thanh toán, giảm bớt các vụ gian lận thông tin thẻ tín dụng hợp lệ.

Dự kiến thời gian thực hiện:

Điều này chỉ cần mất nhiều nhất vài giờ đến vài ngày để thực hiện và không khó để thực hiện một khi bạn hiểu cơ chế hoạt động của hệ thống IAP. Khi tích hợp hệ thống IAP, hãy chắc chắn rằng máy chủ của bạn đang kiểm tra server-side ngay khi có hành động mua hàng.

6. Giám sát bảo mật ứng dụng theo thời gian thực

Một cánh cửa được khóa thì khá an toàn và một tòa nhà được bảo vệ thì an toàn hơn. Hiệu quả hơn là có một hệ thống giám sát chuyển động được lắp đặt xung quanh phạm vi bên ngoài, để cảnh báo cho chủ sở hữu biết và theo dõi các mối đe dọa tiềm tàng trước khi tòa nhà bị xâm phạm. Một lĩnh vực đang được phân tích tương tự như điều này, cho phép các nhà phát triển để theo dõi các ứng dụng của họ trong môi trường rộng lớn, giám sát những sự xâm nhập bất thường và theo dõi tần số cũng như nguồn gốc của chúng. Hiện tại chỉ có một vài dịch vụ có sẵn trên thị trường và chúng có giá trị nghiên cứu và xem xét.

Bảo mật server-side nên được thực hiện với các bức tường lửa và phần mềm bảo mật server side thông tin liên lạc cần phải thông qua SSL và các phương pháp khác “an toàn hơn”. Bây giờ chúng ta nên áp dụng cùng một logic cho client side của ứng dụng. Trong khi sensitive data (dữ liệu nhạy cảm) được lưu trữ trên server-side, truy cập vào dữ liệu này phải thông qua các client. Trở lại với ví dụ ngôi nhà bị khóa, một hệ thống các rào cản quan trọng là an toàn – nhưng một hệ thống quét võng mạc với nhận dạng vân tay, nhận dạng thân nhiệt và khóa cửa kỹ thuật số với một camera giám sát thậm chí còn an toàn hơn.

Thời gian dự kiến thực hiện:

Có một vài giải pháp có sẵn trên thị trường, với thời gian thực hiện từ một vài phút đến vài tuần.