Tấn công mạng sử dụng AI: Cách phát hiện, ngăn chặn và phòng thủ trước các mối đe dọa thông minh

Đọ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.

Tiết lộ và khắc phục lỗ hổng thư viện Dompdf với OPSWAT MetaDefender Core 

bằng cách OPSWAT
Chia sẻ bài viết này
Tài Trần và Hải Đăng Bùi, sinh viên Trường Đại học Công nghệ Thông tin, tạo dáng chụp chân dung chuyên nghiệp trên nền xanh
Học sinh tham gia OPSWAT Chương trình học bổng

Sự phát triển nhanh chóng của công nghệ đã tạo ra nhu cầu cao cho các nhà phát triển lành nghề. Phần mềm nguồn mở (OSS) đã trở thành một công cụ quan trọng cho lực lượng lao động ngày càng tăng này. Hàng trăm ngàn gói OSS được thiết lập tốt hiện đang tồn tại trên các ngôn ngữ lập trình khác nhau. Hơn 90% các nhà phát triển tận dụng các thành phần nguồn mở này trong các ứng dụng độc quyền của họ, làm nổi bật hiệu quả và đề xuất giá trị của OSS. Nhấn mạnh hơn nữa tầm quan trọng của nó, thị trường phần mềm nguồn mở toàn cầu dự kiến sẽ đạt 80,7 tỷ đô la vào năm 2030, phản ánh tốc độ tăng trưởng dự kiến là 16,7% hàng năm. 

Software là một phần không thể thiếu trong hoạt động kinh doanh trên toàn thế giới và do đó thường xuyên bị các tác nhân đe dọa nhắm đến. Năm 2023, chi tiêu cho Bảo mật ứng dụng là khoảng 5,76 tỷ đô la, với dự báo đạt 6,67 tỷ đô la vào năm 2024. Trong AppSec, bảo mật chuỗi cung ứng phần mềm đã trở nên nổi bật trong ba năm qua, đại diện cho danh mục tấn công phát triển nhanh nhất, với các vi phạm và khai thác lớn thường xuyên gây chú ý. 

Các tổ chức thường cho rằng hầu hết các rủi ro bắt nguồn từ các ứng dụng web công khai. Tuy nhiên, quan điểm này đã thay đổi trong những năm gần đây. Với hàng chục thành phần nhỏ trong mỗi ứng dụng, rủi ro giờ đây có thể xuất hiện từ bất cứ đâu trong cơ sở mã. Điều quan trọng hơn bao giờ hết đối với các tổ chức là làm quen với các lỗi bảo mật hiện có và mới nổi trong vòng đời phát triển phần mềm. Trong bài đăng trên blog này, các Nghiên cứu sinh sau đại học của chúng tôi cung cấp cái nhìn sâu hơn về CVE-2023-23924, một lỗ hổng bảo mật nghiêm trọng được phát hiện trong thư viện dompdf được sử dụng rộng rãi — một công cụ PHP mạnh mẽ cho phép tạo động các tài liệu PDF từ HTML và CSS. 

Thông qua phân tích toàn diện, chúng tôi sẽ khám phá những phức tạp về mặt kỹ thuật của lỗ hổng này, các công nghệ liên quan đóng vai trò quan trọng và mô phỏng quá trình khai thác. Chúng tôi cũng sẽ xem xét cách OPSWAT MetaDefender Core , đặc biệt là công cụ Software Bill of Materials (SBOM) của nó, có thể được tận dụng để phát hiện và giảm thiểu lỗ hổng này, trao quyền cho các nhà phát triển phần mềm và nhóm bảo mật luôn đi trước một bước so với các mối đe dọa tiềm ẩn. 

Bối cảnh về CVE-2023-23924 

Một lỗ hổng bảo mật đã được phát hiện trong dompdf phiên bản 2.0.1 và được công bố vào đầu năm 2023:

  • Xác thực URI trên dompdf 2.0.1 có thể được bỏ qua trên phân tích cú pháp SVG bằng cách vượt qua <image> có chữ hoa. Điều này cho phép kẻ tấn công gọi các URL tùy ý với các giao thức tùy ý, dẫn đến việc hủy tuần tự hóa đối tượng tùy ý trong các phiên bản PHP trước 8.0.0. Thông qua trình bao bọc URL PHAR, lỗ hổng này có thể gây ra việc xóa tệp tùy ý và thậm chí thực thi mã từ xa, tùy thuộc vào các lớp có sẵn. 
  • Các nhà phân tích của NVD đã chỉ định điểm CVSS là 9,8 CRITICAL cho CVE-2023-23924. 
Sơ đồ thông tin hiển thị số liệu cho CVSS Phiên bản 3.x bao gồm mức độ nghiêm trọng và chuỗi vectơ cho các lỗ hổng bảo mật

Hiểu lỗ hổng Dompdf 

Để hiểu đầy đủ về lỗ hổng CVE-2023-23924 trong dompdf, điều cần thiết là phải làm quen với hai công nghệ liên quan chặt chẽ: Đồ họa vector có thể mở rộng (SVG) và tệp PHAR. 

SVG (Đồ họa vector có thể mở rộng) 

SVG (Scalable Vector Graphics) là một định dạng hình ảnh đa năng đã trở nên phổ biến rộng rãi do khả năng hiển thị đồ họa chất lượng cao trên web trong khi vẫn nhẹ và có thể mở rộng. Không giống như hình ảnh raster, SVG dựa trên đánh dấu XML, cho phép kiểm soát chính xác các yếu tố như dòng, hình dạng và văn bản. Một trong những ưu điểm chính của SVG là khả năng mở rộng quy mô liền mạch mà không làm giảm chất lượng hình ảnh, khiến chúng trở nên lý tưởng cho thiết kế web đáp ứng và màn hình độ phân giải cao.  

Đoạn mã hiển thị SVG với nhiều đa giác có màu khác nhau, minh họa lập trình ở định dạng XML
Tệp PHAR 

PHAR (PHP Archive) tương tự như khái niệm tệp JAR nhưng dành cho PHP. Nó cho phép triển khai dễ dàng bằng cách đóng gói tất cả mã PHP và tệp tài nguyên vào một tệp lưu trữ duy nhất.  

Tệp PHAR bao gồm 4 phần:  

  • Sơ khai: chứa mã để khởi động kho lưu trữ. 
  • Tệp kê khai: chứa siêu dữ liệu của kho lưu trữ. Siêu dữ liệu được lưu trữ ở định dạng nối tiếp, có thể được sử dụng để kích hoạt cuộc tấn công deserialized PHP trong tệp PHAR độc hại. 
  • Nội dung tệp: chứa nội dung của kho lưu trữ, bao gồm mã PHP, tệp tài nguyên. 
  • Chữ ký (Tùy chọn): chứa dữ liệu để xác minh tính toàn vẹn của tệp. 

Do siêu dữ liệu được lưu trữ ở định dạng tuần tự, sự kết hợp của trình bao bọc PHAR và siêu dữ liệu của tệp PHAR có khả năng kích hoạt một cuộc tấn công deserialization khi được sử dụng làm đầu vào trong các hàm PHP như file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime(), hoặc Kích thước tập tin(). Việc giám sát bảo mật này có thể cho phép kẻ tấn công thực thi mã từ xa thông qua tệp PHAR. 

Bảng chi tiết định dạng tệp cơ bản của bản kê khai lưu trữ Phar, bao gồm kích thước tính bằng byte và mô tả của từng phần

Cách Dompdf tạo tệp PDF

Lưu đồ minh họa quá trình chuyển đổi tệp HTML sang định dạng PDF, làm nổi bật các bước trung gian và định dạng tệp

Qua phân tích, OPSWAT Nghiên cứu sinh sau đại học xác định rằng có ba giai đoạn trong quá trình chuyển đổi trên dompdf. Để chuyển đổi tệp HTML sang định dạng PDF, trước tiên thư viện dompdf phân tích cú pháp tệp đầu vào vào cây DOM và lưu trữ thông tin định vị và bố cục của từng đối tượng. Tiếp theo, kiểu CSS được phân tích cú pháp và áp dụng cho từng đối tượng. Cuối cùng, các đối tượng được tổ chức lại để phù hợp với trang và được hiển thị thành tệp PDF cuối cùng.  

Lỗ hổng bảo mật trong Dompdf

Để tăng cường bảo mật, dompdf thực hiện xác thực để đảm bảo an toàn cho đầu vào URI trước khi tiến hành bước tiếp theo. Quá trình xác thực này được thể hiện rõ trong quá trình xử lý tệp SVG trong giá trị của Xlink:HREF thuộc tính. 

Ví dụ mã PHP để xử lý các tệp SVG, hiển thị các chức năng để phân tích cú pháp và xác thực nội dung SVG

Nếu tệp đầu vào SVG chứa <image> bên dưới <svg> , một điều kiện được thực hiện để chỉ cho phép một số giao thức nhất định, chẳng hạn như http://, https://file://, đối với Xlink:HREF trường.

Giao diện web cho dịch vụ PDF Converter cho phép người dùng tải lên các tệp HTML hoặc SVG để chuyển đổi sang PDF

Các resolve_url() hàm sẽ xác thực URI trước khi xử lý nó bằng drawImage() chức năng. Nếu lược đồ trong URI không nằm trong số các giao thức được phép, resolve_url() hàm sẽ trả về một ngoại lệ cho ứng dụng. 

Tập lệnh PHP hiển thị cách xử lý URI dữ liệu, minh họa xử lý lỗi và xác minh giao thức trong các ứng dụng web

Nếu URI vượt qua xác thực, nó sẽ được chuyển đến drawImage() hàm, sử dụng file_get_contents() chức năng xử lý giá trị URI trong Xlink:HREF thuộc tính. Lỗ hổng bảo mật phát sinh tại thời điểm này: một cuộc tấn công deserialization PHAR có thể được kích hoạt nếu kẻ tấn công có thể bỏ qua xác nhận và chuyển trình bao bọc PHAR vào URI. 

Sau khi phân tích, người ta phát hiện ra rằng việc xác nhận chỉ được thực thi trên các thẻ có hình ảnh tên chính xác. 

Ví dụ PHP về thao tác hình ảnh, chi tiết các chức năng để vẽ hình ảnh từ URL dữ liệu và xử lý nội dung tệp

Do đó, nó có thể dễ dàng bỏ qua bằng cách viết hoa một hoặc nhiều ký tự trong tên của tên thẻ, chẳng hạn như Hình ảnh. Do đó, một tệp SVG được tạo đặc biệt sử dụng Hình ảnh thay vì hình ảnh có thể trốn tránh xác thực này. 

Trong bước tiếp theo, các drawImage() hàm được gọi, chuyển URI từ tệp SVG sang file_get_contents() chức năng. Do đó, sự kết hợp của bỏ qua xác thực và một cuộc tấn công deserialization trên một tập tin PHAR cho phép kẻ tấn công tiến hành thực thi mã từ xa. Lỗ hổng này mở ra cánh cửa cho kẻ tấn công độc hại xâm phạm máy chủ ứng dụng thông qua tệp SVG nếu nó được xử lý bởi phiên bản dompdf dễ bị tấn công. 

Mô phỏng khai thác Dompdf

Ứng dụng dễ bị tấn công

Để mô phỏng việc khai thác này như một kịch bản trong thế giới thực, OPSWAT Graduate Fellows đã phát triển một ứng dụng web có tính năng chuyển đổi HTML sang PDF bằng cách sử dụng thư viện dompdf phiên bản 2.0.1. Ứng dụng này cho phép người dùng tải lên các loại tệp như HTML, XML hoặc SVG, sau đó chuyển đổi chúng thành tệp PDF. 

Ảnh chụp màn hình của công cụ PDF Converter dựa trên web có hình đại diện hình người, nhấn mạnh chức năng tải lên và chuyển đổi tệp

Kẻ tấn công sẽ làm theo các bước sau để khai thác lỗ hổng này trong ứng dụng bằng cách sử dụng phiên bản dompdf dễ bị tấn công (phiên bản 2.0.1): 

Đoạn mã PHP hiển thị việc sử dụng thư viện Dompdf để chuyển đổi HTML sang tệp PDF ở định dạng ngang
Composer.json đoạn mã tệp chỉ định yêu cầu cho thư viện Dompdf phiên bản 2.0.1 cho một dự án PHP
Dòng chảy khai thác
Sơ đồ đồ họa giải thích quy trình bốn bước để khai thác các tệp SVG bằng cách sử dụng lỗ hổng Dompdf để thực thi trình bao ngược

Thứ nhất, kẻ tấn công tạo ra một đối tượng độc hại tạo ra một vỏ ngược khi trình hủy diệt được gọi. 

Ví dụ mã PHP minh họa lỗ hổng deserialization đối tượng trong PHP dẫn đến thực thi mã từ xa thông qua một shell ngược

Thứ hai, kẻ tấn công tạo một tệp PHAR chứa đối tượng siêu dữ liệu độc hại. Khi tệp PHAR được gọi bởi trình bao bọc PHAR trong file_get_content() chức năng, siêu dữ liệu được không tuần tự hóa và đối tượng được chỉ định được xử lý. Trong quá trình deserialization này, nó kích hoạt các destructors và thực hiện shell ngược. 

Tập lệnh PHP thể hiện việc tạo ra một kho lưu trữ Phar bao gồm dữ liệu đối tượng được tuần tự hóa để thực hiện một lệnh từ xa

Cuối cùng, kẻ tấn công nhúng liên kết URI có chứa trình bao bọc PHAR vào giá trị của Xlink:HREF trong thẻ Hình ảnh để vượt qua xác thực, thực thi mã độc và tải tệp độc hại này lên ứng dụng. 

Đoạn mã SVG minh họa cách nhúng khai thác deserialization PHP từ xa thông qua tham chiếu hình ảnh

Trong quá trình xử lý tệp SVG độc hại được tải lên, ứng dụng sẽ thiết lập kết nối ngược với kẻ tấn công, cho phép chúng xâm phạm máy chủ ứng dụng. 

Giao diện web của trình chuyển đổi PDF hiển thị các tùy chọn để tải lên và chuyển đổi tệp HTML / SVG sang PDF, có mô hình con người kỹ thuật số
Ảnh chụp màn hình của bảng điều khiển Metasploit hiển thị kết nối TCP ngược thành công và chi tiết cấu hình mạng
Ảnh chụp màn hình thiết bị đầu cuối hiển thị cấu hình mạng và thông tin đăng nhập được truy xuất từ hệ thống Unix

Bảo mật các thành phần nguồn mở với OPSWAT MetaDefender Core 

Để phát hiện và giảm thiểu lỗ hổng CVE-2023-23924 trong dompdf, các Nghiên cứu sinh sau đại học của chúng tôi đã sử dụng OPSWAT MetaDefender Core, một sản phẩm an ninh mạng nhiều lớp cung cấp các công nghệ phát hiện và ngăn chặn phần mềm độc hại tiên tiến, bao gồm SBOM. 

OPSWAT SBOM bảo mật chuỗi cung ứng phần mềm bằng cách cung cấp một kho thành phần toàn diện cho mã nguồn và container. Bằng cách phân tích thư viện dompdf và các phụ thuộc của nó, OPSWAT SBOM có thể nhanh chóng xác định sự hiện diện của phiên bản 2.0.1 dễ bị tấn công và cảnh báo người dùng về rủi ro tiềm ẩn. 

Ngoài ra OPSWAT SBOM có thể phát hiện các công nghệ liên quan, chẳng hạn như tệp SVG và PHAR, rất cần thiết để hiểu và giảm thiểu lỗ hổng CVE-2023-23924. Cái nhìn toàn diện này về các thành phần phần mềm của ứng dụng cho phép các nhóm bảo mật đưa ra quyết định sáng suốt và thực hiện các hành động thích hợp để giải quyết các rủi ro đã xác định. 

Giao diện phân tích bảo mật hiển thị tệp JavaScript bị chặn do lỗ hổng với kết quả đánh giá chi tiết

Ngoài việc phát hiện phiên bản dompdf dễ bị tấn công, OPSWAT SBOM cũng cung cấp thông tin chi tiết có giá trị về các thành phần bị ảnh hưởng, phiên bản của chúng và mọi bản cập nhật hoặc bản vá có sẵn. Thông tin này cho phép các nhóm bảo mật ưu tiên các nỗ lực khắc phục của họ và đảm bảo ứng dụng được cập nhật lên phiên bản dompdf an toàn, giải quyết hiệu quả lỗ hổng CVE-2023-23924. 

Chế độ xem chi tiết các lỗ hổng trong tệp ký hiệu đối tượng JavaScript, liệt kê các rủi ro nghiêm trọng và bảo mật cao với mã định danh CVE

Bằng cách tận dụng động cơ SBOM trong MetaDefender Core, các tổ chức có thể chủ động giám sát chuỗi cung ứng phần mềm của họ, xác định các lỗ hổng tiềm ẩn trong các thành phần nguồn mở và thực hiện các chiến lược giảm thiểu kịp thời, đảm bảo tính bảo mật và tính toàn vẹn tổng thể của các ứng dụng của họ. 

Bớt tư tưởng 

Việc phát hiện ra CVE-2023-23924 trong thư viện dompdf nhấn mạnh nhu cầu quan trọng về cảnh giác trong bối cảnh năng động của bảo mật ứng dụng. Bằng cách tận dụng những hiểu biết và chiến lược được nêu trong bài đăng trên blog này, các nhóm bảo mật có thể phát hiện, giảm thiểu và bảo vệ hiệu quả các ứng dụng của họ chống lại các lỗ hổng đó, đảm bảo tính bảo mật và tính toàn vẹn tổng thể của hệ sinh thái phần mềm của họ. 

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.