Security Testing (Kiểm thử bảo mật) là một quy trình trong kiểm thử phần mềm nhằm đảm bảo rằng các hệ thống, ứng dụng, hoặc API không bị khai thác bởi các lỗ hổng bảo mật. Mục tiêu của kiểm thử bảo mật là phát hiện các vấn đề bảo mật và đảm bảo rằng hệ thống có thể bảo vệ thông tin quan trọng khỏi các cuộc tấn công, xâm nhập, hoặc thao tác trái phép.
Kiểm thử bảo mật bao gồm nhiều phương pháp, công cụ và kỹ thuật khác nhau để phát hiện các lỗ hổng và yếu điểm trong ứng dụng hoặc hệ thống.
1. Mục tiêu của kiểm thử bảo mật
- Phát hiện lỗ hổng bảo mật: Nhận diện các điểm yếu có thể bị kẻ tấn công khai thác (ví dụ: SQL Injection, Cross-Site Scripting)
- Đảm bảo tính toàn vẹn dữ liệu: Đảm bảo rằng dữ liệu không bị thay đổi hoặc giả mạo trong quá trình lưu trữ hoặc truyền tải
- Bảo vệ thông tin nhạy cảm: Đảm bảo rằng các thông tin như mật khẩu, thông tin thẻ tín dụng, hoặc dữ liệu cá nhân được bảo vệ một cách an toàn
- Xác thực và ủy quyền: Kiểm tra xem hệ thống có thực hiện đúng xác thực và kiểm tra quyền truy cập của người dùng hay không.
- Phát hiện lỗ hổng trong mã nguồn: Tìm ra các lỗi lập trình có thể dẫn đến các lỗ hổng bảo mật
2. Các loại kiểm thử bảo mật phổ biến
2.1 Kiểm thử Xác thực và Ủy quyền (Authentication & Authorization Testing)
- Xác thực đảm bảo rằng người dùng phải cung cấp thông tin đúng (ví dụ: mật khẩu) để truy cập vào hệ thống
- Ủy quyền đảm bảo rằng người dùng chỉ có thể truy cập vào các tài nguyên mà họ được phép
- Ví dụ: Kiểm tra nếu một người dùng không có quyền truy cập vào dữ liệu hoặc chức năng nào đó có thể truy cập được hoặc kiểm tra việc không thể sử dụng các quyền admin khi là người dùng bình thường.
2.2 Kiểm thử SQL Injection
- SQL Injection là một loại tấn công chèn mã SQL vào các truy vấn của ứng dụng để thao túng cơ sở dữ liệu => kiểm thử nhập chuỗi dữ liệu như ‘ OR 1=1 — để kiểm tra xem hệ thống có trả về kết quả bất thường không.
- Ví dụ: Tấn công vào trường nhập liệu của ứng dụng để thực hiện các câu lệnh SQL không mong muốn, truy xuất hoặc thay đổi dữ liệu mà người dùng không có quyền truy cập.
2.3 Kiểm thử Cross-Site Scripting (XSS)
- XSS là một loại tấn công chèn mã javascript độc hại vào trang web mà người dùng xem để đánh cắp thông tin hoặc thực hiện thay mặt người dùng => kiểm thử nhập mã <script>alert(“Hacked!”)</script> vào các trường tìm kiếm, bình luận xem nó có được thực thi không.
- Ví dụ: Chèn mã JavaScript vào các trường nhập liệu của ứng dụng và xem liệu mã đó có được thực thi không
2.4 Kiểm thử Cross-Site Request Forgery (CSRF)
- CSRF là một cuộc tấn công gửi yêu cầu từ trình duyệt, người dùng đăng nhập tới ứng dụng web mà không có sự đồng ý nào => kiểm tra xem liệu các yêu cầu mã thông báo CSRF hay không và liệu ứng dụng có bảo vệ chống lại cuộc tấn công này
- Ví dụ: kẻ tấn công gửi cho người dùng 1 liên kết và người dùng nhấp vào, liên kết sẽ gửi đến Post tới server và thay đổi mật khẩu khi không có sự đồng ý của người dùng
2.5 Kiểm thử bảo mật mạng (Network Security Testing)
- Kiểm tra độ an toàn mạng và các giao thức truyền tải dữ liệu (HTTP,FTP,…) để đảm bảo không có lỗ hổng nào để sử dụng
- Ví dụ: Kiểm tra kết nối hoặc các cổng mở không cần thiết trên server
2.6 Kiểm thử mật khẩu (Password Testing)
- Kiểm tra độ mạnh yếu của mật khẩu và phương thức mã khóa mật khẩu.
- Ví dụ: Kiểm tra hệ thống có yêu cầu mạnh(ví dụ: dài 8 ký tự, chữ hoa chữ thường, ký tự đặc biệt,…)
2.7 Kiểm thử Cấu hình không an toàn (Insecure Configuration Testing)
- Kiểm tra cấu hình hệ thống có được cấu hình đúng cách hay không
- Ví dụ: Kiểm tra các tài khoản mặc định của hệ thống như tài khoản admin, mật khẩu mặc định, quyền truy cập không hợp lý.
3. Các công Cụ kiểm thử phổ biến
- Burp SuiteOWASP ZAP (Zed Attack Proxy)
- Đây là một công cụ kiểm thử bảo mật mã nguồn giúp tìm kiếm lỗ hổng bảo mật trong ứng dụng, có tính năng Tấn công XSS, SQL injection, kiểm tra cấu hình bảo mật,…
- Burp Suite
- Đây là công cụ phát hiện các lỗ hổng, cung cấp tính năng như quét lỗ hổng tự động, tấn công XSS, SQL injection, và kiểm tra API
- Nessus
- Đây là công cụ giúp phát hiện các vấn đề bảo mật trong cả hệ thống mạng và ứng dụng, kiểm tra hàng nghìn lỗ hổng, hệ thống mạng, các dịch vụ và ứng dụng
4. Các phương pháp kiểm thử bảo mật
- Penetration Testing (PenTest)
-
- Là phương pháp mô phỏng hacker tấn công vào lỗ hổng hệ thống
- Static Application Security Testing (SAST)
-
- Là phương pháp tra mã nguồn ứng dụng để tìm lỗ hổng
- Dynamic Application Security Testing (DAST)
-
- Là phương pháp pháp bảo mật ứng dụng trong khi ứng dụng chạy=> giúp lỗ hổng bảo mật trong thời gian thực
- Security Audits
-
- Là quá trình kiểm tra mã nguồn, cấu hình hệ thống, và các chính sách bảo mật để xác định các vấn đề bảo mật và thực hiện các biện pháp khắc phục
Kết Luận
Security Testing đóng vai trò quan trọng trong việc đảm bảo hệ thống, ứng dụng hoặc API của bạn không bị tấn công hoặc khai thác bởi các đối tượng xấu. Trong loại kiểm thử này, tester sẽ đóng vai trò của hacker và khai thác các lỗ hổng có thể có xung quanh hệ thống để tìm các lỗi liên quan đến bảo mật để đảm bảo an toàn cho hệ thống.