caddyserver Caddy file_server bị vượt qua quy tắc phân biệt hoa thường, làm lộ tệp ẩn

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-92700 là gì?

Lỗ hổng CVE-2026-92700 là lỗ hổng Improper Handling of Case Sensitivity ảnh hưởng tới caddy (phiên bản bị ảnh hưởng: <= 2.11.3). Lỗ hổng này được xếp hạng ở mức Trung bình, với điểm CVSS 6.3. Lỗ hổng này đã có mã hoặc bằng chứng khai thác công khai, nhưng điều đó chưa xác nhận việc khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

Caddy là một nền tảng máy chủ có thể mở rộng, mặc định sử dụng TLS. Trong phiên bản 2.11.3 và các phiên bản cũ hơn, trong modules/caddyhttp/fileserver/staticfiles.go, fileHidden() sử dụng các phép kiểm tra filepath.Match phân biệt chữ hoa và chữ thường, vì vậy các biến thể về kiểu chữ có thể vượt qua các quy tắc ẩn trên hệ thống tệp không phân biệt hoa thường hoặc khi các đường dẫn khác kiểu chữ cùng tồn tại, làm lộ các tệp vốn được dự định ẩn.

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

  • Sản phẩm bị ảnh hưởng: caddyserver Caddy, cụ thể là các deployment dùng HTTP file_server và quy tắc hide.
  • Release bị ảnh hưởng: <= 2.11.3.
  • Điều kiện triển khai: mức phơi nhiễm phụ thuộc vào filesystem không phân biệt hoa thường, filesystem có cơ chế casefold, hoặc sự tồn tại đồng thời của các đường dẫn chỉ khác nhau về kiểu chữ.
  • Release đã được advisory của nhà cung cấp liệt kê là đã sửa: v2.11.4.
  • Bằng chứng hiện có không xác nhận trạng thái của các nhánh song song hoặc release khác ngoài ranh giới nêu trên.

Chi tiết kỹ thuật

Trong caddyserver Caddy, component HTTP file server dùng fileHidden() để kiểm tra đường dẫn với các mẫu ẩn bằng filepath.Match. Phép so khớp này phân biệt chữ hoa và chữ thường, trong khi hệ thống tệp không phân biệt hoa thường có thể coi các biến thể như .git và .GIT là cùng một tài nguyên. Trên hệ thống tệp phân biệt hoa thường, vấn đề cũng xảy ra nếu các thư mục hoặc đường dẫn chỉ khác nhau về kiểu chữ cùng tồn tại, vì chỉ biến thể khớp chính xác với mẫu ẩn bị chặn. Điều kiện khai thác là một route file_server phải phục vụ thư mục chứa tài nguyên, deployment phải dựa vào quy tắc hide, và kẻ tấn công phải truy cập được route đó qua mạng. Bản ghi xác nhận không cần xác thực hoặc tương tác của người dùng; chi tiết triển khai chính xác của bản vá không được xác lập trong bằng chứng hiện có.

Khả năng khai thác

Lỗi có thể bị khai thác từ xa qua HTTP khi Caddy công khai một file_server có quy tắc hide và tài nguyên tương ứng vẫn nằm trong thư mục được phục vụ. Bản ghi mô tả yêu cầu mạng, không cần đặc quyền, không cần xác thực và không cần tương tác của người dùng; độ phức tạp được đánh giá là thấp. Kẻ tấn công có thể thử các biến thể kiểu chữ của đường dẫn bị ẩn hoặc truy cập một đường dẫn khác kiểu chữ nếu các thư mục tương ứng cùng tồn tại. Bản ghi đánh dấu đã có public exploit, và advisory của nhà cung cấp mô tả reproduction end-to-end. Bằng chứng hiện có không xác lập việc lỗi đã bị khai thác trong môi trường thực tế.

Tác động kỹ thuật

Lỗi làm suy yếu cơ chế kiểm soát truy cập dựa trên tên đường dẫn của Caddy HTTP file server. Kết quả kỹ thuật là một tệp hoặc thư mục đáng lẽ bị hide chặn có thể được trả về khi URL dùng biến thể kiểu chữ phù hợp với cách filesystem phân giải tên. Tác động chính là mất tính bí mật trong phạm vi các tài nguyên mà route file_server có thể phục vụ; không có bằng chứng cho thấy lỗi cho phép ghi dữ liệu, thay đổi cấu hình hoặc gây mất tính sẵn sàng. Hậu quả tổ chức có thể bao gồm lộ mã nguồn, cấu hình hoặc bí mật nếu các loại dữ liệu đó nằm trong tài nguyên bị lộ. Khả năng xảy ra và mức độ thiệt hại phụ thuộc vào cấu hình hide, nội dung thư mục và hành vi phân biệt hoa thường của filesystem.

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

  • Có thể xảy ra lộ dữ liệu do các tệp được quản trị viên cho rằng đã bị ẩn vẫn có thể được truy cập qua biến thể kiểu chữ.
  • Nếu các mẫu hide bảo vệ .git, .env hoặc secrets, dữ liệu có thể bao gồm mã nguồn, thông tin cấu hình, credential, API key hoặc chuỗi kết nối cơ sở dữ liệu. Đây là hậu quả có thể xảy ra khi các tệp đó thực sự tồn tại trong thư mục được phục vụ, không phải khẳng định rằng mọi deployment đều chứa dữ liệu này.
  • Việc lộ credential hoặc khóa có thể buộc tổ chức phải đánh giá phạm vi truy cập và xoay vòng bí mật nếu kiểm tra cho thấy dữ liệu đã bị truy cập.
  • Lỗi không cho thấy khả năng sửa đổi tệp hoặc gây gián đoạn dịch vụ; tác động được xác lập chủ yếu là mất tính bí mật.

Cách khắc phục

  1. Nâng cấp caddyserver Caddy lên v2.11.4, là release được advisory của nhà cung cấp liệt kê là đã sửa lỗi này.
  2. Trước khi nâng cấp, không coi hide là biện pháp bảo vệ đầy đủ cho dữ liệu nhạy cảm. Loại các tệp bí mật khỏi thư mục được phục vụ hoặc áp dụng một lớp kiểm soát truy cập độc lập.
  3. Rà soát từng cấu hình file_server để xác định các mẫu hide, filesystem thực tế và các thư mục có tên khác kiểu chữ. Ưu tiên kiểm tra các thư mục chứa mã nguồn, tệp môi trường, credential hoặc khóa.
  4. Sau khi nâng cấp, kiểm thử các biến thể kiểu chữ trong môi trường kiểm thử và xác nhận rằng các tài nguyên cần bảo vệ không còn được phục vụ. Không suy ra rằng một release đã sửa áp dụng cho mọi nhánh khác nếu chưa có bằng chứng riêng cho nhánh đó.
  5. Nếu kiểm tra log hoặc nội dung phục vụ cho thấy dữ liệu bí mật có thể đã bị lộ, xử lý như một sự kiện lộ dữ liệu tiềm ẩn, bao gồm đánh giá phạm vi và thay đổi các bí mật liên quan.

Cách phát hiện

  1. Kiểm kê các instance caddyserver Caddy và xác định những instance có HTTP file_server đang phục vụ thư mục chứa dữ liệu nhạy cảm.
  2. Rà soát Caddyfile hoặc cấu hình tương đương để tìm các chỉ thị file_server và các mẫu hide, đặc biệt với .git, .env, secrets hoặc tên tệp nội bộ khác.
  3. Xác định loại filesystem và cách xử lý kiểu chữ của thư mục dữ liệu. Advisory nêu macOS APFS và Windows NTFS thường không phân biệt hoa thường, còn Linux có thể bị ảnh hưởng khi ext4 dùng casefold hoặc khi các thư mục khác kiểu chữ cùng tồn tại.
  4. Trong môi trường kiểm thử có kiểm soát, kiểm tra các biến thể hoa thường của từng mẫu hide bằng tệp canary không nhạy cảm. Việc một đường dẫn có trả về lỗi không chứng minh rằng mọi biến thể hoặc mọi thư mục con đều an toàn.
  5. Có thể rà soát access log để tìm các yêu cầu khác kiểu chữ so với tên bị ẩn. Đây là biện pháp giám sát phòng ngừa, không phải indicator đã được advisory xác nhận.
Nguồn (6)
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.