1. Cấu trúc và cơ chế hoạt động của Facebook và Facebook Platform
Mạng xã hội với tính năng chia sẻ, kết nối trực tuyến và khả năng tìm hiểu sở thích cũng như hoạt động của người dùng đã và đang trở thành một phần không thể thiếu trong cuộc sống hàng ngày của hàng triệu người trên toàn thế giới. Người dùng đăng ký vào website mạng xã hội, tạo profile mô tả sở thích và các thông tin cá nhân, thêm bạn bè, gia nhập nhóm. Khi gia nhập nhóm, một người có thể kết nối với những người khác trong nhóm, có thể truy cập hồ sơ cá nhân của nhau, xem ảnh, video và các thông tin khác được chia sẻ. Chính yếu tố tin tưởng từ các mối quan hệ được thiết lập trong mạng xã hội là điểm thiết yếu kẻ tấn công có thể lợi dụng (Hình1).
Facebook Platform cung cấp bốn thành phần chính hỗ trợ người phát triển ứng dụng Facebook, bao gồm: Giao diện lập trình ứng dụng Facebook API (Application Programming Interface), ngôn ngữ đánh dấu FBML (Facebook Markup Language), ngôn ngữ truy vấn FQL (Facebook Query Language) và ngôn ngữ tạo script FBJS (Facebook Javascript).
Facebook API
Facebook API cho phép nhà phát triển ứng dụng có thể tạo ra ứng dụng một cách dễ dàng, nhưng không thể can thiệp sâu vào hệ thống của Facebook. Thông qua các lời gọi API, người tạo ứng dụng có thể lấy thông tin về user, groups, photo... từ máy chủ Facebook. Lời gọi API ở đây là truy vấn mà ứng dụng chạy trên Facebook gửi tới tới máy chủ Facebook. Truy vấn này có chứa các thông số liên quan đến yêu cầu lấy thông tin như api_key của ứng dụng, session_key của người dùng đưa ra yêu cầu. Bên cạnh đó Facebook còn thêm vào tham số fb_sig để thông báo ứng dụng đưa ra yêu cầu. Với cơ chế như vậy, Facebook có thể xác minh ứng dụng gửi lời gọi Facebook API. Thông tin mà Facebook hồi đáp lại cho ứng dụng có thể ở dạng XML, JSON hoặc Facebook PHP Client.
FBML là ngôn ngữ đánh dấu do Facebook phát triển, là phần mở rộng của HTML, được sử dụng để hiển thị các trang bên trong trang nền Facebook. Hầu hết các thẻ FBML giống hệt với các thẻ HTML và dẫn đến nội dung trình duyệt giống nhau khi phân tích cú pháp, nhưng FBML cũng cung cấp nhiều thẻ hành vi, thẻ trích ra thông tin từ cơ sở dữ liệu Facebook và đưa các thông tin này vào trong nội dung của ứng dụng. FBML hỗ trợ các yếu tố tạo style như CSS. FBML cho phép xây dựng một ứng dụng trên nền tảng Facebook một cách đầy đủ. Khi ứng dụng trả về FBML, đi qua proxy Facebook, các thẻ FBML sẽ được render để trả về dạng HTML.
FBJS
Trong ứng dụng web thông thường, Javascript là công cụ hỗ trợ các nhà phát triển tạo ra các script để thêm tương tác cho các trang HTML, giảm tải các yêu cầu tới server. Các nhà phát triển của Facebook tạo ra FBJS là ngôn ngữ dựa trên Javascript để dùng các script giúp cho người dùng xây dựng ứng dụng một cách dễ dàng hơn. FBJS là một hình thức hạn chế của Javascript mà Facebook đưa ra để ngăn chặn các mã độc hại dựa trên Javascript trong các ứng dụng. Vấn đề bảo mật được các nhà phát triển Facebook quan tâm hàng đầu, do vậy FBJS chính là công cụ để kiểm soát vấn đề này. Cũng như FBML, FBJS được phân tích và viết lại trước khi được trả lại cho người dùng.
FQL
FQL là ngôn ngữ truy vấn của Facebook. Đây là một ngôn ngữ dựa trên ngôn ngữ SQL, được các nhà phát triển Facebook tạo ra để giúp người viết ứng dụng truy xuất tới các bảng trong cơ sở dữ liệu như: user, friend, group, group_member, event, event_member, photo, album, photo_tag... (hình 3).
2- Máy chủ Facebook sẽ gửi yêu cầu tới máy chủ chứa ứng dụng của người phát triển. Yêu cầu này là trong suốt đối với người dùng.
3- Máy chủ chứa ứng dụng của người phát triển tạo một lời gọi API truy vấn tới máy chủ Facebook bằng cách sử dụng FQL.
4- Máy chủ Facebook sẽ hồi đáp lời gọi API truy vấn của máy chủ ứng dụng dưới dạng XML, JSON hoặc Facebook PHP Client.
5- Máy chủ ứng dụng sử dụng kết quả trả về từ máy chủ Facebook ở bước 4 và tạo tài liệu FBML, FBJS gửi qua máy chủ Facebook để xử lý trước khi chuyển đến trình duyệt người dùng.
6- Tài liệu FBML, FBJS sẽ được máy chủ Facebook phân tích và chuyển sang dạng HTML, CSS, JavaScript trước khi được chuyển đến trình duyệt người sử dụng ứng dụng.
2. Nguy cơ bảo mật từ các ứng dụng phát triển trên nền
Facebook Platform
Như đã trình bày ở phần trên, một đặc trưng của Facebook nói riêng và của mạng xã hội nói chung là tính kết nối thiết lập các mối quan hệ. Một người dùng Facebook có thể thiết lập các mối quan hệ với một số lượng lớn người dùng khác, lập nên các nhóm chia sẻ kết nối trên mạng xã hội. Tính chất chia sẻ và tin tưởng trong các mối quan hệ trên mạng xã hội thể hiện rất rõ ở việc lan truyền thông tin nhanh chóng và sự gia tăng lượng người sử dụng các ứng dụng phổ biến trên Facebook (Bảng 1). Đây chính là điểm mà kẻ ác ý có thể lợi dụng để phát tán mã độc. Rõ ràng, việc chơi một ứng dụng game từ lời mời của một người bạn trong danh sách bạn bè có tác dụng thu hút hơn việc mở một file đính kèm trong mail mà có nguy cơ chứa mã độc. Ngoài ra, một lượng lớn người dùng Facebook không ý thức được nguy cơ có thể đi kèm khi sử dụng những ứng dụng này mà phụ thuộc hoàn toàn vào phần mềm chống virus và thiết lập tường lửa, mà các biện pháp này trong nhiều trường hợp không đủ hiệu quả.
Như vậy, kẻ tấn công có thể sử dụng Facebook Platform xây dựng một ứng dụng có chèn mã độc, sau đó phát tán ứng dụng này trong mạng Facebook thông qua việc gửi lời mời dùng ứng dụng tới danh sách bạn bè của người sử dụng ứng dụng đó. Để thực hiện mục đích này kẻ tấn công có thể chỉ cần xây dựng một ứng dụng đơn giản, nếu ứng dụng có tính thu hút thì hiệu quả lan truyền sẽ càng cao.
Bên cạnh việc phát tán mã độc, mạng xã hội Facebook còn có thể bị lợi dụng để xâm phạm tính riêng tư và an toàn thông tin của người dùng. Có nhiều cách thức để thực hiện việc này, nhưng về cơ bản cần dựa trên cơ chế hoạt động và phát triển một ứng dụng Facebook như đã phân tích ở trên và sự am hiểu các kiểu tấn công cũng như kỹ năng lập trình PHP và JavaScript.
Về mặt nguyên lý, một trong nhiều cách phổ biến là kẻ tấn công có thể chèn code là các đoạn iframe để chuyển hướng người dùng đến Web Server cài đặt ứng dụng. Sau đó có thể dễ dàng thực thi code tùy ý, chẳng hạn thực thi các code JavaScript mã nguồn mở để thực hiện thao tác quét cổng của máy tính nạn nhân, biết được IP của máy tính nạn nhân, phiên bản trình duyệt, hệ điều hành, tình trạng đóng/mở cổng, từ đó nhận dạng cách để tấn công.
Viêc thực thi các code JavaScript phía người dùng đem lại một số lợi thế cho kẻ tấn công: thứ nhất, quá trình quét cổng được thực hiện nội bộ bởi trình duyệt, kẻ tấn công che dấu được danh tính và cuộc tấn công được thực hiện thông qua ứng dụng Facebook đã được xác thực và chấp nhận bởi máy chủ Facebook; thứ hai, luồng dữ liệu sẽ vượt qua firewall vì chỉ có giao thức http được sử dụng và ứng dụng đó đã được chấp nhận chạy trên máy người dùng.
Như vậy, thông qua ứng dụng chạy trên Facebook, kẻ tấn công có thể xác định được một số ứng dụng mà người dùng có thể đang sử dụng, tìm một số lỗ hổng và tìm cách khai thác nhằm xâm phạm tính an toàn của máy tính người dùng. Thực tế, việc khai thác lỗ hổng không đòi hỏi kẻ tấn công phải có kỹ năng lập trình đặc biệt nào bởi trên mạng Internet đã có sẵn các công cụ khai thác lỗ hổng của các ứng dụng kèm theo hướng dẫn sử dụng cụ thể. Mặc dù Facebook Platform có một số bảo vệ ngăn chặn ứng dụng lấy được IP của máy nạn nhân nhưng sự bảo vệ này vẫn ở mức đơn giản và hoàn toàn có thể bị phá vỡ.
Dữ liệu thu thập được từ nạn nhân được gửi đến một email, đồng thời được ghi vào một file text trên một máy chủ web khác. Để xây dựng ứng dụng này, các nhà nghiên cứu đã sử dụng FBML, FBJS, PHP và JavaScript. Đoạn mã độc chèn vào ứng dụng viết bằng JavaScipt, sử dụng AttackAPI để quét cổng của máy nạn nhân và lấy các thông tin về trạng thái đóng - mở cổng, địa chỉ IP của máy tính, phiên bản trình duyệt, nền tảng hệ điều hành.... Đây là những thông tin để kẻ tấn công có thể phát hiện lỗ hổng trên máy nạn nhân và khai thác tấn công. Với cơ chế như vậy, ứng dụng thử nghiệm cũng có thể thực hiện nhiều đoạn mã độc khác.
Ngoài ra, sử dụng Facebook API, kẻ tấn công có thể lưu danh sách bạn bè của người dùng, gửi thông điệp đến danh sách này, phát tán ứng dụng. Kết quả thử nghiệm đã cho thấy, bằng việc sử dụng đúng đoạn mã khai thác lỗ hổng, kẻ tấn công có thể truy cập được màn hình lệnh console của người dùng và thực hiện mã tùy ý. Ứng dụng thử nghiệm này có thể dẫn đến những mối nguy như trường hợp trojan “Koobface” trước đây trên mạng xã hội, thậm chí ứng dụng này không cần các bước cài codecs kèm theo như trong trojan “Koobface”.
Cũng thực hiện nghiên cứu về nguy cơ an ninh từ mạng xã hội, các nhà nghiên cứu tại Viện Khoa học máy tính của Singapore đã thử nghiệm mô hình tấn công DDoS dựa trên Facebook. Họ đã xây dựng một ứng dụng Facebook là “Photo of the Day” để trình diễn mỗi ngày một bức ảnh đẹp khác nhau từ trang web mang tên National Geographic về nhiếp ảnh. Mỗi khi người dùng click vào ứng dụng này, một bức ảnh từ dịch vụ tương ứng trên trang National Geographic sẽ xuất hiện. Các nhà nghiên cứu đã chèn đoạn mã đặc biệt vào trong mã của ứng dụng này để mỗi khi người dùng xem ảnh, các yêu cầu HTTP được tự động sinh ra hướng tới máy nạn nhân. Cụ thể là, ứng dụng nhúng các frame có chứa nguồn tài liệu lưu tại máy nạn nhân. Mỗi khi người dùng click vào ứng dụng sẽ tạo ra yêu cầu lấy tài liệu từ máy nạn nhân, dẫn đến việc máy nạn nhân sẽ phải phục vụ yêu cầu này. Bản thân người dùng không hề biết điều này vì tài liệu trên máy nạn nhân không hề được hiển thị trên trình duyệt người dùng.
Thực nghiệm này đã cho thấy một mạng xã hội như Facebook có thể dễ dàng trở thành một công cụ tấn công như thế nào. Chẳng hạn, để thực hiện cuộc tấn công DDoS, kẻ tấn công có thể tạo một ứng dụng Facebook chèn mã độc có nhúng địa chỉ URI tới máy nạn nhân. Những địa chỉ URI này trỏ tới các tài liệu lưu trên máy nạn nhân. Khi người dùng Facebook tương tác với ứng dụng Facebook độc hại thông qua trình duyệt, máy nạn nhân sẽ nhận được những yêu cầu này. Tập các trình duyệt của người dùng bị nhiễm độc tự động gửi yêu cầu tới máy nạn nhân hình thành nên mạng tấn công gọi là FaceBot (Hình 5).
Hình 5: Cấu trúc mạng FaceBot.
3. Kết luận
Sự phát triển ngày càng mạnh mẽ của Facebook và các ứng dựng dựa trên nền tảng Facebook Platform một mặt tạo ra hướng mở rộng trong phát triển phần mềm nhưng mặt khác cũng tiềm ẩn nguy cơ tạo và lan truyền các ứng dụng độc hại đe họa tính riêng tư và an toàn hệ thống. Qua phân tích về cấu trúc và cơ chế hoạt động của Facebook và Facebook Platform; cơ chế phát triển một ứng dụng dựa trên nền tảng Facebook có chèn đoạn mã độc thu thập thông tin về máy tính người dùng cũng như tạo mạng FaceBot phục vụ tấn công DDoS, bài báo cho thấy nguy cơ bị khai thác lỗ hổng và tấn công từ chính mạng xã hội có lượng người sử dụng rất lớn này.
Bởi vậy, cần nâng cao nhận thức của người dùng khi sử dụng ứng dụng trên Facebook nói riêng và trên mạng xã hội nói chung; nâng cao trách nhiệm của đội ngũ phát triển Facebook và Facebook Platform trong việc xây dựng các giải pháp đảm bảo an toàn cho tài khoản người dùng Facebook từ chính nền tảng và dịch vụ họ cung cấp, cũng như có cơ chế hiệu quả kiểm soát mức độ an toàn của các ứng dụng Facebook mà họ chấp nhận.