CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ BẢO MẬT VÀ VẤN ĐỀ KIỂM THỬ TRÊN MICROSERVICES Trong lĩnh vực phát triển phần mềm, kiểm thử bảo mật là một phần quan trọng để đảm bảo tính đúng đắn và đáng tin cậy của ứng dụng. Nó giúp bảo vệ những thông tin quan trọng, ngăn chặn những truy cập trái phép và tấn công vào hệ thống. Tuy nhiên, kiểm thử bảo mật trên microservices đang đặt ra một số thách thức mới đối với các nhà phát triển. Chương này sẽ cung cấp một cái nhìn tổng quan về kiểm thử bảo mật và vấn đề kiểm thử bảo mật trên microservices.
Tổng quan về kiểm thử bảo mật 1. Khái niệm kiểm thử bảo mật Kiểm thử bảo mật là một loại kiểm thử phần mềm, là quá trình đánh giá tính bảo mật của một hệ thống hoặc ứng dụng bằng cách xác định và đánh giá các lỗ hổng và mối đe dọa tiềm ẩn. Mục tiêu lớn nhất là để đảm bảo rằng ứng dụng và hệ thống không bị truy cập trái phép, đánh cắp dữ liệu, có thể chống được các cuộc tấn công hoặc các vi phạm bảo mật khác. Kiểm thử bảo mật giúp xác định các mối đe dọa trong hệ thống và đo lường các lỗ hổng tiềm ẩn của nó, để hệ thống không ngừng hoạt động hoặc bị khai thác.
Nó cũng giúp phát hiện tất cả các rủi ro bảo mật có thể có trong hệ thống và giúp các nhà phát triển khắc phục các sự cố này thông qua mã hóa. Kiểm thử bảo mật có thể được thực hiện ở nhiều giai đoạn khác nhau của 1 vòng đời phát triển phần mềm, các giai đoạn này bao gồm giai đoạn thu thập yêu cầu, thiết kế, mã hóa và thử nghiệm. Việc này cũng có thể được thực hiện theo định kì sau khi hệ thống hoặc ứng dụng đã được triển khai để có thể đảm bảo rằng tất cả đều được an toàn. Tầm quan trọng của kiểm thử bảo mật Kiểm thử bảo mật là một quy trình quan trọng của quá trình phát triển phần mềm giúp đảm bảo tính bảo mật của phần mềm, ứng dụng, hệ thống.
Với số lượng ngày càng tăng của các mối đe dọa an ninh mạng, kiểm thử bảo mật đã trở nên quan trọng hơn bao giờ hết. Lợi ích chính của kiểm thử bảo mật là phát hiện các lỗ hổng và điểm yếu trong hệ thống hoặc ứng dụng một cách kịp thời, trước khi chúng bị kẻ tấn công khai thác. Điều này giúp cho các tổ chức có thể giảm thiểu các rủi ro rò rỉ dữ liệu, bảo vệ các dữ liệu nhạy cảm và duy trì được lòng tin của khách hàng. Việc kiểm thử bảo mật cũng giúp các tổ chức đáp ứng các yêu cầu tuân thủ quy định, điều này có thể rất quan trọng đối với các ngành như chăm sóc sức khỏe, tài chính, chính phủ.
Các quy định tuân thủ yêu cầu các tổ chức thực hiện các biện 1 pháp thích hợp nhằm bảo mật hệ thống và dữ liệu, và kiểm thử bảo mật là một phần cần thiết để đáp ứng các yêu cầu đó. Một lợi ích khác đó là giúp giảm thiểu chi phí phát triển phần mềm. Bằng việc xác định sớm các lỗ hổng bảo mật trong chu kỳ phát triển, các tổ chức sẽ không cần tốn kém tiền bạc và thời gian để làm lại, bên cạnh đó là các thiệt hại pháp lý hoặc uy tín tiềm ẩn do vi phạm dữ liệu. Cuối cùng, kiểm thử bảo mật giúp các tổ chức cải thiện tình trạng bảo mật tổng thể của họ.
Bằng cách liên tục kiểm thử và cải thiện hệ thống của mình, các tổ chức có thể vượt qua các mối đe dọa mới nổi và duy trì khả năng phòng thủ mạnh mẽ trước các cuộc tấn công mạng. Tóm lại, kiểm tra bảo mật là điều cần thiết để bảo vệ dữ liệu nhạy cảm, đáp ứng các yêu cầu quy định, giảm chi phí phát triển và cải thiện tình hình bảo mật tổng thể. Khi các mối đe dọa mạng tiếp tục phát triển, các tổ chức phải ưu tiên kiểm tra bảo mật để đảm bảo an toàn và bảo mật cho hệ thống và dữ liệu của họ. Bảo mật dữ liệu và an ninh mạng rất quan trọng trong thế giới ngày nay vì ngày càng có nhiều thông tin nhạy cảm được lưu trữ và truyền bằng kỹ thuật số, có thể bị tội phạm mạng truy cập và khai thác, có khả năng gây hại đáng kể cho các cá nhân, tổ chức và toàn xã hội.
Các kỹ thuật kiểm thử bảo mật Fuzz testing Fuzz testing (fuzzing) là kỹ thuật được dùng trong kiểm thử phần mềm, bằng cách gửi dữ liệu ngẫu nhiên không mong muốn đến hệ thống hoặc ứng dụng để tìm các lỗ hổng bảo mật và lỗi lập trình. Để thực hiện fuzz testing có thể dùng các công cụ tự động để tạo và gửi một dữ liệu lớn đến phần mềm đang thực nghiệm. Các input có thể là ngẫu nhiên hoặc biến đổi một cách có hệ thống từ các input có sẵn. Mục đích là để kiểm tra tính mạnh mẽ của phần mềm đối với những dữ liệu đầu vào không mong muốn hoặc không hợp lệ mà phần mềm có thể nhận được trong thực tế.
Mục tiêu của fuzz testing là xác định các lỗ hổng như tràn bộ đệm, ngoại lệ chưa được xử lý và các lỗi khác có thể bị kẻ tấn công khai thác. Bằng cách kiểm tra cách hệ thống phản ứng với đầu vào không mong muốn, có thể nhìn ra được những điểm yếu mà các phương pháp khác không thể chỉ ra được. Injection testing Injection testing là kỹ thuật được sử dụng để tìm ra các lỗ hổng liên quan đến việc xác thực đầu vào. Kỹ thuật này được thiết kế để xác định và khai thác lỗ hổng cho phép kẻ tấn công đưa mã độc hoặc lệnh vào hệ thống thông qua các ô tìm kiếm, biểu mẫu đăng nhập hoặc tham số truy vấn cơ sở dữ liệu.
2 Injection testing có nhiều kiểu khác nhau, bao gồm SQL injection, kịch bản chéo trang (XSS) và tiêm lệnh. SQL injection là kỹ thuật cho phép kẻ tấn công chèn mã SQL vào các trường nhập liệu trong hệ thống và có thể trích xuất hoặc sửa đổi dữ liệu nhạy cảm được lưu trữ trong cơ sở dữ liệu. Các cuộc tấn công XSS liên quan đến việc đưa các tập lệnh độc hại hoặc các đoạn mã độc vào bên trong trang web, điều này cho phép kẻ tấn công đánh cắp thông tin đăng nhập của người dùng hoặc kiểm soát tài khoản người dùng. Các cuộc tấn công chèn lệnh liên quan đến việc đưa mã độc hại vào các lệnh hoặc tập lệnh được thực thi bởi hệ thống, điều này có thể cho phép kẻ tấn công thực thi các lệnh tùy ý trên hệ thống.
Để thực hiện injection testing, tester phải sử dụng nhiều công cụ và kỹ thuật khác nhau để cố gắng đưa được mã độc vào trong ứng dụng hoặc hệ thống thông qua các trường nhập liệu. Mục tiêu là xác định các lỗ hổng cho phép tiêm mã và kiểm tra cách mà hệ thống phản ứng với mã vừa được chèn. Kiểm tra quyền truy cập ứng dụng Đa số các ứng dụng hoặc trang web đều có phần quyền truy cập vào từng chức năng, module trên ứng dụng, trang web. Vì vậy chúng ta cần kiểm tra xem quyền truy cập của các user có đúng hay không.
Ví dụ: Cần kiểm tra một user bình thường thì không thể vào được trang admin của trang web. Một số thử nghiệm truy cập ứng dụng bao gồm kiểm tra các quy tắc chất lượng mật khẩu, kiểm tra đăng nhập mặc định, kiểm tra khôi phục mật khẩu, kiểm tra captcha, kiểm tra chức năng đăng xuất, kiểm tra thay đổi mật khẩu, kiểm tra câu hỏi/câu trả lời bảo mật. Tương tự, một số thử nghiệm ủy quyền bao gồm thử nghiệm tìm đường dẫn, thử nghiệm cho phép thiếu, thử nghiệm cho các vấn đề kiểm soát truy cập ngang. Kiểm thử xác thực Kiểm thử xác thực được thiết kế để kiểm tra các cơ chế xác thực được sử dụng bởi ứng dụng hoặc hệ thống nhằm đảm bảo rằng chúng an toàn và không dễ bị tấn công.
Xác thực là quá trình xác minh danh tính của người dùng hoặc thiết bị đang cố truy cập vào hệ thống hoặc ứng dụng. Kiểm thử xác thực liên quan đến việc kiểm tra các thành phần khác nhau của quy trình xác thực bao gồm giao diện đăng nhập, cơ chế lưu trữ mật khẩu và quản lý phiên, để xác định bất kỳ lỗ hổng hoặc điểm yếu nào có thể bị kẻ tấn công khai thác 3 Kiểm thử xác thực có liên quan đến nhiều kỹ thuật khác nhau: kỹ thuật bẻ khóa mật khẩu, tấn công vét cạn (Brute Force Attack), chiếm quyền điều khiển, … Mục tiêu là xác định và giải quyết các lỗ hổng như mật khẩu yếu, thông tin đăng nhập không được mã hóa, quản lý phiên không an toàn làm cho kẻ tấn công có thể truy cập trái phép vào hệ thống hoặc ứng dụng bất kỳ lúc nào. Cụ thể hơn về tấn công vét cạn hay còn được gọi là Brute Force Attack: - Đây là phương pháp thử đoán mật khẩu hoặc khóa mã hóa nhằm giành quyền truy cập trái phép vào hệ thống hoặc ứng dụng. - Các cuộc tấn công vét cạn hoạt động bằng cách thử mọi tổ hợp ký tự có thể có cho đến khi tìm thấy mật khẩu hoặc khóa chính xác.
Đây có thể là một quá trình rất tốn thời gian, nhưng có thể thành công nếu mật khẩu hoặc khóa yếu hoặc dễ đoán. - Có nhiều loại tấn công vét cạn khác nhau, bao gồm tấn công từ điển, sử dụng danh sách mật khẩu hoặc cụm từ phổ biến được xác định trước để đoán mật khẩu và tấn công kết hợp, kết hợp tấn công từ điển với các ký tự hoặc ký hiệu bổ sung để tạo không gian tìm kiếm lớn hơn. Với việc kiểm thử xác thực kỹ, các tổ chức có thể đảm bảo rằng hệ thống và ứng dụng sẽ được bảo mật và chỉ những người được ủy quyền mới có thể truy cập và lấy thông tin. Kiểm thử xác thực là một phần quan trọng của kiểm thử bảo mật tổng thể và thường được sử dụng trong các ngành phát triển phần mềm, an ninh mạng và đảm bảo chất lượng.
Kiểm tra quản lý phiên Đây là một loại kiểm thử được thiết kế để kiểm tra các cơ chế được sử dụng bởi hệ thống hoặc ứng dụng để quản lý phiên của người dùng. Một phiên là khoảng thời gian mà người dùng tương tác với hệ thống hoặc ứng dụng. Quản lý phiên là quá trình quản lý và duy trì trạng thái phiên của người dùng, bao gồm xác thực, ủy quyền và kiểm soát truy cập.