Cách tấn công lỗ hổng không mã hóa mật khẩu

Olle Segerdahl - cố vấn an ninh chính của F-Secure và cộng sự Pasi Saarinen đã phát triển một loại tấn công có thể vượt qua cơ chế hạn chế lỗi BIOS, bằng việc khai thác một số điểm yếu trong cách bảo vệ phần mềm cho phần cứng máy tính (firmware) của một số hãng như Apple, Dell, Lenovo và các dòng máy tính được sản xuất trong 10 năm trở lại đây.

Lỗ hổng xảy ra khi một máy tính được khởi động lại hoặc tắt đi không đúng tiến trình. Khi đó, các thông tin quan trọng vẫn còn nằm trong bộ nhớ RAM sau khi thiết bị tắt. Phương pháp tấn công này cũng vượt qua một số cơ chế hạn chế tấn công khởi động nguội hiện có trên máy tính.

Các chuyên gia đã tìm ra cách vô hiệu hóa tính năng ghi đè thông qua việc xử lý phần cứng của máy tính. Bằng một công cụ đơn giản, các chuyên gia có thể viết lại chip bộ nhớ điện tĩnh (bộ nhớ bất biến - non-volatile memory) có chứa các cài đặt, vô hiệu hóa ghi đè bộ nhớ và cho phép khởi động từ thiết bị bên ngoài. Phương thức tấn công khởi động nguội được thực hiện bằng cách khởi động một chương trình đặc biệt qua USB.

Segerdahl cho rằng, chế độ nghỉ của máy tính là chế độ dễ bị tấn công, vì tin tặc với quyền tiếp cận trực tiếp với thiết bị có thể cài đặt lại phần mềm cho phần cứng máy tính một cách đơn giản. Các chuyên gia đã thực hiện cuộc tấn công bằng cách sử dụng một chiếc USB được chế tạo đặc biệt để kết xuất thông tin từ bộ nhớ pre-boot, từ đó có thể lấy được mật khẩu máy tính và truy cập được vào thiết bị.

Kiểu tấn công này không đơn giản để thực hiện và yêu cầu quyền tiếp cận vật lý mới có thể làm được. Tuy nhiên, các nhà nghiên cứu khuyến cáo rằng, vì kỹ thuật tấn công này được tin tặc biết đến và có thể thực hiện trên hầu hết các loại máy tính hiện đại, nên các công ty cần đề phòng và chú ý.

Để ngăn chặn mối đe dọa này, các nhà nghiên cứu khuyến cáo, các công ty nên sử dụng mã PIN để truy cập vào phần khôi phục, khởi động, tắt, nghỉ, ngủ đông máy tính, giữ an toàn về mặt vật lý cho máy tính, báo cáo các thiết bị mất tích và có kế hoạch ứng phó khẩn cấp để xử lý các thiết bị mất tích đó.

Theo Segerdahl, thông thường, các tổ chức không chuẩn bị trước để bảo vệ mình khỏi những kẻ tấn công có quyền sử dụng trực tiếp máy tính của công ty. Khi gặp phải sự cố bảo mật trong các thiết bị từ những nhà cung cấp máy tính lớn, như lỗ hổng mà các chuyên gia đã tìm được để khai thác, người dùng cần hiểu rằng rất nhiều công ty còn tồn tại liên kết yếu trong bộ phận an ninh mà họ không phát hiện được và chuẩn bị để khắc phục.

Các nhà nghiên cứu đã chia sẻ nghiên cứu của họ với Microsoft, Intel, Apple và cả ba công ty này đều đang tìm kiếm các chiến lược để khắc phục lỗ hổng.

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ả

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)

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

Tấn công khai thác lỗ hổng bảo mật là gì?

Trong lĩnh vực an ninh mạng, lỗ hổng bảo mật là một điểm yếu có thể bị khai thác bởi một tác nhân xấu để thực hiện các cuộc tấn công mạng nhằm mục đích thực hiện các hành động phi pháp lên hệ thống mục tiêu.

Lỗ hổng bảo mật thường xuất hiện ở đâu?

Lỗ hổng bảo mật và những điểm yếu thường thấy trong bảo mật. Lỗ hổng bảo mật (security vulnerability) là khuyết điểm trong quá trình lập trình hoặc việc cấu hình sai hệ thống mà qua đó tạo ra sơ hở dẫn dến kẻ tấn công mạng có thể truy cập trực tiếp dữ liệu mà bỏ qua quy trình thông thường.

Đâu là 1 trong các kỹ thuật tấn công đổ mật khẩu?

Brute Force Attack (tấn công dò mật khẩu): kẻ tấn công sử dụng một công cụ mạnh mẽ, có khả năng thử nhiều username và password cùng lúc (từ dễ đến khó) cho tới khi đăng nhập thành công. VD: đặt mật khẩu đơn giản như 123456, password123, daylamatkhau,… rất dễ bị tấn công brute force.

Lỗ hổng trong công nghệ thông tin là gì?

Lỗ hổng bảo mật của website là những điểm yếu được tìm thấy trong các thành phần phần mềm và phần cứng, cho phép kẻ tấn công (hacker) khai thác và có tác động tiêu cực đến tính bảo mật, tính khả dụng, gây tổn hại đến các thuộc tính an ninh của website đó.