OWASP là gì? Top 10 lỗ hổng bảo mật web phổ biến theo chuẩn OWASP.

29-06-2023, 6:17 pm
OWASP là gì? Top 10 lỗ hổng bảo mật web phổ biến theo chuẩn OWASP.

OWASP là gì?

OWASP là một tiêu chuẩn toàn cầu để phục vụ việc kiểm thử xâm nhập – Penetration Testing (Pentest) được dễ dàng hơn. Tiêu chuẩn này được đề xuất bởi một tổ chức phi lợi nhuận: Open Web Application Security Project (OWASP).

Tiêu chuẩn OWASP giúp cho các chuyên gia kiểm thử (pentester) kiểm tra bảo mật cho website một cách chi tiết, hiệu quả

Lợi ích của Pentest theo chuẩn OWASP là gì?

Pentest theo chuẩn OWASP mang lại các lợi ích quan trọng cho doanh nghiệp, đặc biệt là những công ty phát triển ứng dụng web nội bộ và / hoặc sử dụng các ứng dụng chuyên dụng do bên thứ ba phát triển.

pentest giúp các doanh nghiệp:

  • Xác định và giải quyết các lỗ hổng trước khi hacker có cơ hội khai thác.
  • Giảm nguy cơ vi phạm dữ liệu cũng như thiệt hại và gián đoạn dịch vụ.
  • Cung cấp tổng quan, độc lập về hiệu quả của các biện pháp kiểm soát bảo mật và đảm bảo tốt hơn cho việc tuân thủ PCI DSS, ISO 27001 và GDPR.
  • Giúp cải thiện các hoạt động phát triển phần mềm và đảm bảo chất lượng bằng cách cung cấp thông tin chi tiết về các rủi ro an ninh mạng.
  • Giúp quyết định sáng suốt hơn về các khoản đầu tư bảo mật trong tương lai.

Khi nào cần pentest theo tiêu chuẩn OWASP?

Các doanh nghiệp phát triển ứng dụng web (web application) nên tiến hành kiểm tra ít nhất mỗi năm một lần. Tuy nhiên, điều này nên được thực hiện thường xuyên hơn khi phát hành các bản cập nhật phần mềm lớn hoặc thực hiện các thay đổi đáng kể đối với cơ sở hạ tầng. Pentest thường xuyên là bắt buộc để tuân thủ các quy định với PCI DSS và ISO 27001, đồng thời cũng được khuyến cáo rõ ràng trong Chỉ thị GDPR và NIS.

Top 10 lỗ hổng bảo mật website phổ biến theo chuẩn OWASP

Top 10 lỗ hổng bảo mật website phổ biến theo chuẩn OWASP
1. Lỗ hổng Injection (Lỗi chèn mã độc)
2. Broken Authentication
3. Lỗ hổng XSS (Cross Site Scripting)
4. Insecure Direct Object References
5. Security Misconfiguration
6. Sensitive data exposure (Rò rỉ dữ liệu nhạy cảm)
7. Missing function level access control (lỗi phân quyền)
8. Cross-Site Scripting
9. Using component with known vulnerabilities
10. Unvalidated redirects and forwards

1. Lỗ hổng Injection (Lỗi chèn mã độc)

Injection attack xảy ra khi dữ liệu không đáng tin cậy được gửi đến trình thông dịch mã (code interpreter) thông qua việc điền các form (biểu mẫu) hoặc một số dữ liệu khác gửi đến ứng dụng web. Ví dụ, kẻ tấn công có thể nhập SQL database code vào một biểu mẫu yêu cầu username ở dạng plaintext. Nếu việc điền các biểu mẫu đó không được bảo mật đúng cách, điều này sẽ dẫn đến việc SQL code đó được thực thi. Đây được gọi là một cuộc tấn công SQL injection.

Các cuộc tấn công injection có thể được ngăn chặn bằng cách xác thực và / hoặc “khử trùng” dữ liệu do người dùng gửi. (Xác thực nghĩa là từ chối các dữ liệu đáng ngờ, trong khi “khử trùng” nghĩa là làm sạch các phần dữ liệu có vẻ đáng ngờ.) Ngoài ra, quản trị viên cơ sở dữ liệu có thể thiết lập các biện pháp kiểm soát để giảm thiểu lượng thông tin bị lộ ra qua một cuộc tấn công injection.

2. Broken Authentication

Đây là nhóm các vấn đề có thể xảy ra trong quá trình xác thực. Có một lời khuyên là không nên tự phát triển các giải pháp mã hóa vì rất khó có thể làm được chính xác.

Có rất nhiều rủi ro có thể gặp phải trong quá trình xác thực:

  • URL có thể chứa Session ID và rò rỉ nó trong Referer Header của người dùng khác.
  • Mật khẩu không được mã hóa hoặc dễ giải mã trong khi lưu trữ.
  • Lỗ hổng Session Fixation.
  • Tấn công Session Hijacking có thể xảy ra khi thời gian hét hạn của session không được triển khai đúng hoặc sử dụng HTTP (không bảo mật SSL)…

Một số chiến lược để giảm thiểu lỗ hổng xác thực là sử dụng xác thực 2 yếu tố two-factor authentication (2FA) cũng như hạn chế hoặc trì hoãn các nỗ lực đăng nhập lặp lại bằng cách sử dụng giới hạn về số lần đăng nhập & thời gian giãn cách giữa các lần đăng nhập sai.

3. Lỗ hổng XSS (Cross Site Scripting)

Lỗ hổng XSS (Cross-scite Scripting) là một lỗ hổng rất phổ biến. Kẻ tấn công chèn các đoạn mã JavaScript vào ứng dụng web. Khi đầu vào này không được lọc, chúng sẽ được thực thi mã độc trên trình duyệt của người dùng. Kẻ tấn công có thể lấy được cookie của người dùng trên hệ thông hoặc lừa người dùng đến các trang web độc hại.

Có một cách bảo mật web đơn giản đó là không trả lại thẻ HTML cho người dùng. Điều này còn giúp chống lại HTML Injection. Thông thường cách giải quyết đơn giản chỉ là Encode (chuyển đổi vê dạng dữ liệu khác) tất cả các thẻ HTML

4. Insecure Direct Object References

Đây là trường hợp điển hình của việc cho rằng đầu vào của người dùng là tin cậy từ đó dẫn đến lỗ hổng bảo mật. Lỗ hổng này xảy ra khi chương trình cho phép người dùng truy cập các tài nguyên (dữ liệu, file, database). Nếu không thực hiện quá trình kiểm soát quyền hạn (hoặc quá trình này không hoàn chỉnh) kẻ tấn công có thể truy cập một cách bất hợp pháp vào các dữ liệu nhạy cảm, quan trọng trên máy chủ

Có thể ngăn chặn lỗ hỏng bằng cách thực hiện phân quyền người dùng đúng cách và nhất quán với sự áp dụng triệt để các Whitelist

5. Security Misconfiguration

Security misconfiguration hay lỗi cấu hình sai bảo mật là lỗ hổng phổ biến nhất trong danh sách và thường là kết quả của việc sử dụng cấu hình mặc định hoặc thông báo hiển thị lỗi quá nhiều thông tin

Trong thực tế, máy chủ website và các ứng dụng đa số bị cấu hình sai. Có lẽ do một vài sai sót như:

  • Chạy ứng dụng khi chế độ debug được bật.
  • Directory listing
  • Sử dụng phần mềm lỗi thời (WordPress plugin, PhpMyAdmin cũ)
  • Cài đặt các dịch vụ không cần thiết.
  • Không thay đổi default key hoặc mật khẩu
  • Trả về lỗi xử lý thông tin cho kẻ tấn công lợi dụng để tấn công, chẳng hạn như stack traces.

Cách ngặn chặn là cần một quá trình audit lỗ hổng bảo mật trên máy chủ trước khi triển khai.

6. Sensitive data exposure (Rò rỉ dữ liệu nhạy cảm)

Lỗ hổng này thuộc về khía cạnh crypto và tài nguyên. Dữ liệu nhạy cảm phải được mã hóa mọi lúc, bao gồm cả khi gửi đi và khi lưu trữ, không được phép có ngoại lệ.

Nguy cơ lộ dữ liệu có thể được giảm thiểu bằng cách mã hóa (encypt) tất cả dữ liệu nhạy cảm cũng như vô hiệu *cache của bất kỳ thông tin nhạy cảm nào. Ngoài ra, các nhà phát triển ứng dụng web nên cẩn thận để đảm bảo rằng họ không lưu trữ bất kỳ dữ liệu nhạy cảm nào một cách không cần thiết

7. Missing function level access control (lỗi phân quyền)

Sai sót trong vấn đề phân quyền, nó có nghĩa là khi một hàm được gọi trên máy chủ, quá trình phân quyền không chính xác. Các nhà phát triển dựa vào thực tế là phía máy chủ tạo ra giao diện người dùng và họ nghĩ rằng khách hàng không thể truy cập các chức năng nếu không được cung cấp bởi máy chủ.

Ở phía máy chủ, phải luôn được phân quyền một cách triệt để từ khâu thiết kế. Không có ngoại lệ, mọi lỗ hổng sẽ dẫn đến đủ các vấn đề nghiêm trọng

8. Cross-Site Scripting

Cross-Site Scripting xảy ra khi các ứng dụng web cho phép người dùng thêm code tùy chỉnh vào đường dẫn url hoặc vào một trang web mà những người dùng khác sẽ nhìn thấy. Lỗ hổng này có thể bị khai thác để chạy mã JavaScript độc hại (malicious JavaScript code) trên trình duyệt của nạn nhân

Các chiến lược giảm thiểu tấn công Cross-Site Scripting bao gồm thoát các yêu cầu HTTP không đáng tin cậy cũng như xác thực và / hoặc loại bỏ các nội dung do người dùng thêm vào. Sử dụng các web development frameworks hiện đại như ReactJS và Ruby on Rails cũng cung cấp một số tính năng bảo vệ khỏi các cuộc tấn công Cross-Site Scripting

9. Using component with known vulnerabilities

Đây là vấn đề xảy ra khi sử dụng các bộ thư viện đã tồn tại lỗ hổng. Trước khi tích hợp một mã nguồn mới vào website, hãy thực hiện một số nghiên cứu hoặc kiểm tra bảo mật. Sử dụng mã nguồn mà bạn nhận được từ một người ngẫu nhiên trên GitHub hoặc một số diễn đàn có thể rất thuận tiện. Nhưng hãy sẵn sàng trước nguy cơ đối diện với một lỗ hổng bảo mật web nghiêm trọng

Cần chú ý cẩn thận khi sử dụng các thành phần của bên thứ 3, không nên là một coder copy-paste. Kiểm tra cẩn thận các đoạn code quan trọng của bạn. Nếu các đoạn code này có lỗ hổng, tin tặc có thể đọc cơ sở dữ liệu, tệp tin cấu hình, mật khẩu…

10. Unvalidated redirects and forwards

Đây lại là vấn đề về lọc đầu vào. Giả sử rằng trang đích có một mô-đun redirect.php lấy URL làm tham số. Thao tác với tham số này có thể tạo ra một URL trên targetite.com chuyển hướng trình duyệt đến địa chỉ malwareinstall.com. Khi người dùng nhìn thấy liên kết, họ sẽ thấy liên kết targetite.com/blahblahblah tin cậy và truy cập vào. Họ ít biết rằng địa chỉ này thực ra chuyển tới trang nhúng phần mềm độc hại (hoặc bất kỳ trang độc hại khác). Ngoài ra, kẻ tấn công có thể chuyển hướng trình duyệt sang targetite.com/deleteprofile?confirm=1

Máy tính đồng bộ MCC Việt Nam tự hào đạt chứng chỉ an toàn thông tin theo tiêu chuẩn quốc tế OWASP 2021.

MCC Việt Nam - An toàn trên không gian mạng

Tin liên quan Xem tất cả
Bài viết mới nhất