...
Các lỗ hổng bảo mật thường gặp
Missing function level access control (lỗi phân quyền)
Với lỗ hổng này, tester cần test xem tất cả các phân quyền đã được thực hiện đúng. Đưa ra 2 câu hỏi để thực hiện test:
Authentication: Gồm những roles nào? (who you are?)
Authorization: Các hành động mà role được thực hiện (What you can do?)
Ngoài 2 ý trên, thì lỗ hổng này cũng bao gồm:
Authentication
Test rule password
Test Default login
Test password recovery
Test capcha
Test Logout
Test Change password
Test security question/answer
Authorization
Test case kiểm soát truy cập dọc và truy cập ngang, trong đó:
Truy cập ngang là cơ chế ngăn chặn truy cập vào tài nguyên không được cho phép
Ví dụ: chỉ xem được những doc do mình tạo, sửa thông trên đường link để truy cập của người khác (1 số thông tin có thể đổi như: ID)
Truy cập dọc là cơ chế quản lý truy cập tới các chức năng (nhóm người dùng khác nhau thì chức năng sẽ khác nhau)
Ví dụ: Truy cập đường link không thuộc phân quyền
Test các case mà acc không có phân quyền
Test các case quản lý truy cập dựa vào trạng thái của đối tượng tương tác
Ví dụ: Đơn hàng đã hủy chỉ “Admin” mới được đưa về Đơn chờ duyệt
Data Protection
Khía cạnh trong Data Protection
User truy cập đúng các tài nguyên mà họ được phép truy cập (như truy cập trên ngang ở loại Lỗi phân quyền)
Dữ liệu dưới DB được lưu trữ như thế nào? Các thông tin quan trọng có được mã hóa không?
Mật khẩu, Tài khoản ngân hàng… có được mã hóa?
Tấn công bằng SQL Injection có xảy ra vấn đề gì không?
Các thay đổi về dữ liệu có được lưu vết (audit log)?
Bản backup dữ liệu có bị lộ? => Mã hóa và kiểm tra dữ liệu của production, sao lưu dữ liệu để bảo mật dữ liệu
Cấu hình DB có đúng không? => Chú ý việc cài đặt tài khoản giống như tài khoản mặc định
Tấn công bằng DoS xảy ra vấn đề gì?
=> Tester cần thực hiện test ở các tầng: Business Layer, Access layer, UI layer
Các kỹ thuật kiểm tra bảo mật DB
Penetration Testing (Kiểm tra xâm nhập)
Dựa vào các lỗ hổng tìm được để tấn công → Dữ liệu có bị mất hay thay đổi?
Risk Assessment (Đánh giá rủi ro)
Đánh giá và phân tích các rủi ro liên quan đến kiểu cấu hình bảo mật dữ liệu được triển khai → Chuyên gia thực hiện các đánh giá này
SQL Injection Validation
Sử dụng các câu lệnh SQL để kiểm tra sự toàn vẹn của dữ liệu
Password Cracking
Kiểm tra các chính sách validate mật khẩu
Security Audit
Chính sách thực hiện bảo mật dữ liệu
Áp dụng các biện pháp bảo mật thích hợp: mã hóa pass khi lưu, các chính sách đặt pass, …
Tester cần thực hiện:
Query các thông tin đã được mã hóa dưới DB xem hiển thị như thế nào (Ví dụ: query Mật khẩu, Số tài khoản, …)
Verify dữ liệu đã được transmitted chưa?
Ví dụ: copy mật khẩu của ứng dụng, mở ứng dụng trên trình duyệt khác và copy xem có thể login thành công hay không
Verify nếu thêm các ký tự space vào đầu/cuối password
Sử dụng các kỹ thuật để tìm lỗ hổng
Brute Force Attack
Kỹ thuật tấn công sử dụng phần mềm để crack mật khẩu nếu mật khẩu không đủ mạnh bằng cách xoay vòng các ký tự kết hợp với nhau để tạo ra được 1 mật khẩu đúng
Tester cần thực hiện:
Check cơ chế tạm ngưng tài khoản khi nhập sai quá x lần
Để test loại này, bạn có thể sử dụng tool auto test, random password có thể nhập
SQL Injection and XSS (Cross Site Scripting)
XSS: Kỹ thuật tấn công vào các trường dạng input, sử dụng các thẻ như: HTML, script để lấy được cookies của người dùng
SQL Injection: Kỹ thuật tấn công vào các trường dạng input, sử dụng các câu lệnh SQL để Thêm/Sửa/Xóa dữ liệu
Tester cần thực hiện:
Check maxlength all input field, đảm bảo max length được validate với mọi loại định dạng nhập vào (bao gồm html và script)
Check các ký tự đặc biệt