Hãy Nói Về Vụ Việc XcodeGhost - nói dối e blog

Hãy Nói Về Vụ Việc XcodeGhost

Sự việc XcodeGhost gần đây đã gây xôn xao cộng đồng công nghệ. Để tóm tắt ngắn gọn, đây là trường hợp một phiên bản Xcode bị tấn công cài mã độc, khiến mọi ứng dụng iOS được biên dịch từ công cụ này đều bị chèn thêm đoạn mã nguy hiểm. Vì Xcode gần như là công cụ duy nhất để phát triển ứng dụng iOS, kết hợp với thói quen tải phần mềm từ nguồn không chính thống của nhiều lập trình viên Trung Quốc (như tìm kiếm trên Baidu, tải qua Xunlei), nên công cụ nhiễm mã độc này đã lây lan rộng trong nửa năm qua, ảnh hưởng hàng loạt ứng dụng nội địa.

Tôi không muốn nhắc lại danh sách các “ông lớn” bị dính mã độc - những người thường xuyên theo dõi các phân tích của tôi đều hiểu: ngay cả các công ty lớn cũng thiếu vắng nhân sự am hiểu an ninh mạng. Ngược lại, chính quy mô quản lý phức tạp và tốc độ cập nhật kiến thức chậm của các quản lý cấp cao tại những doanh nghiệp này lại tạo điều kiện cho sai sót an ninh xảy ra thường xuyên hơn.

Hiện tượng nhiễm mã độc qua phần mềm tải từ nguồn không chính thống không phải mới mẻ. Vài tháng trước sự cố PuTTY bị cài backdoor vẫn còn nóng hổi, nhưng nhiều người đã vội lãng quên bài học. Thủ đoạn này thực chất rất cổ điển - thế hệ lập trình viên từng học về virus máy tính hẳn còn nhớ giáo trình từng đề cập 4 dạng virus, trong đó có virus nguồn (source code virus) lây nhiễm qua trình biên dịch. Dù khái niệm này đã bị loại khỏi nhiều giáo trình hiện đại, nhưng nó bắt nguồn từ bài phát biểu nổi tiếng của Ken Thompson khi nhận giải Turing năm 1984. So với “màn trình diễn” của Ken Thompson, cách thức XcodeGhost hoạt động có phần thô sơ hơn nhiều.

Về mặt kỹ thuật, tôi không đi sâu phân tích chi tiết XcodeGhost vì thông tin tràn lan trên mạng. Điều tôi muốn nhấn mạnh là mức độ nguy hiểm thực sự của sự cố này. Việc ứng dụng bạn phát hành bị chèn mã độc tất nhiên gây tổn hại nghiêm trọng - người dùng tin tưởng sử dụng app của bạn, nhưng nay dữ liệu họ cung cấp có thể bị bên thứ ba thu thập bất hợp pháp. Đặc biệt với các ứng dụng xây dựng hệ thống người dùng riêng ngoài hệ sinh thái Apple, lỗ hổng an ninh gần như chắc chắn xuất hiện.

Đây chính là lý do Apple luôn phản đối việc các ứng dụng tự xây dựng hệ sinh thái độc lập. Thiếu quyền hệ thống, các nền tảng này từ đầu đã ở thế bất lợi về bảo mật. Tuy nhiên, mức độ nguy hiểm đến Apple ID/iCloud của bạn thực tế lại hoàn toàn kiểm soát được. Trong thiết kế iOS, mật khẩu iCloud thuộc nhóm thông tin được ưu tiên bảo vệ cao nhất. Ngay cả khi dùng ứng dụng nhiễm mã độc, người dùng nhập mật khẩu qua giao diện chính thống của hệ thống cũng không bị đánh cắp. Phương thức tấn công khả dĩ duy nhất là tạo cửa sổ giả mạo để lừa người dùng tự nguyện cung cấp thông tin.

Làm thế nào iOS chống lại hình thức钓鱼 này? Khi yêu cầu xác thực iCloud, hệ thống luôn hiển thị rõ ràng Apple ID cần đăng nhập, không bao giờ yêu cầu người dùng nhập lại ID. Điểm mấu chốt là chỉ có App Store mới cần nhập Apple ID, còn mọi ứng dụng khác (kể cả của Apple) đều không có yêu cầu này. Người dùng cần đặc biệt cảnh giác nếu gặp cửa sổ yêu cầu nhập Apple ID - đây là dấu hiệu nghi vấn cao về tấn công钓鱼. Với những người dùng lớn tuổi thiếu kiến thức an ninh, tôi cho rằng phần lớn trong số họ thậm chí đã quên luôn Apple ID của mình, huống hồ gì nhập nó.

Bảo mật luôn là trách nhiệm kép giữa hệ thống và người dùng. Nếu bạn sẵn sàng nhập mọi thứ khi được yêu cầu, kẻ tấn công chẳng cần费心力去 đánh cắp Apple ID - chúng có thể giả lập giao diện thanh toán để lấy thông tin ngân hàng trực tiếp. Đây chính là lý do Apple cấm ứng dụng tự xây dựng cổng thanh toán riêng.

Tôi muốn so sánh với tình trạng hỗn loạn trên nền tảng Android Trung Quốc, nơi các ứng dụng đua nhau tích hợp SDK thanh toán nội bộ. Thiếu cơ chế sandbox và xử lý trong tiến trình độc lập, chỉ cần một SDK độc hại là toàn bộ thông tin nhạy cảm có thể bị đánh cắp. Đây là một trong những lý do tôi từ chối dùng thiết bị Android sau khi Google Play bị chặn.

Hôm qua, một người tự xưng là tác giả XcodeGhost tuyên bố chỉ chèn quảng cáo và không thu thập dữ liệu nhạy cảm. Cộng đồng kiểm chứng mã nguồn mở và kết quả giải mã ngược cho thấy lời khai này đáng tin cậy. Cá nhân tôi phần nào yên tâm về bảo mật Apple ID, dù vẫn giữ thái độ hoài nghi nhất định.

Tôi muốn đặt câu hỏi ngược lại: Tại sao mọi người lo lắng về vài dòng mã độc XcodeGhost, nhưng lại bình thản chấp nhận hàng tấn mã nguồn từ SDK của Tencent hay các nhà cung cấp khác? App Store chính là hàng rào tin cậy cuối cùng, xác nhận danh tính nhà phát triển để người dùng lựa chọn. Nhưng trào lưu tích hợp SDK bừa bãi ở Trung Quốc đã phá vỡ cơ chế này - gần như mọi ứng dụng nội địa đều chứa mã nguồn không phải do chính họ viết.

So với SDK của Tencent, đoạn mã XcodeGhost dù bị che giấu nhưng quy mô nhỏ gọn, dễ phân tích ngược hơn nhiều. Dù bạn tin tưởng đạo đức của Tencent, làm sao đảm bảo hàng ngàn dòng mã do đội ngũ thiếu kiến thức an ninh viết không chứa lỗ hổng bị tin tặc lợi dụng?

Bảo mật không thể phụ thuộc hoàn toàn vào đạo đức hay năng lực của nhà phát triển. Từ khâu审核, sandbox đến kiểm soát API, iOS xây dựng nhiều lớp phòng thủ. Chính vì vậy Apple kiên quyết cấm JIT và tải mã native động - những công nghệ cho phép ứng dụng tải đoạn mã chưa qua审核 về chạy sau khi phát hành, như vụ 36

0%