Lỗi ghi ngoài giới hạn heap trong bộ giải mã PCD của GraphicsMagick Group GraphicsMagick

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-77118 là gì?

Lỗ hổng CVE-2026-77118 là lỗ hổng Out-of-bounds Write ảnh hưởng tới GraphicsMagick (phiên bản bị ảnh hưởng: 1.0.0 – < 1.3.48), graphicsmagick (phiên bản bị ảnh hưởng: < 1.4+really1.3.48-1) và GraphicsMagick (phiên bản bị ảnh hưởng: < 1.3.48). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.4. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

Một lỗi ghi ngoài giới hạn heap tồn tại trong bộ giải mã Photo CD (PCD) của GraphicsMagick. Trong DecodeImage() (coders/pcd.c), vòng lặp delta Huffman tăng con trỏ đầu ra bằng q++ sau mỗi delta được giải mã và không bao giờ kiểm tra con trỏ này với cuối các buffer plane luma/chroma được cấp phát trên heap. Con trỏ chỉ được đặt lại khi một marker đồng bộ giới thiệu plane hoặc hàng mới; giữa các marker đồng bộ, độ dài chuỗi chỉ bị giới hạn bởi dữ liệu đầu vào. Một tệp PCD được tạo riêng, đặt con trỏ gần cuối một plane rồi cung cấp một chuỗi delta dài không có marker đồng bộ xen giữa, vì vậy sẽ đưa con trỏ vượt qua cuối allocation và tiếp tục ghi qua đó. Việc xử lý một tệp PCD không tin cậy, chẳng hạn bằng gm convert hoặc gm identify, hoặc thông qua bất kỳ ứng dụng nào liên kết với libGraphicsMagick, có thể làm hỏng bộ nhớ heap nằm ngoài các buffer.

Sản phẩm và phạm vi ảnh hưởng

  • GraphicsMagick Group GraphicsMagick: bị ảnh hưởng từ 1.0.0 đến trước 1.3.48 theo kiểu phiên bản semver. Thành phần liên quan là bộ mã hóa PCD / PCDS image coder.
  • Debian, gói graphicsmagick: bị ảnh hưởng từ 0 đến trước 1.4+really1.3.48-1 theo kiểu phiên bản Debian. Bản ghi liên kết phạm vi này với Debian 11, Debian 12 và Debian 13.
  • Fedora Project, gói GraphicsMagick: bị ảnh hưởng từ 0 đến trước 1.3.48 theo kiểu phiên bản RPM. Bản ghi liên kết phạm vi này với Extra Packages for Enterprise Linux 8 và 9.
  • Các nhánh, gói hoặc cấu hình không nằm trong các phạm vi trên chưa được bản ghi xác nhận là bị ảnh hưởng hoặc không bị ảnh hưởng.

Chi tiết kỹ thuật

Lỗi nằm trong bộ giải mã Photo CD, gồm PCD và PCDS, tại DecodeImage() trong coders/pcd.c. Vòng lặp giải mã delta Huffman tăng con trỏ đầu ra bằng q++ sau mỗi delta được giải mã nhưng không kiểm tra con trỏ với giới hạn cuối của các buffer plane luma và chroma được cấp phát trên heap. Con trỏ chỉ được đặt lại khi marker đồng bộ tạo plane hoặc hàng mới, vì vậy giữa các marker, số lần ghi chỉ bị giới hạn bởi dữ liệu đầu vào. Tệp PCD được tạo riêng có thể đặt con trỏ gần cuối một plane rồi cung cấp một chuỗi delta dài không có marker đồng bộ, khiến thao tác ghi vượt qua allocation. Đây là lỗi CWE-787, nhưng bản ghi không xác nhận việc ghi vượt biên có thể dẫn đến thực thi mã hay không.

Khả năng khai thác

Lỗi có thể bị kích hoạt khi một tệp PCD được xử lý cục bộ bởi gm convert, gm identify, hoặc một ứng dụng liên kết với libGraphicsMagick. Bản ghi mô tả yêu cầu tương tác chủ động của người dùng, không yêu cầu quyền đặc biệt và có độ phức tạp thấp. Khả năng tiếp cận qua mạng không được xác lập độc lập, nhưng dịch vụ xử lý tệp tải lên có thể tạo ra đường tiếp cận gián tiếp nếu nó nhận và xử lý PCD không tin cậy. Bản ghi không xác định exploit công khai; trường known_exploited cũng không cung cấp xác nhận về việc khai thác thực tế. Những trạng thái này không chứng minh rằng chưa từng có khai thác.

Tác động kỹ thuật

Khi tệp PCD được xử lý, dữ liệu delta Huffman có thể khiến con trỏ ghi đi qua cuối buffer plane trên heap. Kết quả trực tiếp là ghi vào vùng nhớ ngoài allocation, có thể gây crash, hỏng dữ liệu hoặc làm thay đổi trạng thái của tiến trình. Bản ghi mô tả điều kiện tấn công là cục bộ, không yêu cầu quyền đặc biệt, có độ phức tạp thấp và cần người dùng hoặc quy trình chủ động xử lý tệp. Tác động đến tính bảo mật, toàn vẹn và sẵn sàng của tiến trình có thể ở mức nghiêm trọng, nhưng thực thi mã và khả năng vượt qua ranh giới đặc quyền chưa được xác nhận. Phạm vi tác động ngoài tiến trình xử lý ảnh cũng chưa được thiết lập.

Tác động đến tổ chức

Lỗi ảnh hưởng đến các quy trình tự động hoặc thủ công nhận và giải mã tệp PCD không tin cậy. Ghi vượt giới hạn heap có thể làm tiến trình xử lý ảnh bị dừng, làm hỏng dữ liệu lân cận hoặc khiến dịch vụ xử lý ảnh mất sẵn sàng. Tùy trạng thái heap và cơ chế bảo vệ của tiến trình, tác động đến tính toàn vẹn hoặc bảo mật dữ liệu cũng có thể xảy ra, nhưng bản ghi không xác nhận một kịch bản chiếm quyền cụ thể. Các hệ thống chỉ xử lý dữ liệu PCD đã được tin cậy và kiểm soát chặt vẫn cần được kiểm tra để xác định chúng có chứa thành phần bị ảnh hưởng hay không.

Cách khắc phục

  1. Nâng cấp GraphicsMagick lên 1.3.48, là bản sửa upstream được bản ghi xác định. Bản sửa giới hạn con trỏ đầu ra của bộ giải mã theo cuối mỗi plane và cấp dư dung lượng cho các buffer.
  2. Với Debian, triển khai bản gói tương ứng với mốc sửa 1.4+really1.3.48-1 hoặc bản cập nhật do nhà phân phối cung cấp có chứa bản sửa này.
  3. Với Fedora Project, triển khai bản gói tương ứng với mốc sửa 1.3.48 hoặc bản cập nhật do nhà phân phối cung cấp có chứa bản sửa này.
  4. Kiểm tra và khởi động lại hoặc tái triển khai mọi ứng dụng liên kết tĩnh hoặc động với libGraphicsMagick sau khi thư viện được cập nhật.
  5. Trong thời gian chưa thể cập nhật, hạn chế xử lý PCD không tin cậy ở các luồng bị ảnh hưởng nếu hoạt động nghiệp vụ cho phép. Bản ghi không cung cấp tùy chọn cấu hình cụ thể để vô hiệu hóa riêng bộ giải mã PCD.

Cách phát hiện

  1. Kiểm kê các máy chủ, công cụ dòng lệnh và ứng dụng nhúng hoặc liên kết với GraphicsMagick, đặc biệt những nơi xử lý PCD hoặc PCDS.
  2. Kiểm tra metadata của gói và phiên bản cài đặt, sau đó đối chiếu với các ranh giới bị ảnh hưởng và đã sửa được nêu trong mục affected_summary.
  3. Xác định các luồng nhận tệp từ nguồn không tin cậy rồi chuyển tệp vào gm convert, gm identify, hoặc thư viện libGraphicsMagick.
  4. Rà soát các lần tiến trình xử lý ảnh bị treo, thoát bất thường hoặc phát hiện heap corruption sau khi xử lý PCD. Đây là biện pháp giám sát thận trọng, không phải chỉ báo IOC đã được xác nhận.
  5. Bản ghi không cung cấp log event, chữ ký tệp hoặc IOC cụ thể. Không thấy các dấu hiệu này không chứng minh hệ thống an toàn.
Nguồn (12)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.