OWASP top 10 2021 A02:2021 – Cryptographic Failures

7 min read

Tổng quan

Lỗ hổng Cryptographic Failures (trước đây gọi là Sensitive Data Exposure) nhảy lên vị trí thứ 2 trong OWASP Top 10 2021, đánh dấu sự chú ý đến các lỗi liên quan đến mã hóa (hoặc thiếu mã hóa) có thể dẫn đến rò rỉ dữ liệu nhạy cảm. Những lỗ hổng này thường bắt nguồn từ những sai lầm cơ bản trong việc bảo vệ dữ liệu khi truyền và lưu trữ.

Mô tả

Để phòng ngừa lỗ hổng, điều quan trọng là xác định mức độ bảo vệ cần thiết cho dữ liệu. Ưu tiên hàng đầu dành cho các thông tin nhạy cảm như mật khẩu, số thẻ tín dụng, hồ sơ sức khỏe, thông tin cá nhân và bí mật doanh nghiệp, đặc biệt nếu chúng thuộc diện tuân thủ các luật bảo mật dữ liệu như GDPR của EU, hoặc các quy định về bảo vệ dữ liệu tài chính như PCI DSS.

Những câu hỏi cần đặt ra:

  • Liệu bất kỳ dữ liệu nào được truyền dưới dạng văn bản thuần túy? Kiểm tra các giao thức như HTTP, SMTP, FTP và các bản nâng cấp TLS như STARTTLS. Lưu ý cả lưu lượng truy cập nội bộ, chẳng hạn như giữa bộ cân bằng tải, máy chủ web và hệ thống back-end.
  • Có sử dụng bất kỳ thuật toán hoặc giao thức mã hóa cũ hoặc yếu nào theo mặc định hoặc trong mã cũ không?
  • Có sử dụng khóa mã hóa mặc định, khóa mã hóa yếu được tạo hoặc sử dụng lại, hoặc thiếu quản lý hoặc xoay vòng khóa thích hợp? Có lưu khóa mã hóa trong kho lưu trữ mã nguồn không?
  • Có xác thực chính xác chứng chỉ máy chủ nhận được và chuỗi tin cậy không?
  • Có bỏ qua, sử dụng lại hoặc tạo vec khởi tạo (IV) không an toàn cho chế độ hoạt động mã hóa? Có sử dụng chế độ hoạt động không an toàn như ECB không? Có sử dụng mã hóa khi mã hóa xác thực phù hợp hơn không?

3. Ví dụ cụ thể

Ví dụ 1:

Một ứng dụng web sử dụng thuật toán mã hóa DES để mã hóa mật khẩu người dùng. DES là một thuật toán mã hóa đã lỗi thời và có thể bị bẻ khóa. Điều này có nghĩa là kẻ tấn công có thể bẻ khóa mật khẩu người dùng và truy cập vào tài khoản của họ.

Ví dụ 2:

Một ứng dụng web lưu trữ khóa mã hóa trong cơ sở dữ liệu dưới dạng văn bản thuần túy. Điều này cho phép kẻ tấn công truy cập cơ sở dữ liệu và lấy khóa mã hóa. Sau đó, kẻ tấn công có thể sử dụng khóa mã hóa để giải mã dữ liệu nhạy cảm, chẳng hạn như mật khẩu người dùng hoặc thông tin tài chính.

Ví dụ 3:

Một ứng dụng web sử dụng mã hóa không an toàn để bảo vệ dữ liệu khi nó được truyền qua Internet. Điều này cho phép kẻ tấn công chặn dữ liệu đang được truyền và đọc nó. Điều này có thể dẫn đến việc tiết lộ thông tin nhạy cảm, chẳng hạn như mật khẩu người dùng hoặc thông tin tài chính.

Kết luận

Lỗ hổng Cryptographic Failures là một lỗ hổng bảo mật nghiêm trọng có thể gây ra nhiều tác động tiêu cực, bao gồm:

  • Tiết lộ thông tin nhạy cảm: Lỗ hổng Cryptographic Failures có thể khiến dữ liệu nhạy cảm, chẳng hạn như mật khẩu, số thẻ tín dụng, hồ sơ sức khỏe, thông tin cá nhân và bí mật doanh nghiệp, bị rò rỉ. Điều này có thể dẫn đến gian lận, trộm cắp danh tính hoặc các vấn đề bảo mật khác.
  • Thay đổi dữ liệu: Lỗ hổng Cryptographic Failures có thể cho phép kẻ tấn công thay đổi dữ liệu nhạy cảm. Điều này có thể dẫn đến việc xóa dữ liệu, sửa đổi dữ liệu hoặc thêm dữ liệu sai.
  • Tấn công từ chối dịch vụ: Lỗ hổng Cryptographic Failures có thể được sử dụng để thực hiện các cuộc tấn công từ chối dịch vụ (DoS). Điều này có thể khiến hệ thống trở nên quá tải và không thể truy cập được.

Các nhà phát triển ứng dụng nên thực hiện các biện pháp phòng ngừa cần thiết để bảo vệ ứng dụng của họ khỏi lỗ hổng Cryptographic Failures. Điều này bao gồm:

  • Sử dụng các thuật toán và giao thức mã hóa an toàn: Các thuật toán và giao thức mã hóa nên được đánh giá bởi các chuyên gia bảo mật và được coi là an toàn.
  • Sử dụng khóa mã hóa mạnh: Khóa mã hóa nên có độ dài ít nhất 256 bit và được tạo ra bằng cách sử dụng trình tạo khóa mạnh.
  • Thực hiện triển khai mã hóa an toàn: Các nhà phát triển ứng dụng nên thực hiện triển khai mã hóa theo các thực tiễn bảo mật tốt nhất. Điều này bao gồm:
    • Sử dụng các thuật toán và khóa mã hóa một cách chính xác.
    • Bảo vệ khóa mã hóa khỏi bị lộ.
    • Sử dụng mã hóa mạnh để bảo vệ dữ liệu khi nó được truyền qua Internet.

Có nhiều công cụ và tài nguyên sẵn có để giúp các nhà phát triển ứng dụng phòng ngừa lỗ hổng Cryptographic Failures. Một số công cụ và tài nguyên phổ biến bao gồm:

  • Các bộ công cụ kiểm tra bảo mật: Các bộ công cụ kiểm tra bảo mật có thể được sử dụng để phát hiện lỗ hổng Cryptographic Failures trong ứng dụng.
  • Các tài liệu hướng dẫn về thực tiễn bảo mật tốt nhất: Các tài liệu hướng dẫn về thực tiễn bảo mật tốt nhất có thể cung cấp cho các nhà phát triển ứng dụng thông tin về cách triển khai mã hóa an toàn.

Việc bảo vệ dữ liệu nhạy cảm khỏi bị rò rỉ là điều cần thiết để đảm bảo an ninh của ứng dụng. Bằng cách thực hiện các biện pháp phòng ngừa cần thiết, các nhà phát triển ứng dụng có thể giúp bảo vệ ứng dụng của họ khỏi lỗ hổng Cryptographic Failures.

Một số ví dụ cụ thể khác

Dưới đây là một số ví dụ cụ thể khác về lỗ hổng Cryptographic Failures:

  • Sử dụng thuật toán mã hóa không an toàn: Một ứng dụng web sử dụng thuật toán mã hóa RC4 để mã hóa dữ liệu nhạy cảm. RC4 là một thuật toán mã hóa đã lỗi thời và có thể bị bẻ khóa.
  • Sử dụng khóa mã hóa yếu: Một ứng dụng web sử dụng khóa mã hóa có độ dài 128 bit để mã hóa dữ liệu nhạy cảm. Khóa mã hóa có độ dài 128 bit được coi là yếu và có thể bị bẻ khóa.
  • Lưu trữ khóa mã hóa trong môi trường không an toàn: Một ứng dụng web lưu trữ khóa mã hóa trong tệp cấu hình. Tệp cấu hình được lưu trữ trên máy chủ web, nơi nó có thể bị truy cập bởi kẻ tấn công.
  • Không sử dụng mã hóa khi cần thiết: Một ứng dụng web không sử dụng mã hóa để bảo vệ dữ liệu khi nó được truyền qua Internet. Điều này cho phép kẻ tấn công chặn dữ liệu đang được truyền và đọc nó.

Những ví dụ này cho thấy rằng lỗ hổng Cryptographic Failures có thể xuất hiện ở nhiều nơi trong ứng dụng. Các nhà phát triển ứng dụng cần phải cẩn thận để xác định và khắc phục các lỗ hổng này.

References

https://owasp.org/Top10/A02_2021-Cryptographic_Failures/

https://ant.ncc.asia/owasp-top-10-2021-tong-quan/

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *