Sinh viên ĐH Bách khoa Hà Nội giúp tìm ra lỗ hổng bảo mật của NukeViet
Nguyễn Quang Bằng, sinh viên năm 4 ngành Khoa học Máy tính tại Đại học Bách Khoa Hà Nội, vừa được nền tảng CMS mã nguồn mở NukeViet vinh danh sau khi phát hiện và báo cáo một lỗ hổng bảo mật nghiêm trọng.

Từ chương trình săn lỗi đến hai ngày "mổ xẻ" mã nguồn
Ngoài giờ học và công việc kiểm thử tại một công ty công nghệ, Nguyễn Quang Bằng - chàng sinh viên năm 4 của trường Đại học Bách Khoa Hà Nội, đã dành thời gian còn lại để tham gia “săn” lỗi trên các nền tảng quốc tế như Intigriti và WhiteHub. Chính trong một lần duyệt danh sách chương trình Bug Bounty trên WhiteHub, anh chú ý đến NukeViet.
NukeViet không phải cái tên xa lạ trong làng công nghệ Việt Nam. Đây là nền tảng CMS mã nguồn mở duy nhất trong nước từng đoạt giải Ba Nhân tài Đất Việt, được phát triển liên tục hơn hai thập kỷ và hiện đang vận hành hàng ngàn website của doanh nghiệp, cơ quan trên khắp cả nước. Nền tảng này được Bộ Giáo dục và Đào tạo khuyến khích sử dụng, đồng thời được Bộ Thông tin và Truyền thông (nay là Bộ Khoa học và Công nghệ) đưa vào danh mục ưu tiên mua sắm sử dụng trong cơ quan nhà nước/chính phủ.
Mã nguồn công khai, cộng đồng người dùng rộng, lịch sử cập nhật đều đặn theo tháng. Với Bằng, đó là một đối tượng nghiên cứu lý tưởng.
"Em nhận thấy rằng thông qua việc nghiên cứu mã nguồn của nền tảng này, em sẽ có cơ hội để hiểu thêm về cách các lập trình viên xây dựng một hệ thống. Và vậy là hành trình mổ xẻ mã nguồn bắt đầu", Bằng kể.
Không phải không có trắc trở, bước đầu tiên là dựng môi trường kiểm thử, tưởng đơn giản nhưng lại mất nhiều thời gian hơn dự tính. Bằng thử cài đặt qua Docker (nền tảng đóng gói và triển khai ứng dụng) và thất bại ở các bước khởi tạo hệ thống. Chuyển sang XAMPP (bộ phần mềm tạo môi trường máy chủ web trên máy tính cá nhân), mọi thứ ổn định hơn, dù vẫn thỉnh thoảng gặp sự cố với domain (tên miền). Vượt qua giai đoạn đó, Bằng bắt đầu đọc code thực sự. Hơn hai ngày sau, lỗ hổng hiện ra.
Stored XSS và nguy cơ bị kiểm soát từ bên trong
Lỗ hổng Bằng phát hiện thuộc dạng Stored Cross-Site Scripting, thường gọi tắt là Stored XSS. Đây là một trong những kiểu tấn công được xếp vào nhóm nguy hiểm bậc nhất với hệ thống quản trị nội dung, bởi mã độc không chỉ xuất hiện thoáng qua mà được lưu thẳng vào cơ sở dữ liệu của máy chủ. Mỗi lần có người dùng truy cập trang bị nhiễm, đoạn mã đó lại tự động thực thi, không cần bất kỳ sự can thiệp nào thêm từ phía kẻ tấn công.

Mô phỏng cơ chế tấn công Stored XSS
Hậu quả trong thực tế có thể rất nghiêm trọng. Theo Bằng, kẻ tấn công khai thác thành công lỗ hổng này có thể thực thi các thao tác vốn chỉ dành cho quản trị viên cấp cao, thay đổi giao diện hệ thống, hoặc can thiệp vào nội dung email tự động gửi cho admin. Từ đó, các chiến dịch lừa đảo có thể được triển khai ngay trên nền tảng mà người dùng đang tin tưởng, mà không để lại dấu hiệu bất thường rõ ràng.
Với người lần đầu tiếp cận một mã nguồn hơn 20 năm tuổi, Bằng thừa nhận mình chuẩn bị tinh thần cho điều tệ hơn. Tuy nhiên, thực tế lại ngược lại: "Điều em thấy ấn tượng nhất là độ “dễ đọc” của nó. Em có thể dễ dàng tìm được đoạn code chứa logic của một endpoint nào đấy để phân tích và kiểm thử", Bằng kể.
Bằng đánh giá cao sự linh hoạt đối với cơ chế phân quyền của NukeViet, vì quản trị viên có thể tạo ra nhiều vai trò khác nhau tùy nhu cầu vận hành. Tuy nhiên theo Bằng, chính những hệ thống có nhiều cấp quyền và luồng dữ liệu đầu vào đa dạng như vậy lại đòi hỏi việc kiểm soát bảo mật phải được thực hiện chặt chẽ và đồng bộ hơn.
Mô hình "phòng thủ" từ cộng đồng NukeViet
Việc NukeViet triển khai chương trình Bug Bounty trên WhiteHub cho thấy cách tiếp cận khá cởi mở trong việc đảm bảo an toàn bảo mật. Thay vì chỉ phụ thuộc vào đội ngũ nội bộ, Công ty cổ phần phát triển nguồn mở Việt Nam (VINADES.,JSC - đơn vị chính chịu trách nhiệm phát triển NukeViet) lựa chọn phối hợp cùng cộng đồng nghiên cứu bảo mật để phát hiện và xử lý sớm các rủi ro tiềm ẩn trên hệ thống.

Nguyễn Quang Bằng nhận quà vinh danh từ NukeViet
Cũng từ quá trình nghiên cứu mã nguồn NukeViet, Bằng có thêm góc nhìn thực tế về PHP - công nghệ lõi của nền tảng này. Theo Bằng: "Nhiều người định kiến về PHP, nhưng thực tế đây vẫn là ngôn ngữ có hệ sinh thái khổng lồ. Việc NukeViet vẫn phát triển mạnh trên nền tảng này cho thấy sức sống của sản phẩm nếu được vận hành đúng cách."
Đáng chú ý là quy trình phản ứng của đội ngũ kỹ thuật. Chỉ 1 - 2 ngày sau báo cáo của Bằng, phía NukeViet đã xác nhận và sửa lỗi thành công. Thậm chí, đội ngũ phát triển còn mời Bằng tham gia retest (kiểm định độc lập) trước khi chính thức phát hành bản vá trong phiên bản NukeViet 4.5.08 lên GitHub. Sự cầu thị và tốc độ xử lý này cho thấy tính chuyên nghiệp của hệ sinh thái NukeViet - WhiteHub hiện nay.
Lời khuyên cho các nhà quản trị: Liên tục cập nhật để đảm bảo an toàn hệ thống
Để ghi nhận đóng góp này, đại diện NukeViet đã trực tiếp đến Đại học Bách Khoa Hà Nội trao thưởng và vinh danh Nguyễn Quang Bằng. Với một "bug hunter” (thợ săn lỗi bảo mật) trẻ tuổi đang làm song song công việc kiểm thử tại doanh nghiệp, đây là sự khích lệ rất lớn về mặt chuyên môn.
Kết thúc buổi trò chuyện, Bằng gửi đi một khuyến cáo rõ ràng dành cho các nhà quản trị website: "Việc sử dụng phiên bản phần mềm cũ sẽ tạo điều kiện cho kẻ tấn công khai thác những lỗ hổng đã biết. Tôi đề xuất các quản trị viên liên tục nâng cấp lên phiên bản mới nhất để đảm bảo an toàn cho hệ thống".
Bài học từ Nguyễn Quang Bằng và NukeViet cho thấy: Khi tài năng trẻ được ghi nhận và doanh nghiệp biết lắng nghe cộng đồng, an toàn thông tin sẽ trở thành công cuộc chung, bảo vệ vững chắc cho hạ tầng số của các tổ chức, doanh nghiệp trong nước.
Hiện tại, lỗ hổng Stored XSS đã được đội ngũ phát triển xử lý triệt để trong phiên bản NukeViet 4.5.08. Để đảm bảo an toàn hệ thống, các quản trị viên được khuyến nghị cần sớm kiểm tra và thực hiện nâng cấp lên phiên bản mới nhất theo các thông báo hướng dẫn chính thức từ phía nhà phát hành.
