Web Application Security Testing
Security testing - Kiểm thử bảo mật là một trong những loại quan trọng nhất của kiểm thử phần mềm. Mục tiêu chính của kiểm thử bảo mật là để tìm 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 bảo vệ từ các yếu tố có thể xâm nhập. Kiểm thử bảo mật cho phép xác định các dữ liệu ...
Security testing - Kiểm thử bảo mật là một trong những loại quan trọng nhất của kiểm thử phần mềm. Mục tiêu chính của kiểm thử bảo mật là để tìm 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 bảo vệ từ các yếu tố có thể xâm nhập. Kiểm thử bảo mật cho phép xác định các dữ liệu bí mật vẫn bí mật hay không.
Ngày nay, giao dịch trực tuyến của một ngày đang gia tăng nhanh chóng, vì vậy kiểm thử bảo mật trên ứng dụng web là một trong những điều quan trọng nhất cần được thực hiện trong khi thử nghiệm các ứng dụng web. Việc kiểm thử bảo mật phải được thực hiện một khi hệ thống được phát triển và cài đặt. Để xác định các lỗ hổng các thử nghiệm an ninh mạng cần phải được thực hiện theo định kỳ.
Ví dụ về các lỗ hổng bảo mật trong một ứng dụng:
- Một trung tâm thương mại trực tuyến không đảm bảo được an ninh chút nào nếu chi tiết về thẻ tín dụng của khách hàng không được mã hóa.
- Một phần mềm tùy chỉnh có bảo mật không đạt nếu một truy vấn SQL có thể truy xuất ra mật khẩu của những người sử dụng nó.
Dưới đây là 7 thuộc tính của Kiểm thử bảo mật:
- Authentication
- Authorization
- Confidentiality
- Availability
- Integrity
- Non-repudiation
- Resilience
Biểu đồ ở bên dưới được tạo bởi Web Hacking Incident Database for 2011 (WHID), rõ ràng cho thấy rất nhiều phương pháp tấn công khác nhau đang tồn tại, trong đó SQL injection và XSS là phổ biến nhất.
6 điều cơ bản về sử dụng trong kiểm thử bảo mật
Dưới đây là các thuật ngữ hữu ích thường được sử dụng trong thử nghiệm mức độ nghiêm trọng:
-
What is “Penetration Testing”? - Kiểm tra xâm nhập là gì?
Kiểm tra xâm nhập là một loại quá trình thử nghiệm để xác định các lỗ hổng bảo mật trong một ứng dụng bằng cách đánh giá các hệ thống hoặc mạng với nhiều kỹ thuật khác nhau. Mục đích chính của thử nghiệm này là để bảo vệ các lỗ hổng được xác định và bảo mật dữ liệu quan trọng từ những người không có quyền truy cập vào hệ thống như tin tặc. Các thử nghiệm thâm nhập có thể được thực hiện sau khi thận trọng xem xét, thông báo và lập kế hoạch. Có hai loại thử nghiệm xâm nhập, White box testing - Kiểm thử hộp trắng & Black box testing - Kiểm thử hộp đen. Trong kiểm thử hộp trắng, mọi thông tin như địa chỉ IP, mã, sơ đồ cấu trúc..., dựa trên các thông tin có sẵn tester sẽ thực hiện các thử nghiệm. Trong thử nghiệm hộp đen, tester sẽ không có bất kỳ thông tin nào của hệ thống. Đây là phương pháp kiểm tra chính xác hơn khi chúng ta đang mô phỏng thử nghiệm với tin tặc thực sự mà họ không có bất cứ thông tin gì của hệ thống hiện có.
-
Password cracking - Bẻ mật khẩu
Trong kiểm tra bảo mật của chương trình cracking password trên một ứng dụng web có thể được sử dụng để xác định mật khẩu yếu. Nó có thể bắt đầu sử dụng đoán tên người dùng và mật khẩu hoặc sử dụng các công cụ bẻ mật khẩu thông thường. Password cracking xác nhận rằng người dùng đang sử dụng những mật khẩu đủ mạnh.
Trong hệ thống thì mật khẩu thường được lưu trữ trong các định dạng mã hóa như hash, do đó khi người dùng đăng nhập thì hash được tạo ra cho mật khẩu mới nhập vào và so sánh với hash được lưu trữ ban đầu, nếu khớp nhau thì người dùng được xác thực. Automated Password cracking về cơ bản là tạo ra các hash ngẫu nhiên cho đến khi khớp mật khẩu. Phương pháp phổ biến nhất là sử dụng các hash trong một thư viện có sẵn và thử tất cả các từ trong từ điển đấy.
Sẽ dễ dàng hơn nếu mật khẩu không yêu cầu phải là mật khẩu phức tạp như mật khẩu phải có ít nhất một chữ số, một ký tự hoặc một ký tự đặc biệt vv Đôi khi các mật khẩu được lưu trữ trên các tập tin cookie, nếu thông tin đăng nhập đã được lưu trữ mà không được mã hóa trên các tập tin cookie thì hoàn toàn hacker có thể sử dụng các phương pháp khác nhau để có được những thông tin đăng nhập đó.
-
What is “Vulnerability”? - Lỗ hổng là gì?
Các lỗ hổng là một điểm yếu trong hệ thống mà có thể gây ra các cuộc tấn công nguy hiểm từ bên ngoài. Lỗ hổng này có thể tăng lên do bug trong phần mềm, bị lack các kiểm tra bảo mật hoặc virus vv . Những lỗ hổng bảo mật yêu cầu các bản vá lỗi, hoặc sửa lỗi, để ngăn chặn khả năng toàn vẹn tổn hại bởi các tin tặc hoặc phần mềm độc hại.
-
What is “URL manipulation”? - Thao tác URL là gì?
URL manipulation là loại tấn công phổ biến của tin tặc. Tin tặc sẽ thao tác truy vấn URL của trang web và nắm bắt những thông tin quan trọng.
Điều này xảy ra khi các ứng dụng sử dụng các phương thức GET HTTP để truyền thông tin giữa client and the server. Các thông tin được truyền qua các parameters trong chuỗi truy vấn. Tester có thể sửa đổi giá trị trong các chuỗi truy vấn để kiểm tra xem máy chủ chấp nhận hay không.
Trong testcase kiểm thử bảo mật thì trường hợp thao tác URL cần được xem xét để đảm bảo rằng việc sử dụng các thao tác URL là không thể truy cập các thông tin quan trọng hoặc không làm hư cơ sở dữ liệu.
-
What is “SQL injection”?
SQL Injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject và thi hành các câu lệnh SQL bất hợp pháp. SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,… trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase...
Để kiểm tra sql injection chúng ta phải kiểm tra kỹ lưỡng các trường nhập dữ liệu như textbox, text area, vv . Các ký tự đặc biệt cũng phải được xử lý đúng cách hoặc bị chặn ngay từ đầu vào.
-
Cross Site Scripting (XSS)
Cross Site Scripting (XSS) là lỗ hổng bảo mật thường thấy trong các ứng dụng web, cho phép hacker chèn những đoạn script độc hại (thông thường là javascript hoặc HTML) vào website và sẽ được thực thi ở phía người dùng (trong trình duyệt của người dùng). Đối với XSS, người bị tấn công là người dùng chứ không phải website, hacker có thể dùng XSS để gửi những đoạn script độc hại tới một người dùng bất kỳ, và trình duyệt của người dùng sẽ thực thi những đoạn script đó và gửi về cho hacker những thông tin của người dùng thông qua email hoặc server do hacker định sẵn từ trước.
Thực hiện kiểm thử bảo mật
Dưới đây là các bước chuẩn bị và lên kế hoạch kiểm thử bảo mật:
- Bước đầu tiên là phải hiểu được nghiệm vụ hệ thống, mục tiêu bảo mật và tuân thủ bảo mật của tổ chức. Việc lập kế hoạch kiểm tra nên xem xét tất cả các yếu tố bảo mật.
- Thu thập tất cả các thông tin thiết lập hệ thống được sử dụng để phát triển phần mềm và mạng giống như hệ điều hành, công nghệ, phần cứng.
- Check list các lỗ hổng và rủi ro bảo mật, chuẩn bị kế hoạch kiểm tra để giải quyết những vấn đề này
- Đối với mỗi mối đe dọa được xác định, lỗ hổng và rủi ro bảo mật chuẩn bị Traceability Matrix.
- Tất cả các thử nghiệm bảo mật có thể không thể thực hiện bằng tay, do đó xác định các công cụ để thực hiện tất cả các trường hợp kiểm tra bảo mật nhanh hơn và đáng tin cậy hơn.
- Chuẩn bị các testcase kiểm tra bảo mật.
- Thực hiện test các testcase đó và retest các bug đã được sửa.
- Thực hiện test tích hợp.
- Chuẩn bị báo cáo chi tiết về kiểm tra bảo mật, trong đó có lỗ hổng bảo mật và các mối đe dọa, rủi ro chi tiết, và các vấn đề bảo mật khác.
Nguồn tham khảo và dịch từ: http://www.softwaretestingclass.com/security-testing-approach-for-web-application-testing/