@iamproz2911
@kidwine29
# CAPSTONE PROJECT: Xây dựng CI/CD Pipeline & CodeQL: Phát hiện & Ngăn chặn lỗ hổng bảo mật.
## Giới thiệu
Đây là hệ thống mô phỏng quá trình tích hợp bảo mật vào vòng đời phát triển phần mềm theo mô hình DevSecOps, sử dụng pipeline CI/CD để tự động phát hiện và cảnh báo lỗ hổng bảo mật trước khi triển khai ứng dụng.
Hệ thống gồm 3 thành phần chính:
Ứng dụng web Flask mô phỏng các lỗ hổng OWASP Top 10
Pipeline CI/CD Jenkins thực hiện kiểm thử bảo mật tự động với các công cụ SAST, DAST, Dependency Scanning
Dashboard nội bộ hiển thị kết quả quét, thống kê lỗ hổng và log cảnh báo
Quy trình kiểm thử bảo mật bao gồm:
SAST: Phân tích mã nguồn bằng CodeQL, Safety, OWASP Dependency-Check
DAST: Kiểm thử endpoint bằng SQLMap và OWASP ZAP
Tự động hóa: Các bước kiểm thử được thực thi song song trong pipeline Jenkins, kết quả xuất ra định dạng HTML, SARIF, JSON và được hiển thị trực tiếp trên dashboard
## Nội dung chính
• Giới thiệu kiến trúc tổng thể của hệ thống
• Các thành phần trong dự án
• Các công cụ bảo mật sử dụng
• Link đến mã nguồn GitHub chính thức
### Kiến trúc tổng thể
Mô hình DevSecOps:

Sơ đồ tổng quan pipeline ứng dụng DevSecOp:

### Các thành phần trong dự án
| **Tác nhân** | **Mô tả vai trò** |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **DevOps / Security Engineer / Admin** | - Lên kế hoạch chi tiết áp dụng mô hình DevSecOps, đảm bảo yếu tố bảo mật từ giai đoạn đầu đến khi bàn giao dự án. <br> - Quản lý hệ thống CI/CD: thiết lập pipeline Jenkins, lựa chọn và cấu hình các công cụ bảo mật phù hợp. <br> - Quản lý dashboard, phân quyền người dùng. <br> - Theo dõi thống kê, phân tích log và kết quả kiểm tra bảo mật. <br> - Cập nhật hoặc viết thêm các rule kiểm tra bảo mật (CodeQL, ZAP...), đính kèm tài liệu hướng dẫn xử lý lỗi một cách an toàn. |
| **Dev Team (Developer)** | - Push mã nguồn lên GitHub, merge code sau khi vượt qua kiểm tra logic. <br> - Nhận phản hồi qua email khi có lỗi bảo mật hoặc lỗi chất lượng mã nguồn. <br> - Truy cập dashboard để xem chi tiết lỗi, tài liệu hướng dẫn sửa lỗi. <br> - Tự học kiến thức bảo mật từ dashboard để nâng cao khả năng phát hiện điểm yếu trong code. |
### Các loại kỹ thuật kiểm thử bảo mật
| Kỹ Thuật & Công cụ | Mục tiêu kiểm thử | Lỗi thường phát hiện | Gợi ý xử lý cho Dev |
| ------------------ | ------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **SAST CodeQL** | Phân tích mã nguồn để phát hiện lỗi bảo mật tiềm ẩn trong code | SQL Injection, XSS, Hardcoded credentials, Path traversal | - Sử dụng prepared statement<br>- Escape input đúng cách<br>- Không hardcode secret<br>- Dùng thư viện quản lý cấu hình |
| **SCA (Safety)** | Kiểm tra các thư viện bên ngoài có chứa lỗ hổng CVE hay không | Thư viện có CVE, thư viện lỗi thời | - Cập nhật các package lên bản vá mới nhất<br>- Xóa bỏ các thư viện không cần thiết<br>- Dùng Dependency Management Tool như pip-tools |
| **DAST OWASP ZAP** | Kiểm thử web app đang chạy (runtime) để phát hiện các lỗi logic hoặc frontend/backend | CSRF, IDOR, Broken Auth, XSS, file upload không kiểm soát | - Bổ sung xác thực CSRF token<br>- Check quyền trước khi truy cập ID (IDOR)<br>- Ràng buộc định dạng & loại file upload<br>- Escape output trong HTML |
| **DAST SQLMap** | Tấn công trực tiếp các điểm nghi vấn về SQL Injection | SQL Injection (Error-based, Union-based...) | - Dùng ORM hoặc parameterized queries (e.g. SQLAlchemy)<br>- Tránh nối chuỗi trực tiếp trong câu lệnh SQL<br>- Kiểm tra kỹ các endpoint nhận tham số từ user |
### 🔗 Link mã nguồn GitHub chính thức:
- **Web Vulnerable OWASP Top 10 & CodeQL Queries**
→ Mã nguồn ứng dụng Flask mô phỏng các lỗ hổng OWASP, kèm truy vấn kiểm thử CodeQL tùy chỉnh
[https://github.com/yourname/web-owasp-codeql](https://github.com/yourname/web-owasp-codeql)
- **CI/CD Pipeline Flask – DevSecOps**
→ Cấu hình Jenkins Pipeline, CodeQL CLI, SQLMap, OWASP ZAP, Docker, Email Alert
[https://github.com/yourname/devsecops-pipeline](https://github.com/yourname/devsecops-pipeline)
- **Dashboard Report Security For Developer**
→ Web Flask hiển thị SARIF, HTML Report, OWASP mapping, log Jenkins, Security Document
[https://github.com/yourname/devsecops-dashboard](https://github.com/yourname/devsecops-dashboard)
- **Slide Presentation**
[Slide](https://www.canva.com/design/DAGqnZZeNyo/amRyECekLD4KNyYumfzzag/edit?utm_content=DAGqnZZeNyo&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton)