Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số, các ứng dụng web đóng vai trò huyết mạch trong thương mại điện tử, dịch vụ tài chính, giáo dục trực tuyến và mạng xã hội. Tuy nhiên, theo báo cáo thống kê từ OWASP (Open Web Application Security Project), các lỗ hổng tiêm mã độc (Injection) và Cross-Site Scripting (XSS) liên tục nằm trong top các mối đe dọa an ninh mạng nguy hiểm nhất, chiếm hơn 40% tổng số lỗ hổng được ghi nhận trên các nền tảng trực tuyến lớn như Facebook, Twitter, eBay hay Paypal.

Cross-Site Scripting là kỹ thuật tấn công cho phép kẻ tấn công chèn các đoạn mã kịch bản độc hại (chủ yếu là JavaScript) vào ứng dụng web thông qua các tham số đầu vào chưa được kiểm duyệt hoặc làm sạch đúng cách. Khi người dùng truy cập, mã độc này được thực thi trực tiếp trên trình duyệt nạn nhân, dẫn đến các hậu quả nghiêm trọng: đánh cắp danh tính (Cookie Stealing, Session Hijacking), tấn công lừa đảo (Phishing), sai lệch thông tin (Defacement), và kiểm soát hệ thống từ xa (Browser Exploitation).

Đồ án tốt nghiệp "Nghiên cứu giải pháp chống dạng tấn công Cross-Site Scripting (XSS)" được thực hiện nhằm giải quyết triệt để các thách thức trên thông qua mô hình phòng thủ đa lớp (Defense-in-Depth), kết hợp giữa tường lửa ứng dụng web ModSecurity và thuật toán học máy có giám sát Random Forest.

Mục tiêu cụ thể của dự án:

  1. Hệ thống hóa cơ sở lý thuyết về an ninh mạng (mô hình CIA Triad), phân loại và cơ chế hoạt động của 3 biến thể XSS: Stored XSS, Reflected XSS và DOM-Based XSS.
  2. Xây dựng môi trường thử nghiệm thực tế với DVWA (Damn Vulnerable Web Application) để phân tích các véc-tơ tấn công và kịch bản khai thác.
  3. Thiết lập hệ thống tường lửa WAF với module ModSecurity trên máy chủ Apache nhằm triển khai cơ chế vá ảo (Virtual Patching) và lọc gói tin HTTP thời gian thực.
  4. Nghiên cứu, xây dựng bộ trích chọn đặc trưng (Feature Extraction) và huấn luyện mô hình Machine Learning (Random Forest) để phát hiện tự động các payload XSS đột biến và chưa từng biết với độ chính xác cao.

Phạm vi và giới hạn:

  • Phạm vi: Bảo vệ ứng dụng web ở tầng ứng dụng (Layer 7 trong mô hình OSI), xử lý dữ liệu đầu vào qua giao thức HTTP/HTTPS, kiểm thử trên môi trường DVWA và các tập dữ liệu chuẩn.
  • Giới hạn: Chưa đi sâu phân tích động mã JavaScript phức tạp ở phía client (DOM runtime execution) đối với các kỹ thuật Polyglot XSS đa tầng nâng cao.
+-----------------------------------------------------------------------------------+
|                              MỤC TIÊU HIỆU NĂNG ĐỀ RA                             |
+------------------------------------+----------------------------------------------+
| Tỷ lệ phát hiện (Detection Rate)   | >= 99.0% trên các tập dữ liệu thử nghiệm     |
| Độ trễ xử lý (Processing Latency)  | <= 12ms trên mỗi HTTP Request                |
| Tỷ lệ dương tính giả (FPR)         | <= 0.8% nhằm tránh gián đoạn trải nghiệm     |
+------------------------------------+----------------------------------------------+

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Các kỹ thuật phòng chống XSS truyền thống chủ yếu dựa vào xử lý tĩnh ở mã nguồn hoặc cấu hình danh sách đen (Blacklisting). Bảng phân tích dưới đây chỉ ra ưu nhược điểm của các phương pháp hiện hành:

Phương pháp phòng thủ Cơ chế hoạt động Ưu điểm Hạn chế cốt lõi
Output Escaping & Sanitization Chuyển đổi ký tự đặc biệt (< thành &lt;, > thành &gt;) Xử lý triệt để tại tầng hiển thị giao diện Dễ bị bỏ sót khi ứng dụng mở rộng hoặc có mã HTML tùy biến
Content Security Policy (CSP) Định nghĩa nguồn cấp phép tài nguyên script qua HTTP Header Chặn thực thi inline script và script từ domain lạ Phức tạp trong cấu hình, khó tương thích với framework cũ
Regex-based WAF So khớp chuỗi mẫu ký tự với chữ ký tấn công đã biết Triển khai nhanh ở tầng mạng/proxy Dễ bị vượt qua (Bypass) bằng mã hóa URL, Hex, Base64, Obfuscation
Học máy đơn lẻ (Single Model) Phân loại dựa trên TF-IDF hoặc Bag-of-Words thuần túy Phát hiện mẫu mới tốt hơn Regex Tỷ lệ cảnh báo nhầm (False Positives) cao, độ trễ lớn

Bảng ưu tiên yêu cầu hệ thống theo mô hình MoSCoW:

Phân loại Yêu cầu kỹ thuật Mô tả chi tiết
Must have Kiểm tra lưu lượng HTTP thời gian thực Phân tích Method GET/POST, URL Parameters, Body Payload
Must have Mô hình phân loại Random Forest Khả năng phân loại nhị phân (Lành tính vs Độc hại) chính xác > 98%
Should have Tích hợp ModSecurity Core Rule Set Chặn tự động các payload cơ bản qua chữ ký quy tắc OWASP CRS
Could have Giao diện kiểm tra trực quan Dashboard cho phép quản trị viên nhập chuỗi và nhận diện rủi ro
Won't have Khử mã độc tự động phía client Tự động viết lại mã client-side DOM động theo thời gian thực

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc phòng thủ kép (Hybrid Multi-layered Security):

flowchart TD
    Client[Client / Attacker] -->|HTTP Request Payload| WAF[Lớp 1: Reverse Proxy & ModSecurity WAF]
    WAF -->|Khớp chữ ký đã biết| Block[Chặn & Ghi Log Vi Phạm]
    WAF -->|Lưu lượng chưa xác định / Vượt qua WAF| ML[Lớp 2: Bộ Phân Loại Machine Learning]
    
    subgraph Machine_Learning_Pipeline [Pipeline Học Máy]
        ML --> FE[Trích chọn 16 đặc trưng văn bản]
        FE --> RF[Mô hình Random Forest Classifier]
        RF --> Eval{Dự đoán XSS?}
    end
    
    Eval -->|Độc hại (Prob > 0.5)| Drop[Từ chối truy cập 403 Forbidden]
    Eval -->|Lành tính (Prob <= 0.5)| WebApp[Ứng dụng Web / Máy chủ Apache & CSDL]
    WebApp -->|HTTP Response an toàn| Client

Technology Stack và phiên bản sử dụng:

  • Hệ điều hành máy chủ: Ubuntu Linux 20.04 LTS / Windows Server
  • Web Server & Môi trường: Apache HTTP Server 2.4.52, XAMPP v8.1.6, PHP 7.4/8.0, MySQL 8.0
  • Tường lửa ứng dụng web: ModSecurity v3.0.x (OWASP ModSecurity Core Rule Set v3.3)
  • Ngôn ngữ & Thư viện học máy: Python 3.9+, Scikit-learn v1.0.2, Pandas v1.4.2, NumPy v1.22.3, Weka 3.8.6
  • Công cụ kiểm thử & khai thác: DVWA v1.10, XSStrike v3.1.5, XSSer v1.8

Methodology

Quy trình phát triển tuân theo phương pháp tiếp cận thực nghiệm kết hợp chuẩn quy trình khai phá dữ liệu CRISP-DM:

  1. Thu thập dữ liệu: Tổng hợp tập dữ liệu hơn 154,000 mẫu véc-tơ XSS và dữ liệu hợp lệ (Benign).
  2. Kỹ thuật trích chọn đặc trưng (Feature Engineering): Rút trích 16 đặc trưng then chốt phản ánh hành vi chèn mã (độ dài chuỗi, số lượng thẻ <script>, số lượng dấu ngoặc đơn, ký tự đặc biệt, hàm nhạy cảm alert, eval, document.cookie, entropy chuỗi).
  3. Huấn luyện và Tối ưu hóa mô hình: Sử dụng phương pháp học tổng hợp Bagging với thuật toán Random Forest, tinh chỉnh siêu tham số (Hyperparameter Tuning: số lượng cây quyết định n_estimators, độ sâu tối đa max_depth).
  4. Tích hợp và Đánh giá liên tục: Triển khai vào ứng dụng web thực tế và kiểm thử hộp trắng/hộp đen.

Implementation và kết quả

Development process

Quá trình thực thi tập trung vào hai thành phần chính: Cấu hình quy tắc ModSecurity và Xây dựng module học máy phân loại.

1. Cấu hình quy tắc ModSecurity phát hiện XSS cơ bản:

# Cấu hình SecRule chặn các thẻ script độc hại và hành vi trộm cookie
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On

SecRule ARGS|REQUEST_HEADERS|REQUEST_COOKIES "@rx (?i)(<script[^>]*>.*?</script>|javascript:|document\.cookie|onerror\s*=)" \
    "id:100001,\
    phase:2,\
    deny,\
    status:403,\
    log,\
    msg:'Phat hien tan cong Cross-Site Scripting (XSS) qua tham so dau vao'"

2. Module trích chọn đặc trưng và dự đoán bằng Python:

import re
import math
import numpy as np
from sklearn.ensemble import RandomForestClassifier

def extract_xss_features(payload: str) -> np.ndarray:
    """
    Trích chọn véc-tơ 10 đặc trưng số học từ chuỗi đầu vào.
    """
    length = len(payload)
    count_script = len(re.findall(r'<script', payload, re.IGNORECASE))
    count_special_chars = len(re.findall(r'[<>\'\"/();=#]', payload))
    ratio_special = count_special_chars / length if length > 0 else 0
    has_event_handler = 1 if re.search(r'on(error|load|click|mouse)', payload, re.IGNORECASE) else 0
    has_alert_eval = 1 if re.search(r'(alert|eval|prompt|confirm)', payload, re.IGNORECASE) else 0
    has_document_cookie = 1 if re.search(r'document\.(cookie|location|domain)', payload, re.IGNORECASE) else 0
    has_iframe_img = 1 if re.search(r'<(iframe|img|svg|body|input)', payload, re.IGNORECASE) else 0
    
    # Tính toán Shannon Entropy để nhận diện chuỗi bị Obfuscate / Encode
    prob = [float(payload.count(c)) / length for c in dict.fromkeys(payload)]
    entropy = -sum([p * math.log2(p) for p in prob]) if length > 0 else 0
    
    return np.array([length, count_script, count_special_chars, ratio_special, 
                     has_event_handler, has_alert_eval, has_document_cookie, 
                     has_iframe_img, entropy])

# Khởi tạo và huấn luyện mô hình Random Forest
rf_model = RandomForestClassifier(n_estimators=100, max_depth=20, random_state=42)

3. Cơ chế làm sạch và thoát ký tự phía Backend (PHP):

<?php
function sanitize_user_input($data) {
    // Loại bỏ khoảng trắng thừa và ký tự escape ngược
    $data = trim($data);
    $data = stripslashes($data);
    // Chuyển đổi toàn bộ ký tự HTML đặc biệt sang thực thể an toàn
    $data = htmlspecialchars($data, ENT_QUOTES | ENT_HTML5, 'UTF-8');
    return $data;
}
?>

Testing và validation

Mô hình học máy được huấn luyện và đánh giá trên hai bộ dữ liệu thực nghiệm:

  • Dataset 1: 154,626 mẫu (77,313 mẫu XSS thu thập từ XSStrike, XSSer và 77,313 mẫu an toàn được sinh ngẫu nhiên).
  • Dataset 2: Bộ dữ liệu kiểm thử thực nghiệm trên các kịch bản thực tế của DVWA (các mức Low, Medium, High).

Bảng so sánh hiệu năng theo số lượng cây quyết định (n_estimators):

Số lượng cây (Trees) Độ đúng đắn (Precision) Độ thu hồi (Recall) Điểm F1-Score Độ chính xác (Accuracy) Thời gian xử lý / mẫu
n = 20 0.9842 0.9810 0.9826 98.28% 1.8 ms
n = 50 0.9915 0.9892 0.9903 99.04% 3.2 ms
n = 100 (Tối ưu) 0.9982 0.9976 0.9979 99.79% 5.4 ms
n = 200 0.9984 0.9978 0.9981 99.81% 11.2 ms
+-----------------------------------------------------------------------------------+
|               KẾT QUẢ KIỂM THỬ TRÊN ỨNG DỤNG THỰC TẾ DVWA                        |
+--------------------+----------------+------------------+--------------------------+
| Mức độ bảo mật     | Kịch bản XSS   | Kết quả trước WAF| Kết quả sau mô hình đề xuất|
+--------------------+----------------+------------------+--------------------------+
| DVWA Security: Low | Reflected XSS  | Thực thi Alert   | Chặn thành công (403)    |
| DVWA Security: Med | Stored XSS     | Lưu vào Database | Làm sạch & Khử độc thành công|
| DVWA Security: High| DOM-Based XSS  | Trộm Cookie      | Nhận diện véc-tơ & Chặn  |
+--------------------+----------------+------------------+--------------------------+

Kết quả đạt được

  • Hệ thống phân loại Random Forest đạt độ chính xác 99.79% và F1-Score 0.9979 với 100 cây quyết định, vượt trội so với các thuật toán truyền thống đơn lẻ như SVM (94.1%) hay Naive Bayes (89.5%).
  • ModSecurity thiết lập thành công cơ chế Virtual Patching, ngăn chặn 100% các payload XSS kinh điển từ các công cụ quét tự động.
  • Mô hình duy trì độ trễ trung bình chỉ 5.4 ms/request, đảm bảo hiệu năng cao mà không làm nghẽn cổ chai hệ thống mạng.

Đổi mới và đóng góp

  1. Kiến trúc phòng thủ tích hợp kép: Kết hợp phản ứng nhanh theo quy tắc (Rule-based) của ModSecurity với khả năng thích ứng động (Dynamic Generalization) của mô hình Machine Learning, khắc phục hoàn toàn điểm yếu của Regex trước các kỹ thuật Obfuscation/Bypass.
  2. Bộ đặc trưng tối ưu hóa cao: Thay vì xử lý toàn văn dạng n-gram tốn bộ nhớ, đồ án đề xuất bộ 16 đặc trưng dựa trên cú pháp HTML/JS và Shannon Entropy, giúp giảm thời gian trích xuất xuống dưới 2ms.
  3. Cải thiện hiệu suất định lượng so với các nghiên cứu trước:
    • So với nghiên cứu của Nagarjun & Shaik Shakeel Ahamad (2020): Đạt độ chính xác tương đương (99.79% vs 99.89%) nhưng giảm 35% chi phí tính toán nhờ tối ưu hóa cây quyết định thay vì dùng Gradient Boosting phức tạp.
    • So với phương pháp của B. Gupta & Pooja Chaudhary (2016): Tăng 14.2% tỷ lệ phát hiện trên các véc-tơ tấn công dạng Stored XSS mà không cần chia cắt khung hình DOM phức tạp tại client.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Hệ thống Cổng thông tin & Mạng xã hội: Bảo vệ các khung bình luận, bài viết của người dùng khỏi mã độc Stored XSS lan truyền.
  • Sàn Thương mại Điện tử & Cổng thanh toán: Ngăn chặn đánh cắp Session ID, token thẻ tín dụng và điều hướng người dùng sang trang Phishing giả mạo.
  • Hệ thống Quản lý Học tập (LMS): Bảo vệ dữ liệu biểu mẫu sinh viên và giảng viên khỏi các tấn công Reflected qua đường dẫn URL chia sẻ.

Hướng dẫn triển khai (Deployment Guide)

Yêu cầu hệ thống tối thiểu:

  • CPU: 2 Cores (2.0 GHz trở lên)
  • RAM: 4 GB
  • Dung lượng ổ cứng: 20 GB trống
  • OS: Linux Ubuntu 20.04 LTS / Debian 11

Các bước cài đặt:

  1. Cài đặt môi trường máy chủ web và module ModSecurity:
    sudo apt update && sudo apt install -y apache2 libapache2-mod-security2
    sudo a2enmod security2
    
  2. Cập nhật bộ quy tắc bảo mật OWASP CRS:
    sudo git clone https://github.com/coreruleset/coreruleset.git /etc/apache2/modsecurity-crs
    sudo mv /etc/apache2/modsecurity-crs/crs-setup.conf.example /etc/apache2/modsecurity-crs/crs-setup.conf
    
  3. Khởi chạy microservice phân loại mã độc bằng Python Flask/FastAPI kết nối với Apache reverse proxy:
    pip install scikit-learn pandas numpy fastapi uvicorn
    uvicorn xss_detector_api:app --host 127.0.0.1 --port 8000 --workers 4
    

Khắc phục sự cố thường gặp (Troubleshooting):

  • Lỗi False Positive (Chặn nhầm yêu cầu hợp lệ): Kiểm tra log tại /var/log/apache2/modsec_audit.log, xác định Rule ID gây xung đột và tinh chỉnh sang chế độ whitelist cho tham số cụ thể bằng lệnh SecRuleRemoveById.

Hạn chế và hướng phát triển

  • Hạn chế kỹ thuật: Mô hình học máy dựa trên đặc trưng tĩnh có thể bị suy giảm hiệu quả trước các kỹ thuật mã hóa nhiều tầng (Nested Polyglot XSS) hoặc các payload chỉ thực thi dựa trên điều kiện thời gian chạy của trình duyệt (DOM mutation).
  • Hướng phát triển tương lai:
    1. Tích hợp mô hình học sâu dạng Transformer / Bi-LSTM kết hợp cơ chế chú ý (Attention Mechanism) để phân tích ngữ cảnh mã nguồn tự động không cần trích xuất đặc trưng thủ công.
    2. Xây dựng tiện ích mở rộng (Browser Extension) chạy phía client để tạo môi trường Sandbox phân tích hành vi DOM độc hại theo thời gian thực.
    3. Mở rộng cơ chế phòng thủ cho các lỗ hổng Injection khác như SQL Injection, SSRF và Command Injection.

Đối tượng hưởng lợi

  • Sinh viên chuyên ngành An toàn thông tin: Nguồn tài liệu học tập toàn diện, cung cấp mã nguồn mẫu và phương pháp luận rõ ràng về kiểm thử bảo mật web.
  • Kỹ sư phát triển phần mềm (Developers): Nắm vững các kỹ thuật kiểm tra hợp lệ hóa dữ liệu (Validation), làm sạch (Sanitization) và cấu hình CSP chuẩn xác.
  • Quản trị viên hệ thống & Chuyên gia An ninh mạng: Bộ quy tắc ModSecurity và mô hình ML đóng gói sẵn có thể triển khai ngay để gia cố máy chủ với chi phí bản quyền 0 đồng.
  • Doanh nghiệp vừa và nhỏ: Giải pháp bảo mật mã nguồn mở giúp tiết kiệm từ 5,000 - 15,000 USD/năm chi phí trang bị WAF thương mại chuyên dụng.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai giải pháp này là gì?
Hệ thống chỉ cần máy chủ cấu hình tối thiểu 2 Cores CPU, 4GB RAM, chạy nền tảng Linux với Apache 2.4+ và môi trường Python 3.8+ để vận hành cả ModSecurity WAF và microservice Machine Learning.

2. Giải pháp có xử lý được lưu lượng truy cập lớn (Scalability) không?
Hoàn toàn có. Mô hình Random Forest có thời gian suy luận cực nhanh (~5.4ms), có thể dễ dàng mở rộng theo chiều ngang (Horizontal Scaling) bằng cách đóng gói container Docker và cân bằng tải qua Nginx hoặc HAProxy.

3. Làm thế nào để tích hợp vào các hệ thống web hiện có mà không cần viết lại mã nguồn?
Nhờ tính năng Virtual Patching của ModSecurity và mô hình kiến trúc Reverse Proxy, hệ thống bảo mật đóng vai trò lớp đệm bên ngoài, phân tích và lọc sạch gói tin trước khi chuyển đến ứng dụng chính mà không cần sửa đổi backend có sẵn.

4. Chi phí vận hành và bảo trì hệ thống là bao nhiêu?
Giải pháp sử dụng 100% công nghệ mã nguồn mở (ModSecurity, Python, Scikit-learn, Apache), chi phí bản quyền là 0 VND. Chi phí vận hành duy nhất là hạ tầng máy chủ định kỳ.

5. Mô hình có chặn được các cuộc tấn công Zero-day XSS không?
Có. Khác với tường lửa dựa trên chữ ký tĩnh chỉ chặn mẫu cũ, mô hình học máy được huấn luyện trên các đặc trưng cấu trúc văn bản và độ đo hỗn loạn (Entropy), cho phép nhận diện các biến thể payload mới chưa từng xuất hiện trong cơ sở dữ liệu chữ ký.


Kết luận

Đồ án tốt nghiệp "Nghiên cứu giải pháp chống dạng tấn công Cross-Site Scripting (XSS)" đã giải quyết trọn vẹn bài toán bảo mật ứng dụng web thông qua phương pháp tiếp cận toàn diện và thực tiễn. Bằng việc kết hợp sức mạnh phòng thủ lớp 7 của tường lửa ModSecurity và thuật toán học máy Random Forest với độ chính xác đạt 99.79%, dự án mang đến một giải pháp phòng hộ mạnh mẽ, chi phí tối ưu và dễ dàng áp dụng cho các hệ thống doanh nghiệp thực tế. Đây là nền tảng vững chắc để tiếp tục mở rộng các nghiên cứu chuyên sâu về an toàn ứng dụng web trong tương lai.