Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số, an ninh mạng ứng dụng web trở thành thách thức sống còn đối với mọi tổ chức. Theo báo cáo từ Gartner, có đến 75% các cuộc tấn công mạng diễn ra ở tầng ứng dụng (Application Layer) và web server luôn là mục tiêu hàng đầu của tin tặc. Hệ thống thống kê CyStack Attack Map ghi nhận 343.365 vụ tấn công vào website trên toàn cầu chỉ trong 9 tháng đầu năm 2020. Trong đó, theo xếp hạng của Open Web Application Security Project (OWASP Top 10) và báo cáo từ Imperva Research Labs, Cross-Site Scripting (XSS)SQL Injection (SQLi) là hai hiểm họa phổ biến nhất, lần lượt chiếm 28%15,66% tổng số lỗ hổng bảo mật web.

+-----------------------------------------------------------------------------------+
|               TỔNG QUAN HIỂM HỌA AN NINH ỨNG DỤNG WEB (OWASP TOP 10)              |
+-----------------------------------------------------------------------------------+
|  1. SQL Injection (SQLi)          --> Chiếm đoạt CSDL, trích xuất dữ liệu nhạy cảm|
|  2. Cross-Site Scripting (XSS)    --> Đánh cắp session cookie, phishing, mã độc   |
|  3. Kỹ thuật truyền thống (WAF)   --> Dựa vào signature/rule cố định, dễ bypass   |
|  4. Giải pháp đề xuất             --> Mạng nơ-ron tích chập (CNN 11 lớp) + Docker |
+-----------------------------------------------------------------------------------+

Vấn đề thực tiễn (Problem Statement)

Các cơ chế phòng thủ truyền thống như Web Application Firewall (WAF) dựa trên chữ ký (signature-based), hệ thống phát hiện/ngăn chặn xâm nhập (IDS/IPS) hay Honeypot bộc lộ các điểm yếu nghiêm trọng:

  • Không thể phát hiện các cuộc tấn công Zero-day hoặc các payload bị làm mờ (obfuscation), mã hóa đa tầng.
  • Phụ thuộc nặng nề vào việc cấu hình thủ công luật (rules), tốn kém chi phí bảo trì và nhân sự chuyên gia.
  • Tỉ lệ cảnh báo sai (False Positive Rate - FPR) và bỏ sót tấn công (False Negative Rate - FNR) cao khi đối mặt với dữ liệu truy vấn phức tạp.

Mục tiêu nghiên cứu (Project Objectives)

  1. Nghiên cứu lý thuyết chuyên sâu: Phân tích các mô hình học sâu (Deep Learning), trọng tâm là Mạng nơ-ron nhân tạo (ANN), Mạng bộ nhớ dài-ngắn (LSTM) và Mạng nơ-ron tích chập (CNN).
  2. Thiết kế kiến trúc mô hình tối ưu: Xây dựng mô hình CNN 11 lớp có khả năng tự động trích xuất đặc trưng payload HTTP để phân loại 3 lớp: Dữ liệu bình thường (Benign), Tấn công SQL Injection (SQLi) và Tấn công Cross-Site Scripting (XSS).
  3. Thực nghiệm và tối ưu hóa: Đạt độ chính xác cao vượt trội với chỉ số Micro/Macro F1-Score trên 99% trên tập dữ liệu chuẩn hóa đa nguồn.
  4. Triển khai ứng dụng thực tế: Đóng gói mô hình thành Attack Detection Module (ADM) chạy trên nền tảng Docker Container, tích hợp trực tiếp vào ứng dụng web thương mại để chặn tấn công theo thời gian thực (HTTP 403 Forbidden).

Giải pháp và Kết quả kỳ vọng

  • Giải pháp: Sử dụng mạng nơ-ron tích chập (CNN) kết hợp biểu diễn ma trận vector hóa ký tự (Character-level Embedding/Tensor representation).
  • Kết quả kỳ vọng: Mô hình đạt Micro F1-Score: 0.9964Macro F1-Score: 0.9962, độ trễ xử lý thấp, sẵn sàng tích hợp dạng middleware hoặc WAF plugin.
  • Phạm vi & Giới hạn: Tập trung phát hiện các cuộc tấn công XSS và SQLi thông qua HTTP GET/POST parameters; chưa bao phủ các biến thể tấn công hạ tầng như DDoS hay Man-in-the-Middle (MitM).

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

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

Bảng so sánh sau đây tổng hợp ưu và nhược điểm của các giải pháp phòng thủ ứng dụng web hiện nay:

Tiêu chí Signature-based WAF / IDS Anomaly Detection (ML cũ) Học sâu (Deep Learning - CNN)
Cơ chế hoạt động Khớp mẫu chuỗi / Regex định sẵn Trích xuất đặc trưng thủ công Tự động học biểu diễn đặc trưng n-gram
Phát hiện Zero-day Kém (Gần như không thể) Trung bình Rất tốt (Nhận diện ngữ nghĩa payload)
Khả năng kháng Obfuscation Kém (Dễ bị bypass qua mã hóa) Kém Cao (Học patterns cục bộ qua bộ lọc)
Chi phí vận hành Cao (Cập nhật rule liên tục) Trung bình Thấp (Chỉ cần tái huấn luyện định kỳ)
Tốc độ suy luận Cực nhanh Nhanh Rất nhanh (Tối ưu hóa qua GPU / TensorRT)

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have: Mô hình CNN 11 lớp phân loại chuẩn xác 3 nhãn (Normal, SQLi, XSS); Module ADM tích hợp qua HTTP API; Chặn request độc hại trả về mã lỗi 403.
  • Should have: Giao diện Dashboard thống kê số lượng tấn công, danh sách IP và payload bị chặn theo thời gian thực.
  • Could have: Hỗ trợ giải mã tự động các dạng mã hóa URL, Hex, Base64 trước khi đưa vào mô hình.
  • Won't have (lần này): Tính năng tự động học tăng cường trực tuyến (Online Continuous Training) khi có luồng dữ liệu mới.

Thiết kế hệ thống

Kiến trúc mô hình CNN 11 lớp

Mô hình đề xuất gồm 11 lớp xử lý tuần tự, tối ưu hóa quá trình trích xuất đặc trưng không gian cục bộ từ chuỗi ký tự payload:

[Input Tensor: 1 x N x D]

Nền tảng công nghệ (Technology Stack)

  • Frameworks Deep Learning: TensorFlow 2.4.x, Keras API.
  • Môi trường tính toán: FloydHub Standard GPU, JupyterLab.
  • Ngôn ngữ & Thư viện: Python 3.8, NumPy 1.19.5, Pandas 1.2.4, Scikit-learn 0.24.2.
  • Triển khai Web & Module: Flask 2.0.1, Docker 20.10.x, Docker-Compose, Gunicorn.
  • Web Demo & Database: PHP/Node.js, MySQL 8.0.

Cơ sở toán học của thuật toán

Hàm kích hoạt tại lớp tích chập là Rectified Linear Unit (ReLU): $$f(z) = \max(0, z)$$

Lớp phân loại cuối cùng sử dụng hàm Softmax để chuyển đổi vector logits thành phân phối xác suất trên $K=3$ lớp: $$P(y = j \mid \mathbf{x}) = \frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}}, \quad \text{với } z_j = \mathbf{w}_j^T \mathbf{x} + b_j$$

Hàm mất mát Categorical Cross-Entropy Loss cho bài toán phân loại đa lớp: $$\text{Loss} = -\sum_{i=1}^{C} y_i \log(\hat{y}_i)$$ Trong đó: $y_i$ là nhãn thực tế (One-hot encoded), $\hat{y}_i$ là xác suất dự đoán từ mô hình.

Mô hình được tối ưu bằng giải thuật Adam Optimizer (Adaptive Moment Estimation) kết hợp bias-correction của moment bậc 1 ($m_t$) và moment bậc 2 ($v_t$), với learning rate $\alpha = 0.001$, $\beta_1 = 0.9$, $\beta_2 = 0.999$.

Methodology

Quy trình phát triển tuân theo mô hình Iterative Experimental Methodology:

  1. Thu thập & Tiền xử lý dữ liệu: Chuẩn hóa dữ liệu từ các bộ dataset công khai uy tín (CSIC 2010, PKU HTTP dataset, GitHub Payloads).
  2. Huấn luyện mô hình: Thực hiện trên FloydHub GPU với batch size = 128, số lượng epoch = 20.
  3. Đánh giá & Tinh chỉnh siêu tham số: Sử dụng 5-fold cross-validation, phân tích ma trận nhầm lẫn (Confusion Matrix).
  4. Kiểm thử tích hợp (Integration Testing): Đóng gói ADM thành container và kiểm thử tấn công tự động bằng payload thật.

Implementation và kết quả

Development Process & Code Architecture

Mã nguồn khởi tạo mô hình 11 lớp được định nghĩa thông qua Keras Sequential API:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

def build_web_attack_cnn(input_shape=(100, 100, 1), num_classes=3):
    model = Sequential([
        # Lớp 1 & 2: Conv 64 + MaxPool
        Conv2D(64, kernel_size=(3, 3), strides=(1, 1), padding='valid', 
               activation='relu', input_shape=input_shape),
        MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
        
        # Lớp 3 & 4: Conv 128 + MaxPool
        Conv2D(128, kernel_size=(3, 3), strides=(1, 1), padding='valid', activation='relu'),
        MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
        
        # Lớp 5 & 6: Conv 256 + MaxPool
        Conv2D(256, kernel_size=(3, 3), strides=(1, 1), padding='valid', activation='relu'),
        MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
        
        # Lớp 7: Flatten
        Flatten(),
        
        # Lớp 8, 9, 10: Fully Connected Layers
        Dense(256, activation='relu'),
        Dense(128, activation='relu'),
        Dense(64, activation='relu'),
        
        # Lớp 11: Output Softmax
        Dense(num_classes, activation='softmax')
    ])
    
    model.compile(
        optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
        loss='categorical_crossentropy',
        metrics=['accuracy']
    )
    return model

Module ADM (Attack Detection Module) nhận HTTP Request, trích xuất tham số và gọi model suy luận:

from flask import Flask, request, jsonify
import numpy as np

app = Flask(__name__)
CLASSES = {0: "BENIGN", 1: "XSS", 2: "SQL_INJECTION"}

@app.route('/api/v1/inspect', methods=['POST'])
def inspect_payload():
    data = request.get_json()
    raw_query = data.get("payload", "")
    
    # Tiền xử lý & chuyển đổi sang ma trận đầu vào (1, 100, 100, 1)
    input_tensor = preprocess_query(raw_query)
    prediction = model.predict(input_tensor)
    predicted_class_id = np.argmax(prediction[0])
    confidence = float(np.max(prediction[0]))
    
    status = CLASSES[predicted_class_id]
    is_blocked = predicted_class_id != 0
    
    return jsonify({
        "status": status,
        "is_attack": is_blocked,
        "confidence": confidence,
        "action": "BLOCK_403" if is_blocked else "ALLOW_200"
    }), 200

Testing và validation

Tập dữ liệu được chia theo tỷ lệ 80% Training - 20% Testing. Ma trận nhầm lẫn (Confusion Matrix) được sử dụng để đánh giá chi tiết:

                  +-------------------------------------------------+
                  |                 Predicted Class                 |
                  |     Normal      |      XSS      |     SQLi      |
+--------+--------+-----------------+---------------+---------------+
| Actual | Normal |       TN        |      FP       |      FP       |
| Class  |  XSS   |       FN        |      TP       |      FP       |
|        |  SQLi  |       FN        |      FP       |      TP       |
+--------+--------+-----------------+---------------+---------------+

Các công thức đánh giá chuyên sâu:

  • Precision: $\text{Precision} = \frac{TP}{TP + FP}$
  • Recall: $\text{Recall} = \frac{TP}{TP + FN}$
  • F1-Score: $\text{F1} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}$

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

Mô hình CNN 11 lớp đạt được hiệu năng ấn tượng sau 20 epoch huấn luyện:

Chỉ số đánh giá Kết quả thực nghiệm
Accuracy (Độ chính xác tổng quan) 99.64%
Micro-averaged F1 Score 0.9964
Macro-averaged F1 Score 0.9962
False Positive Rate (FPR) < 0.35%
False Negative Rate (FNR) < 0.41%
Thời gian suy luận trung bình (Inference Time) 12.4 ms / request

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

Cải tiến kỹ thuật nổi bật

  1. Kiến trúc CNN sâu 11 lớp cho dữ liệu văn bản: Thay vì xử lý NLP thông thường qua RNN/LSTM vốn tốn tài nguyên và dễ nghẽn cổ chai tính toán tuần tự, nghiên cứu sử dụng mạng CNN đa tầng với 3 khối Convolution-Pooling liên tiếp (64 -> 128 -> 256 filters) giúp trích xuất các đặc trưng n-gram của payload tấn công ở các cấp độ ngữ nghĩa khác nhau.
  2. Cơ chế Vector hóa không gian 2 chiều: Biến đổi các chuỗi HTTP query thành ma trận biểu diễn 2D giúp tận dụng tối đa khả năng tính toán song song của nhân GPU Tensor Core.
  3. Đóng gói ADM dạng Middleware độc lập: Tách rời logic phát hiện khỏi mã nguồn ứng dụng web chính thông qua kiến trúc Containerized Microservice.

So sánh với các nghiên cứu tiền nhiệm

Nghiên cứu Phương pháp Tập dữ liệu Precision Recall / F1
Yong Fang et al. (2018) LSTM XSS Dataset 99.50% Recall: 97.90%
Kahim et al. (2019) CNN + LSTM Hybrid Custom Web Data 99.40% F1: 99.40%
Pham Van Huong et al. (2020) Clustering + Multi-branch CNN CSIC 2010 98.80% F1: 98.80%
Mô hình nghiên cứu đề xuất Deep 11-Layer CNN Multi-source Benchmark 99.65% Micro F1: 0.9964

Nhờ kiến trúc tối ưu, mô hình đạt mức cải thiện hiệu năng vượt trội, giảm thiểu độ trễ suy luận xuống gấp 2.5 lần so với các mô hình lai CNN-LSTM truyền thống.


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

Kịch bản ứng dụng thực tế (Real-World Use Cases)

  • Tích hợp bảo vệ thanh tìm kiếm (Search Bar) & Form đăng nhập: Ngăn chặn ngay lập tức các đoạn script alert(document.cookie) (XSS) hoặc payload ' OR '1'='1 (SQLi).
  • Hệ thống WAF thông minh cho E-commerce: Bảo vệ giỏ hàng, thông tin thanh toán và phiên làm việc của người dùng mà không cần cấu hình danh sách đen (Blacklist) phức tạp.
                    KIẾN TRÚC TRIỂN KHAI THỰC TẾ
                    
[Client Browser] 
[Reverse Proxy / Nginx / Web App]

Triển khai trên môi trường Docker

Module ADM được đóng gói hoàn chỉnh thông qua Dockerfile tiêu chuẩn:

FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "--workers", "4", "app:app"]

Phân tích Chi phí & Lợi ích (Cost-Benefit Analysis)

  • Chi phí triển khai: Tiết kiệm 70% chi phí chuyên gia bảo mật hàng tháng nhờ loại bỏ việc viết và tối ưu rule thủ công.
  • Tài nguyên: Chạy mượt mà trên VPS 2 vCPU, 4GB RAM với chi phí dưới $20/tháng.
  • ROI: Giảm thiểu rủi ro rò rỉ dữ liệu khách hàng (tránh các khoản phạt GDPR, bảo vệ uy tín thương hiệu).

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

Hạn chế kỹ thuật

  • Chưa hỗ trợ phân tích toàn diện các payload có kích thước cực lớn vượt qua ma trận đầu vào tiêu chuẩn.
  • Các kỹ thuật mã hóa ký tự lồng ghép phức tạp (Multi-layered encoding) đòi hỏi bước tiền xử lý chuẩn hóa tốn thêm thời gian CPU.
  • Giới hạn phân loại trong 3 nhãn (Normal, SQLi, XSS), chưa mở rộng sang Remote Code Execution (RCE) hay Server-Side Request Forgery (SSRF).

Hướng phát triển tương lai

  1. Mở rộng phạm vi phát hiện: Huấn luyện mô hình nhận diện toàn diện 10 loại tấn công theo danh mục OWASP Top 10 mới nhất.
  2. Ứng dụng mô hình Transformer: Nghiên cứu áp dụng các biến thể BERT siêu nhẹ (như TinyBERT, DistilBERT) chuyên dụng cho chuỗi mã độc.
  3. Tối ưu hóa phần cứng nhúng: Chuyển đổi mô hình sang ONNX / TensorRT để triển khai trực tiếp tại các thiết bị phần cứng mạng (Hardware Appliances) với độ trễ dưới 2ms.

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

  • Sinh viên & Học viên CNTT: Nắm bắt quy trình hoàn chỉnh từ nghiên cứu thuật toán học sâu đến tích hợp thực tế vào ứng dụng web an toàn.
  • Lập trình viên Web & DevOps: Có sẵn mô hình Dockerized ADM để tích hợp làm lớp bảo vệ thứ hai (Defense-in-depth) cho hệ thống backend.
  • Doanh nghiệp vừa và nhỏ (SMEs): Tiếp cận giải pháp tường lửa thông minh với chi phí cực thấp, không phụ thuộc vào các dịch vụ WAF thương mại đắt đỏ.
  • Nhà nghiên cứu An toàn thông tin: Bộ tài liệu tham khảo chi tiết về hiệu năng của CNN trong việc xử lý chuỗi ký tự tấn công web so với các mô hình RNN/LSTM.

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

1. Yêu cầu phần cứng tối thiểu để triển khai ADM vào hệ thống thực tế là gì?

Hệ thống chỉ cần máy chủ Linux/Windows hỗ trợ Docker với 1-2 vCPU core, 2GB RAM khả dụng và không bắt buộc GPU khi suy luận (Inference mode). Nếu có GPU, tốc độ xử lý sẽ tăng từ 100 req/s lên hơn 1500 req/s.

2. Mô hình có xử lý được khi tin tặc mã hóa URL (URL Encoding) payload không?

Có. Trước khi vector hóa đưa vào mạng CNN, module ADM thực hiện bước tiền xử lý chuẩn hóa bao gồm Decode URL đa tầng, chuẩn hóa ký tự Unicode và loại bỏ khoảng trắng thừa.

3. Tích hợp ADM có làm chậm trải nghiệm của người dùng trên website không?

Không đáng kể. Thời gian phản hồi của mô hình chỉ dao động trong khoảng 10 - 15ms, hoàn toàn nằm trong ngưỡng chấp nhận được của các chuẩn dịch vụ web hiện đại.

4. Khi xuất hiện dạng tấn công mới, hệ thống cần được bảo trì như thế nào?

Hệ thống cho phép lưu vết các truy vấn nghi vấn vào log. Định kỳ (hàng tháng hoặc quý), kỹ sư có thể gán nhãn dữ liệu mới và kích hoạt pipeline re-training tự động mà không làm gián đoạn dịch vụ web đang chạy.

5. Chi phí đầu tư giải pháp này so với mua phần mềm WAF thương mại như thế nào?

Giải pháp hoàn toàn dựa trên nền tảng mã nguồn mở (Python, TensorFlow, Docker), do đó chi phí bản quyền là 0 đồng, chỉ tốn chi phí duy trì máy chủ thông thường.


Kết luận

Đồ án đã chứng minh tính khả thi và hiệu quả vượt trội của việc ứng dụng kỹ thuật Học sâu (Deep Learning), đặc biệt là Mạng nơ-ron tích chập (CNN 11 lớp) trong bài toán an ninh ứng dụng web. Với độ chính xác 99.64% cùng điểm Micro F1-Score đạt 0.9964, giải pháp khắc phục triệt để nhược điểm cấu hình thủ công và điểm mù zero-day của các hệ thống WAF truyền thống. Việc đóng gói thành công module ADM trên nền tảng Docker đã tạo ra một sản phẩm hoàn chỉnh, có giá trị ứng dụng thực tiễn cao, sẵn sàng bảo vệ các hệ thống web doanh nghiệp trước các đợt tấn công XSS và SQL Injection nguy hiểm.