Giới thiệu về Security Testing

1. Đặt vấn đề

Trong thời buổi công nghệ số phát triển ngày một mạnh mẽ như hiện nay,rất nhiều công việc của con người đều sử dụng nền tảng Internet. Nó đem đến cho người sử dụng rất nhiều tiện ích, nhưng đi kèm là những rủi ro vô cùng lớn, trong đó phải kể đến rủi ro về bảo mật, nhất là khi lượng dữ liệu về người dùng ngày một lớn. Đã có rất nhiều trường hợp rò rỉ thông tin của người sử dụng, kể cả những hệ thống lớn tưởng chừng như đã được bảo mật kĩ càng, dẫn đến hậu quả vô cùng to lớn. Do vậy, việc đảm bảo tính bảo mật của ứng dụng đang ngày càng trở nên quan trọng và bởi vậy, Security Testing cũng là một trong những phần không thể thiếu trong kiểm thử phần mềm.

2. Security Testing là gì?

Vậy Security Testing là gì? Security Testing - kiểm thử bảo mật là hoạt động nhằm tìm ra các lỗ hổng của hệ thống và xác định rằng dữ liệu và tài nguyên của hệ thống được bảo vệ khỏi những rủi ro về bảo mật có thể xảy ra. Kiểm thử bảo mật giúp xác định các mối đe dọa tiềm ẩn của hệ thống, phát hiện các nguy cơ bảo mật có thể có để đội phát triển phần mềm cải thiện và khắc phục.

2.1. Các nguyên tắc cơ bản của kiểm thử bảo mật

Có 7 nguyên tắc cơ bản trong kiểm thử bảo mật như sau:

Authentication: Tính chứng thực

Authorization: Tính định danh

Confidentiality: Tính bảo mật

Availability: Tính khả dụng

Integrity: Tính toàn vẹn

Non-repudiation: Tính không bác bỏ

Resilience: Khả năng phục hồi

2.2. Quy trình kiểm thử bảo mật

1. Vulnerable Scanning - Rà soát các lỗ hổng tiềm ẩn: thực hiện thông qua các phần mềm để tự động scan một hệ thống nhằm phát hiện ra các lỗ hổng dựa trên các signatures đã biết.

2. Security Scanning - Rà soát các điểm yếu của hệ thống : bao gồm việc xác định các điểm yếu của mạng và hệ thống, sau đó cung cấp các giải pháp nhằm giảm thiểu các rủi ro này. Có thể thực hiện bằng thủ công hoặc tự động.

3. Penetration testing - Kiểm thử thâm nhập: Đây là loại kiểm thử mô phỏng cuộc tấn công từ phía một hacker thiếu thiện ý. Kiểm thử bao gồm việc phân tích một hệ thống cụ thể, tìm ra các lỗ hổng tiềm ẩn bằng cách tấn công từ bên ngoài.

4. Risk Assessment - Đánh giá rủi ro: Kiểm thử này liên quan đến phân tích các rủi ro bảo mật nhận thấy được. Các rủi ro được phân loại là Low, Medium, High. Loại kiểm thử này đưa ra các khuyến nghị nhằm giảm thiểu các rủi ro.

5. Security Auditing - Kiểm toán an ninh : Kiểm tra bảo mật nội bộ ứng dụng và OS.

6. Ethical hacking - Tấn công vào hệ thống tìm các điểm yếu bảo mật: Các hacker thiện ý thực hiện phương pháp tương tự như những kẻ tấn công “thiếu thiện ý”, với mục tiêu tìm kiếm các điểm yếu bảo mật và xác định cách thức để thâm nhập vào mục tiêu, nhằm đánh giá mức độ thiệt hại do các lổ hỗng này gây ra, từ đó đưa ra cảnh báo cùng những phương án gia cố, kiện toàn bảo mật thích hợp.

7. Posture assessment: Kết hợp Security Scanning, Ethical hacking và Risk Assessment đánh giá bảo mật tổng thể một tổ chức.

3. Kiểm thử bảo mật trong vòng đời phát triển phần mềm (SDLC)

Giai đoạn Quy trình bảo mật
Requirement Phân tích bảo mật cho các yêu cầu và kiểm tra tình trạng lạm dụng / trường hợp sử dụng sai
Plan Phân tích rủi ro bảo mật trong giai đoạn thiết kế. Phát triển test plan có bao gồm Security test trong đó
Coding & Unit Testing Static and Dynamic Testing & Security White Box Testing
Integration Testing Blackbox Testing
System Testing Black Box Testing & Vulnerability scanning
Implementation Penetration Testing, Vulnerability Scanning
Maintainance Phân tích tác động của các bản vá lỗi

4. Một số kĩ thuật kiểm thử bảo mật

Penetration testing (Kiểm thử thâm nhập)

Được thực hiện bằng cách tấn công vào hệ thống nhằm tìm ra các lỗ hổng có thể khai thác. Có 2 loại:

White box Testing: Người kiểm thử thực hiện test dựa trên thông tin nội bộ được khách hàng cung cấp như Địa chỉ IP, Code & Sơ đồ cấu trúc của hệ thống

Black box Testing: Tester không có bất kì thông tin nào về hệ thống đang thử nghiệm. Cách này có thể đạt được độ chính xác cao hơn do chúng ta đang mô phỏng lại thử nghiệm giống như tin tặc không có thông tin về hệ thống

Password cracking (Bẻ khóa mật khẩu)

Các chương trình bẻ khóa mật khẩu có thể được sử dụng để xác định các mật khẩu yếu. Với mật khẩu dễ đoán (như kiểu 123456, ngày sinh…) thì đều là mồi ngon cho hacker. Do đó tester cần kiểm thử bảo mật các module liên quan mật khẩu như đăng ký, đổi pass, quên pass… Qua đó đảm bảo hệ thống chỉ cho phép đặt mật khẩu phức tạp (bao gồm chữ, số, ký tự đặc biệt, độ dài tối thiểu…).

Ngoài ra một số hệ thống lưu trữ user/pass trong cookies thì việc của tester là kiểm tra xem các cookies này đã được mã hóa hay chưa?

Security Scanning & Vulnerability Scanning

Dùng một số công cụ để quét lỗ hổng bảo mật trên ứng dụng web, OS hay mạng lưới

Một số công cụ quét lỗ hổng phổ biến: Owasp, Wireshark, Nessus,...

SQL Injection

Tester thực hiện kiểm tra SQL Injection trên tất cả các tính năng nhập thông tin từ textbox. Đảm bảo sử dụng các dấu đặc thù sẽ bị từ chối như nháy đơn, chấm phẩy, ngoặc đơn, ngoặc kép, các biểu thức luôn đúng,... Kiểm tra trong database đảm bảo việc lưu trữ các dữ liệu này đều đã được xử lý sơ bộ.

Cross Site Scripting (XSS):

Tester cần thực hiện kiểm tra việc lọc đầu vào có được áp dụng với tất cả các loại dữ liệu nhập vào chưa (Textbox, URL…). Đảm bảo loại bỏ toàn bộ các nội dung không hợp lệ, như các thẻ HTML hoặc thẻ SCRIPT. Đồng thời kiểm tra cả các ký tự đặc biệt : dấu nháy đơn, dấu lớn hơn (>), dấu nhỏ hơn (<)

URL manipulation through HTTP GET methods

Sau khi xác định được các modude sử dụng giao thức HTTP GET, Tester thực hiện kiểm tra các chức năng có tính năng submit xem có gửi thông tin quan trọng trong đường dẫn URL không.

Risk Assessment

Kỹ thuật này đánh giá rủi ro và lỗ hổng tiềm ẩn hầu như dựa trên kinh nghiệm của các chuyên gia bảo mật là chính.

Tham khảo: https://www.guru99.com/what-is-security-testing.html https://www.softwaretestingclass.com/security-testing/


All Rights Reserved