AI Hacking - Cách tin tặc sử dụng trí tuệ nhân tạo trong các cuộc tấn công mạng

Đọc ngay
Chúng tôi sử dụng trí tuệ nhân tạo để dịch trang web và trong khi chúng tôi cố gắng đạt được độ chính xác, chúng có thể không phải lúc nào cũng chính xác 100%. Sự hiểu biết của bạn được đánh giá cao.

CVE-2024-36401: Lỗ hổng bảo mật thực thi mã từ xa nghiêm trọng trong GeoServer mã nguồn mở 

bằng cách OPSWAT
Chia sẻ bài viết này
Ảnh chụp đầu của OPSWAT Những người tham gia Chương trình Học bổng
OPSWAT Người tham gia chương trình học bổng

Trong blog này, chúng tôi khám phá CVE-2024-36401—một lỗ hổng bảo mật được tìm thấy trong GeoServer, một máy chủ mã nguồn mở dựa trên Java được sử dụng rộng rãi để thao tác và chia sẻ dữ liệu không gian địa lý. Lỗ hổng này, có thể cho phép RCE (thực thi mã từ xa) bởi những người dùng chưa xác thực, nhấn mạnh tầm quan trọng của việc vá lỗi triển khai GeoServer càng sớm càng tốt. 

Trong phân tích bảo mật mới nhất của chúng tôi, hai OPSWAT Các nghiên cứu sinh sau đại học điều tra mối đe dọa này bằng cách:

Chúng tôi cũng sẽ chia sẻ cách OPSWAT Công nghệ SBOM có thể phát hiện lỗ hổng này, đồng thời cung cấp các bước hành động để các nhóm bảo vệ cơ sở hạ tầng không gian địa lý của mình trước khi kẻ tấn công tấn công.

Minh họa thể hiện phân tích lỗ hổng GeoServer

Tổng quan về GeoServer

GeoServer là máy chủ mã nguồn mở dựa trên Java được thiết kế để xem, chỉnh sửa và chia sẻ dữ liệu không gian địa lý. Ban đầu được TOPP (Dự án Quy hoạch Mở) ra mắt vào năm 2001, GeoServer được phát triển để cải thiện sự tham gia của công chúng vào chính phủ và quy hoạch đô thị thông qua trao đổi dữ liệu không gian mở. Sau hơn hai thập kỷ, GeoServer đã phát triển thành một nền tảng mạnh mẽ có khả năng xử lý nhiều định dạng dữ liệu không gian khác nhau và tích hợp với nhiều nguồn dữ liệu khác nhau.

GeoServer cung cấp các dịch vụ dựa trên tiêu chuẩn OGC (Open Geospatial Consortium) , bao gồm:

  • WFS (Dịch vụ tính năng web) – Cho phép tạo, sửa đổi và trao đổi thông tin địa lý định dạng vector bằng HTTP
  • WCS (Dịch vụ phủ sóng web) – Tạo điều kiện truy cập vào dữ liệu raster (ví dụ: hình ảnh vệ tinh) để lập mô hình và phân tích phức tạp.
  • WMS (Dịch vụ bản đồ web) – Cung cấp giao diện HTTP đơn giản để yêu cầu hình ảnh bản đồ.

Bối cảnh về CVE-2024-36401

CVE-2024-36401 ảnh hưởng đến các phiên bản GeoServer trước 2.25.2, 2.24.4 và 2.23.6. Lỗi này phát sinh từ việc đánh giá không an toàn các tên thuộc tính dưới dạng biểu thức XPath trên nhiều tham số yêu cầu OGC. Kẻ tấn công có thể khai thác lỗ hổng này để tạo RCE (thực thi mã từ xa) bằng cách chèn các đầu vào được tạo thủ công vào cài đặt GeoServer mặc định.

 Theo GitHub Security Advisories, lỗ hổng này có điểm CVSS v3.1 là 9,8 (Nguy cấp). 

Ảnh chụp màn hình của CVSS Base Score Metrics được sử dụng để đánh giá lỗ hổng phần mềm

Các tính năng đơn giản và phức tạp của GeoServer

GeoServer hỗ trợ cả các loại đối tượng đơn giản và phức tạp để chứa các cấu trúc dữ liệu không gian địa lý khác nhau, từ các tập dữ liệu phẳng đến phức tạp, lồng nhau. Tuy nhiên, việc xử lý sai các biểu thức XPath trên các loại dữ liệu này là nguyên nhân khiến CVE-2024-36401 có thể khai thác được.

Tính năng đơn giản

Các kiểu đối tượng đơn giản biểu diễn dữ liệu không gian địa lý trực tiếp ở định dạng phẳng, trong đó mỗi hàng trong cơ sở dữ liệu tương ứng với một đối tượng không gian địa lý; và mỗi thuộc tính ánh xạ trực tiếp đến một phần tử XML. 

Ví dụ, một bảng biểu diễn các công ty với các cột như ID, tên và vị trí có thể dễ dàng được chuyển đổi thành các tính năng XML đơn giản.

nhận dạngtênvị trí
1OPSWATĐIỂM (10.769829, 106.685248)
Ánh xạ tính năng đơn giản của GeoServer từ các hàng cơ sở dữ liệu sang các phần tử XML

Tính năng phức tạp

Ngược lại, các kiểu đối tượng phức tạp xử lý dữ liệu phức tạp hơn. Kiểu đối tượng này hỗ trợ các thuộc tính lồng nhau và mối quan hệ giữa các tập dữ liệu khác nhau. Các lược đồ phức tạp này không được tạo tự động mà được xác định bằng các tiêu chuẩn cộng đồng, như được nêu trong tiện ích mở rộng Application Schema của GeoServer.

Ví dụ: 

Trong bảng công ty trước đó, chúng tôi thêm một khóa ngoại hướng dẫn để mô tả mối quan hệ giữa một công ty và đơn vị địa chất tương đương của nó:

nhận dạngtênvị tríhướng dẫn
1OPSWATĐIỂM (10.769829, 106.685248)12

Thông tin đơn vị địa chất được lưu trữ riêng biệt trong bảng đơn vị địa chất:

hướng dẫnbình đựng tro cốtSự miêu tả
12urn:x-demo:feature:GeologicUnit:12Đá phiến biến chất

Bằng cách sử dụng các bảng này, chúng ta có thể lập bản đồ công ty thành một sa:Công ty lấy mẫu, trong đó có một lồng nhau gsml:Đơn vị địa chấtThiết lập này tạo ra một tính năng phức tạp vì nó liên quan đến các kiểu lồng nhau và các mối quan hệ được xác định bởi các thông số kỹ thuật của cộng đồng thay vì các lược đồ được tạo tự động.

Mối quan hệ đơn vị địa chất lồng nhau trong các tính năng phức hợp của GeoServer

Tính linh hoạt như vậy rất cần thiết để mô hình hóa các tình huống thực tế phức tạp, nhưng cũng gây ra lỗ hổng do dựa vào các kỹ thuật xử lý tiên tiến như đánh giá JXPath để quản lý hiệu quả các cấu trúc lồng nhau.

Sự phát sinh của lỗ hổng

GeoServer được thiết kế để sử dụng đánh giá XPath để xử lý các loại đối tượng phức tạp (chẳng hạn như các đối tượng được tìm thấy trong kho dữ liệu Application Schema). Nhưng do xử lý không đúng cách, nó cũng áp dụng đánh giá XPath nhầm vào các loại đối tượng đơn giản. Điều này tạo ra một vectơ tấn công vì:

  1. GeoServer dựa vào thư viện GeoTools để đánh giá tên thuộc tính trong quá trình truy xuất dữ liệu.
  2. Các commons-jxpath thư viện, được sử dụng để xử lý biểu thức XPath, thiếu xác thực thích hợp, có thể thực thi mã tùy ý khi xử lý biểu thức XPath.
  3. Lỗ hổng này khiến tất cả các phiên bản GeoServer có nguy cơ bị tấn công RCE vì kẻ tấn công có thể tạo một yêu cầu độc hại khai thác lệnh thực thi XPath không an toàn này để kiểm soát máy chủ.

Tổng quan về quy trình khai thác

  • MỘT BƯU KIỆN yêu cầu được gửi đến Lấy giá trị tài sản hoạt động. Sau đó, GeoServer cố gắng truy xuất thuộc tính (hoặc giá trịTham chiếu) cho một tính năng nhất định.  
  • Nếu thuộc tính được yêu cầu tồn tại trong bảng Chi tiết loại đối tượng, GeoServer sẽ xử lý thuộc tính đó một cách bình thường.
GeoServer chuyển sang commons-jxpath để đánh giá XPath trong bảng
  • Tuy nhiên, nếu thuộc tính không được liệt kê, GeoServer sẽ quay lại commons-jxpath thư viện để diễn giải tham số yêu cầu như một biểu thức XPath.
  • Từ commons-jxpath cho phép thực thi mã Java trực tiếp từ XPath, cơ chế dự phòng này có khả năng cho phép khai thác các tham số yêu cầu do người dùng cung cấp để thực thi mã từ xa. Nói một cách đơn giản, kẻ tấn công có thể đưa mã độc vào để đạt được RCE.
Sơ đồ quy trình làm việc minh họa hoạt động GeoServer GetPropertyValue và luồng tấn công

Khai thác và phân tích lỗ hổng

JXPath và Cầu thực thi Java

Commons-jxpath xử lý các biểu thức XPath độc hại trong GeoServer

Các commons-jxpath thư viện, thường được gọi là JXPath, cho phép điều hướng qua đồ thị đối tượng Java (JavaBeans, đối tượng DOM, v.v.) bằng cú pháp XPath. Ví dụ, nếu bạn có một đối tượng Employee đơn giản với các thuộc tính như tên và địa chỉ, JXPath cho phép bạn truy vấn các thuộc tính đó như thể chúng là các nút trong tài liệu XML.

Điều hướng JXPath của đồ thị đối tượng Java bằng cú pháp XPath

Khai thác các hàm mở rộng

Ngoài các hàm chuẩn, JXPath còn hỗ trợ các hàm mở rộng đóng vai trò là cầu nối tới Java. "Cầu nối tới Java" này rất quan trọng vì nó cho phép các hàm Java được gọi trực tiếp trong các truy vấn XPath, ví dụ:

Thuộc tính truy vấn JXPath của đối tượng Java Employee

Do có một số hạn chế về các phương thức Java có thể được gọi thông qua cầu nối này, nên kẻ tấn công có thể khai thác thực thi() chức năng (hoặc các phương pháp tương tự) để thực thi các lệnh tùy ý trên máy chủ.

Gọi hàm mở rộng kết nối XPath với các phương thức Java

WFS Lấy giá trị thuộc tính

WFS của GeoServer cho phép người dùng truy vấn và thao tác các tính năng không gian địa lý. Trong điều kiện bình thường, WFS Lấy giá trị tài sản hoạt động này chỉ đơn giản trả về thuộc tính được yêu cầu trong một cấu trúc XML.

Hoạt động WFS GetPropertyValue trả về thuộc tính XML
Cấu trúc phản hồi XML của WFS GetPropertyValue

Phân tích quy trình làm việc

  1. Kẻ tấn công gửi yêu cầu POST tới /geoserver/wfs.
  2. GeoServer kiểm tra thẻ XML ngoài cùng—wfs:GetPropertyValue—để xác định thao tác nào sẽ được thực hiện.
  3. Sau đó, GeoServer chuyển giao các tham số yêu cầu cho phương thức tương ứng trong lớp WFS. Trong trường hợp này, Dispatcher chuyển hướng yêu cầu đến Lấy giá trị tài sản phương pháp.
GeoServer Dispatcher chuyển hướng yêu cầu đến phương thức GetPropertyValue
  1. Trong lớp DefaultWebFeatureService20 (WFS), điều này Lấy giá trị tài sản phương thức chuyển tiếp các tham số của người dùng tới trình xử lý có cùng tên.
  2. Người xử lý chạy() phương pháp nhận được yêu cầu, bao gồm cả yêu cầu quan trọng giá trịTham chiếu tham số được kiểm soát bởi người dùng.
Phương thức run() xử lý nhận yêu cầu của người dùng với tham số valueReference
  1. Trong suốt chạy() phương pháp, GeoServer lấy lại tham chiếuGiá trị và triệu hồi nó đánh giá() chức năng.
GeoServer đang lấy referenceValue và gọi hàm evaluate()
  1. Nếu như giá trịTham chiếu không khớp với các thuộc tính được xác định trước của GeoServer, GeoServer mặc định nó là Tính năngThuộc tínhTruy cập, mà giải thích giá trịTham chiếu dưới dạng biểu thức XPath.
FeaturePropertyAccessor giải thích valueReference như biểu thức XPath
  1. Các lấy() phương pháp trong FeaturePropertyAccessor sử dụng commons-jxpath để thực hiện truy vấn XPath. Ở đây, người dùng giá trịTham chiếu được truyền trực tiếp vào tham số xpath mà không cần xác thực. Thông qua JXPathContext.newContext(), GeoServer khởi tạo môi trường cho các truy vấn XPath, sau đó chạy chúng thông qua lặp lạiCon trỏ().
Commons-jxpath thực hiện truy vấn XPath với giá trị do người dùng cung cấpReference

Vì JXPath hỗ trợ các hàm mở rộng nên kẻ tấn công có thể đưa mã độc vào biểu thức XPath, kích hoạt việc thực thi mã tùy ý trên phiên bản GeoServer.

Kẻ tấn công chèn mã độc hại thông qua biểu thức XPath cho RCE

Chuỗi sự kiện này chứng minh việc xử lý không an toàn như thế nào giá trịTham chiếu tham số này có thể dẫn đến RCE, gây ra mối đe dọa bảo mật nghiêm trọng đối với các triển khai GeoServer dễ bị tấn công.

Mô phỏng cuộc tấn công

Để mô phỏng việc khai thác này trong một kịch bản thực tế, chúng tôi OPSWAT Các nghiên cứu sinh đã triển khai GeoServer trên máy Windows cục bộ. Giao diện sau được hiển thị khi truy cập GeoServer.

Ảnh chụp màn hình giao diện GeoServer trên máy Windows để mô phỏng lỗ hổng

Khi máy chủ đang chạy, kẻ tấn công có thể khai thác lỗ hổng bằng cách gửi yêu cầu POST với biểu thức XPath độc hại qua giá trịTham chiếu đến điểm cuối /geoserver/wfs.

Đoạn mã XML minh họa yêu cầu POST độc hại khai thác valueReference trong GeoServer

Kết quả: Sau khi yêu cầu được gửi đi, biểu thức XPath độc hại sẽ thực thi lệnh hệ thống và kích hoạt khởi chạy ứng dụng Máy tính.

Ảnh chụp màn hình minh họa việc khởi chạy ứng dụng Máy tính sau khi khai thác RCE thành công

Giảm thiểu và khuyến nghị

Một khai thác đơn giản có thể leo thang thành một cuộc tấn công chuỗi cung ứng phần mềm, đặc biệt là trong các dự án dựa trên phần mềm nguồn mở như GeoServer. Công nghệ OPSWAT SBOM (Bảng kê vật liệu Software ) giúp xác định các lỗ hổng như CVE-2024-36401 trong cơ sở mã của bạn.

Ví dụ này chứng minh cách OPSWAT SBOM:

  1. Phát hiện các thành phần phần mềm bị ảnh hưởng bởi lỗ hổng bảo mật.
  2. Đánh giá và xếp hạng mức độ nghiêm trọng của lỗ hổng bảo mật – tại đây, các CVE của GeoServer được đánh dấu là “Nghiêm trọng”.
  3. Xác định phiên bản bị ảnh hưởng.
  4. Đề xuất phiên bản đã sửa lỗi để nhóm phát triển có thể áp dụng bản vá hoặc thực hiện biện pháp khắc phục kịp thời.
Ảnh chụp màn hình bảng điều khiển của OPSWAT SBOM phát hiện các gói GeoServer có lỗ hổng nghiêm trọng
OPSWAT SBOM ( Software Công nghệ Bill of Materials (Bill of Materials) phát hiện các gói GeoServer có lỗ hổng nghiêm trọng.

Các bước khuyến nghị khác

  1. Cập nhật GeoServer: Nâng cấp lên phiên bản GeoServer 2.25.2, 2.24.4 hoặc 2.23.6 (hoặc mới hơn) khi lỗ hổng được vá.
  2. Phụ thuộc kiểm toán: Thường xuyên sử dụng các công cụ như OPSWAT SBOM để xác định các thư viện lỗi thời (ví dụ: commons-jxpath) trong môi trường của bạn.
  3. Hạn chế quyền truy cập: Triển khai GeoServer sau tường lửa hoặc lớp xác thực để giảm thiểu bề mặt tấn công.
  4. Theo dõi các cảnh báo bảo mật: Theo dõi các ghi chú phát hành GeoServer chính thức và cơ sở dữ liệu CVE để cập nhật các bản vá lỗi mới.

Về OPSWAT SBOM

OPSWAT SBOM hỗ trợ các ngôn ngữ lập trình phổ biến nhất, cung cấp cho các nhóm phát triển phần mềm khả năng hiển thị các thư viện nguồn mở của bên thứ ba, các phụ thuộc liên quan của chúng và các phiên bản mới nhất có sẵn để nâng cấp. Các nhà phát triển có thể tích hợp OPSWAT SBOM vào mã nguồn và các dịch vụ container như GitHub, BitBucket, GitLab, Amazon ECR, DockerHub, v.v. Tìm hiểu thêm về SBOM .

Hãy nói chuyện với một chuyên gia ngay hôm nay để tìm hiểu cách tích hợp OPSWAT các công cụ và giải pháp với cơ sở hạ tầng và quy trình làm việc hiện tại của bạn:

Luôn cập nhật với OPSWAT!

Đăng ký ngay hôm nay để nhận thông tin cập nhật mới nhất về công ty, câu chuyện, thông tin sự kiện và nhiều thông tin khác.