Ngành công nghiệp phần mềm đã đạt được những thành tựu rất lớn. Những năm gần đây, việc sử dụng các ứng dụng internet tại các Doanh nghiệp càng trở nên mạnh mẽ. Các hệ thống ERP (Enterprise resource planning – hoạch định nguồn lực doanh nghiệp) dựa trên web được ứng dụng phổ biến là dẫn chứng tốt nhất cho thấy CNTT đã trở thành cuộc cách mạng hóa toàn cầu.

Ngày này, các trang web không chỉ dành cho việc giới thiêu tin tức hoặc tiếp thị mà chúng đã được phát triển thành các công cụ mạnh mẽ hơn nhằm phục vụ mọi nhu cầu kinh doanh.

Các hệ thống xây dựng dựa trên web, các trung tâm mua sắm, dịch vụ ngân hàng, ứng dụng giao dịch chứng khoán không chỉ được các tổ chức sử dụng mà còn được xây dựng và bán dưới dạng sản phẩm. Điều này có nghĩa là các ứng dụng trực tuyến đã đạt được sự tin tưởng rất lớn của khách hàng và người dùng về sự tiện lợi, cùng với đó là sự an toàn. Do đó, thử nghiệm bảo mật là một yêu cầu rất cần thiết, không thể thiếu trong mọi sản phẩm


Trước khi đi vào nội dung chi tiết hơn tiên, ta nên hiểu một số khái niệm bảo mật là gì, Thử nghiệm bảo mật là ra sao?

Bảo mật (Security) là gì?
Bảo mật là các biện pháp an ninh được thiết lập để bảo vệ một ứng dụng chống lại các hành động không lường trước được khiến cho nó ngừng hoạt động hoặc bị khai thác sai mục đích. (Hành động không lường trước được có thể là cố tình hoặc không chủ ý)

Thử nghiệm bảo mật (Security testing) là gì?
Thử nghiệm bảo mật là một quá trình nhằm tìm ra các lỗ hổng trong các cơ chế bảo mật của hệ thống thông tin nhằm  bảo vệ dữ liệu và duy trì chức năng như yêu cầu được đề ra.

Do những hạn chế của thử nghiệm bảo mật, việc vượt qua được thử nghiệm bảo mật chưa hẳn đã đảm bảo không có lỗi nào đang tồn tại hoặc hệ thống đáp ứng đầy đủ các yêu cầu của bảo mật.

Các đặc tính của Thử nghiệm bảo mật

Tính bảo mật

Là biện pháp an ninh chống lại việc tiết lộ thông tin cho các bên khác với nơi sẽ được tiếp nhận, việc này không có nghĩa là cách duy nhất để đảm bảo an ninh.

Tính toàn vẹn

  • Tính toàn vẹn của thông tin đề cập đến việc bảo vệ thông tin không bị sửa đổi trái phép.
  • Đảm bảo rằng thông tin được cung cấp bởi hệ thống là chính xác.
  • Để kiểm tra được tính toàn vẹn thường sử dụng một số công nghệ cơ bản giống như các lược đồ bảo mật, liên quan đến việc thêm thông tin từ một giao diện, để tạo cơ sở kiểm tra thuật toán, thay vì mã hóa tất cả các giao tiếp. Để kiểm tra xem thông tin chính xác có được chuyển từ ứng dụng này sang ứng dụng khác hay không.

Tính xác thực

Điều này có thể liên quan đến việc xác nhận danh tính của một người, truy tìm nguồn gốc của một truy cập, đảm bảo rằng sản phẩm được đóng gói và ghi nhãn đúng là của nó, hoặc đảm bảo rằng chương trình máy tính là một chương trình đáng tin cậy.
Tính ủy quyền

Quá trình xác định rằng người yêu cầu được phép nhận dịch vụ hoặc thực hiện một thao tác nào đó. (Kiểm soát truy cập là một ví dụ về ủy quyền)

Tính thuận tiện

Đảm bảo các dịch vụ thông tin và truyền thông luôn sẵn sàng để sử dụng khi được yêu cầu. Thông tin phải được lưu giữ cho người được ủy quyền khi họ cần.

Không từ chối

Trong tham chiếu đến an ninh kỹ thuật số, không từ chối có nghĩa là để đảm bảo rằng một tin nhắn chuyển giao đã được gửi và nhận được bởi các bên tuyên bố: đã gửi và nhận được tin nhắn. Không từ chối là một cách để đảm bảo rằng người gửi thư không thể từ chối việc gửi thư và người nhận không thể từ chối nhận thư.

Phương pháp Thử nghiệm bảo mật
1. Khám phá
Mục đích của giai đoạn này là xác định phạm vi hệ thống và các dịch vụ đang sử dụng. Nó không có ý định phát hiện lỗ hổng, nhưng phát hiện phiên bản phần mềm hoặc phần mềm không được hỗ trợ. Do đó cho biết lỗ hổng tiềm ẩn.

2. Quét lỗ hổng

  • Theo giai đoạn khám phá, giai đoạn này sẽ tìm kiếm các vấn đề bảo mật đã biết bằng cách sử dụng các công cụ tự động phù hợp với các lỗ hổng đã biết.
  • Mức độ rủi ro được thiết lập tự động bởi công cụ không có xác minh hoặc thủ công bởi nhà cung cấp thử nghiệm. Việc này có thể được bổ sung bằng chức năng quét dựa trên thông tin xác thực nhằm loại bỏ một số thông báo không chính xác (thông qua sử dụng thông tin đăng nhập được cung cấp để xác thực- chẳng hạn như tài khoản).

3. Đánh giá tổn thất
Sử dụng tính năng quét tìm kiếm để xác định các lỗ hổng bảo mật và đặt các phát hiện tại bối cảnh của môi trường đang được kiểm tra. Việc này sẽ loại bỏ các kết quả giả khỏi báo cáo và quyết định các mức độ rủi ro cần được áp dụng cho mỗi phát hiện để cải thiện

4. Đánh giá an ninh
Xây dựng dựa trên Đánh giá tổn thất bằng cách thêm xác minh thủ công để xác nhận hiển thị, nhưng không bao gồm việc khai thác lỗ hổng để truy cập thêm. Việc xác minh có thể dưới dạng quyền truy cập được ủy quyền vào hệ thống để xác nhận cài đặt hệ thống và kiểm tra nhật ký, phản hồi hệ thống, thông báo lỗi, code, v.v.

5. Kiểm tra sự xâm nhập

  • Thử nghiệm thâm nhập mô phỏng một cuộc tấn công bởi một bên độc hại. Xây dựng trên các giai đoạn trước đó, liên quan đến việc khai thác các lỗ hổng đã tìm thấy để có thêm quyền truy cập. Sử dụng phương pháp này chính là cách thức của kẻ tấn công để có được quyền truy cập vào thông tin bí mật, ảnh hưởng đến tính toàn vẹn dữ liệu hoặc tính khả dụng của một dịch vụ và tác động tương ứng.
  • Mỗi bài kiểm tra được tiếp cận bằng cách sử dụng một phương pháp nhất quán và đầy đủ theo cách cho phép người thử nghiệm sử dụng khả năng giải quyết vấn đề của họ, dựa vào công cụ và kiến thức của họ về mạng và hệ thống để tìm lỗ hổng có thể hoặc không thể xác định được thông qua công cụ tư động. Cách tiếp cận này xem xét độ sâu của cuộc tấn công so với phương pháp đánh giá bảo mật dựa vào phạm vi

6. Kiểm tra an ninh
Được điều khiển bởi chức năng Kiểm tra hoặc Đánh giá Rủi ro để xem xét một vấn đề kiểm soát cụ thể. Loại kiểm tra này có thể sử dụng bất kỳ phương pháp nào đã được thảo luận trước đó (đánh giá tổn thất, đánh giá bảo mật, kiểm tra thâm nhập).

7. Đánh giá bảo mật
Xác minh rằng các tiêu chuẩn an ninh đã được áp dụng cho các thành phần hoặc sản phẩm của hệ thống. Điều này thường được hoàn thành thông qua phân tích khoảng cách và sử dụng các đánh giá xây dựng hoặc mã hoặc thông qua cách xem xét các tài liệu thiết kế và sơ đồ kiến trúc. Hoạt động này không sử dụng bất kỳ phương pháp nào trước đó

Một số kỹ thuật thử nghiệm bảo mật hiệu quả
1. Truy cập vào ứng dụng
Cho dù đó là ứng dụng dành cho máy tính để bàn hay một trang web, việc truy cập bảo mật được thực hiện thông qua “Vai trò” và “Quyền quản lý”.

Ví dụ: trong hệ thống quản lý bệnh viện, nhân viên tiếp tân ít quan tâm đến các xét nghiệm trong phòng thí nghiệm vì công việc của anh ấy là chỉ cần đăng ký bệnh nhân và lên lịch hẹn với bác sĩ. Vì vậy, tất cả các menu, biểu mẫu và màn hình liên quan đến các thử nghiệm trong phòng thí nghiệm sẽ không có sẵn cho Vai trò của “Nhân viên tiếp tân”. Do đó, việc thực hiện đúng vai trò và quyền sẽ đảm bảo tính bảo mật của truy cập.

Cách kiểm tra: Để kiểm tra điều này, cần thực hiện kiểm tra kỹ lưỡng tất cả các vai trò và quyền. Người thử nghiệm sẽ tạo một số tài khoản người dùng với nhiều vai trò khác nhau. Sau đó, sử dụng ứng dụng với sự trợ giúp của các tài khoản này và phải xác minh rằng mọi vai trò đều có quyền truy cập vào các mô-đun, màn hình, biểu mẫu và menu riêng của nó. Nếu người kiểm tra tìm thấy bất kỳ xung đột nào
Về cơ bản, với thử nghiệm này, bạn cần phải thử nghiệm việc “bạn là ai” và “Bạn có thể làm những gì” cho những người dùng khác biệt.

  • Một số nội dung kiểm tra xác thực bao gồm: kiểm tra 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 hoặc câu trả lời bảo mật, v.v.
  • Tương tự, một số kiểm tra ủy quyền bao gồm: thử nghiệm cho truyền tải đường dẫn, kiểm tra ủy quyền bị thiếu, kiểm tra các vấn đề kiểm soát truy cập ngang, v.v.

2. Bảo vệ dữ liệu
Có ba khía cạnh của bảo mật dữ liệu.

  • Đầu tiên là người dùng chỉ có thể xem hoặc sử dụng dữ liệu mà anh ta được sử dụng. Điều này cũng được đảm bảo bởi vai trò và quyền
  • Thứ hai là cách dữ liệu được lưu trữ trong DB. Tất cả các dữ liệu nhạy cảm phải được mã hóa để làm cho nó an toàn. Mã hóa phải mạnh mẽ, đặc biệt là đối với dữ liệu nhạy cảm như mật khẩu của tài khoản người dùng, số thẻ tín dụng hoặc thông tin quan trọng khác về kinh doanh.
  • Cuối cùng là các biện pháp an ninh thích hợp phải được áp dụng trong luồng của dữ liệu nhạy cảm hoặc nghiệp vụ quan trọng xảy ra. Cho dù dữ liệu này nối giữa các mô-đun khác nhau của cùng một ứng dụng hay được truyền đến các ứng dụng khác nhau, nó phải được mã hóa để giữ cho nó an toàn.

Cách kiểm tra bảo vệ dữ liệu:

  • Sử dụng trình kiểm tra sẽ truy vấn cơ sở dữ liệu (ví dụ MySQL, SQL, Oracle….) cho “mật khẩu” của tài khoản người dùng, thông tin thanh toán của khách hàng, dữ liệu quan trọng và kinh doanh khác và phải xác minh rằng tất cả dữ liệu đó được lưu dưới dạng mã hóa trong DB.
  • Tương tự phải xác minh rằng dữ liệu được truyền đi giữa các hình thức hoặc màn hình khác nhau chỉ sau khi mã hóa thích hợp.
  • Hơn nữa, người thử nghiệm phải đảm bảo rằng dữ liệu đã được mã hóa được giải mã chính xác tại đích đến.
  • Một điểu đặc biệt chú ý đến các hành động “gửi” khác nhau. Người thử nghiệm phải xác minh rằng khi thông tin được truyền giữa máy khách và máy chủ, nó sẽ không được hiển thị trong thanh địa chỉ của trình duyệt web ở định dạng dễ hiểu. Nếu bất kỳ xác minh nào không thành công thì ứng dụng chắc chắn có lỗ hổng bảo mật.
  • Một cách khác để kiểm tra bảo vệ dữ liệu là kiểm tra việc sử dụng thuật toán yếu. Ví dụ, vì HTTP là một giao thức văn bản rõ ràng, nếu các dữ liệu nhạy cảm như thông tin người dùng được truyền qua HTTP, thì đó là một mối đe dọa cho bảo mật ứng dụng. Thay vì HTTP, dữ liệu nhạy cảm sẽ được chuyển qua HTTPS (bảo mật thông qua SSL, đường hầm TLS). Tuy nhiên, HTTPS làm tăng bề mặt tấn công và do đó cần kiểm tra xem cấu hình máy chủ có phù hợp và hiệu lực chứng chỉ được đảm bảo hay không.

3. Tấn công Brute-Force
Brute Force Attack chủ yếu được thực hiện bởi một số công cụ phần mềm. Bằng cách sử dụng ID người dùng hợp lệ, phần mềm sẽ cố gắng đoán mật khẩu được liên kết bằng cách cố đăng nhập lại. Một ví dụ đơn giản về bảo mật chống lại tấn công như vậy là tạm ngưng tài khoản trong một khoảng thời gian ngắn vì tất cả các ứng dụng gửi thư như “Yahoo”, “gmail” và “Hotmail”… đều thực hiện. Nếu một số lần thử liên tiếp cụ thể (thường là 3 hoặc 5 lần) không đăng nhập thành công, thì tài khoản đó bị chặn trong một khoảng thời gian (30 phút đến 24 giờ).

Cách kiểm tra Brute-Force Attack:

  • Người kiểm tra phải xác minh rằng một số cơ chế tạm ngưng tài khoản có sẵn và đang hoạt động chính xác.
  • Bạn phải cố đăng nhập bằng ID người dùng và Mật khẩu không hợp lệ để đảm bảo rằng ứng dụng phần mềm chặn các tài khoản nếu các lần thử liên tục được thực hiện để đăng nhập bằng thông tin đăng nhập không hợp lệ. Nếu ứng dụng đang làm như vậy, nó là an toàn chống lại tấn công brute-force. Nếu không, lỗ hổng bảo mật này phải được thông báo để xử lý

4. SQL Injection và XSS (cross-site scripting)

  • Về mặt khái niệm, cả hai nỗ lực hack này là tương tự nhau. Trong cách tiếp cận này, tập lệnh độc hại được sử dụng bởi các tin tặc để thao túng một trang web.
  • Có một số cách để chống lại những nỗ lực đó như là đối với tất cả các trường nhập của trang web, độ dài trường phải được xác định đủ nhỏ để hạn chế đầu vào của bất kỳ tập lệnh nào

Làm thế nào để kiểm tra SQL Injection và XSS:

  • Tester phải đảm bảo rằng độ dài tối đa của tất cả các trường đầu vào được xác định và thực hiện.
  • Tiếp theo, cần đảm bảo rằng chiều dài được xác định của các mục đầu vào không chứa bất kỳ đầu vào dạng kịch bản (script) cũng như thẻ (tag). Về cơ bản, thử nghiệm SQL Injection có thể được thực hiện thông qua năm cách sau đây: -Kỹ thuật phát hiện -Các kỹ thuật tiêm SQL Injection chuẩn -Vân tay cơ sở dữ liệu -Kỹ thuật khai thác -Kỹ thuật SQL Injection Signature Invasion

5. Điểm truy cập dịch vụ (Sealed và Secure Open)

  • Ngày nay, các doanh nghiệp đang cộng tác với nhau để cùng hoạt động kinh doanh, cùng nắm giữ các ứng dụng có thể dùng chung, đặc biệt là các trang web.
  • Trong trường hợp này, cả hai bên nên xác định và đưa ra một số điểm truy cập chung cho nhau.
  • Đối với một số sản phẩm dựa trên web như giao dịch chứng khoán, mọi thứ không đơn giản và dễ dàng. Khi có số lượng lớn đối tượng mục tiêu, các điểm truy cập phải đủ open để tạo thuận lợi cho tất cả người dùng, đủ sức chứa để đáp ứng tất cả yêu cầu của người dùng và đủ an toàn để đối phó với bất kỳ bản dùng thử nào.

Cách kiểm tra các điểm truy cập dịch vụ:

  • Đảm bảo rằng tất cả truy cập mạng nội bộ, và từ mạng nội bộ vào ứng dụng là thông qua các ứng dụng, máy móc (IP) và người dùng đáng tin cậy.
  • Để xác minh rằng một điểm truy cập mở là đủ an toàn, người kiểm thử phải cố gắng truy cập nó từ các máy khác nhau có cả địa chỉ IP đáng tin cậy và không đáng tin cậy. Các loại giao dịch thời gian thực khác nhau nên được thử hàng loạt để có được sự đảm bảo tốt về hiệu suất của ứng dụng.
  • Với các ứng dụng nội bộ thì chỉ cho phép cả các yêu cầu liên lạc từ các IP và ứng dụng đáng tin cậy, trong khi tất cả các yêu cầu khác đều bị từ chối. Ngược lại với ứng dụng mở, thì trình kiểm tra phải đảm bảo rằng nó cho phép tải lên dữ liệu của người dùng một cách an toàn (nếu cần).

6. Quản lý phiên
Phiên web là một chuỗi các giao dịch yêu cầu và phản hồi HTTP được liên kết với cùng một người dùng. Kiểm thử quản lý phiên là kiểm tra cách quản lý phiên được xử lý trong ứng dụng web. Bạn có thể kiểm tra phiên sẽ hết hạn sau thời gian rảnh cụ thể, hay chấm dứt phiên sau khi hết thời gian, kết thúc phiên sau khi đăng xuất, kiểm tra phạm vi và thời lượng cookie phiên, kiểm tra xem một người dùng có thể có nhiều phiên đồng thời, v.v. anh6

7. Xử lý lỗi
Thử nghiệm để xử lý lỗi bao gồm

  • Kiểm tra mã lỗi: Ví dụ: kiểm tra yêu cầu hết thời gian 408, 400 yêu cầu không hợp lệ, 404 không tìm thấy, v.v. Để kiểm tra những điều này, bạn cần thực hiện một số yêu cầu cho trang sao cho các mã lỗi này được phản hồi. Các mã lỗi được trả về với một thông báo chi tiết. Các thông báo này không được chứa bất kỳ thông tin quan trọng nào có thể được sử dụng cho mục đích hacking
  • Kiểm tra các dấu vết ngăn xếp: Về cơ bản nó đưa ra một số đầu vào đặc biệt, để kiểm tra xem thông báo lỗi trả về có chứa các thông tin có lợi cho tin tặc hay ko

8. Các chức năng rủi ro cụ thể
Chủ yếu, hai chức năng dễ gặp rủi ro là thanh toán và tải lên tệp. Các chức năng này nên được kiểm tra rất kỹ.

  • Để tải tệp lên, chủ yếu kiểm tra xem có bất kỳ tệp nào được tải lên mà không mong muốn hoặc độc hại hay không.
  • Đối với các khoản thanh toán, bạn cần kiểm tra chủ yếu các lỗ hổng SQL Injection, lưu trữ mật mã không an toàn, tràn bộ đệm, đoán mật khẩu, v.v.