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.

Phân tích và khắc phục lỗ hổng Git CVE-2024-32002

bằng cách OPSWAT
Chia sẻ bài viết này
Minh Phạm và Thái Đỗ, sinh viên trường Đại học Bách khoa TP.HCM tham gia OPSWAT Chương trình học bổng
Học sinh tham gia OPSWAT Chương trình học bổng.

Một lỗ hổng nghiêm trọng trong Git cho phép tấn công RCE (thực thi mã từ xa) đã được tiết lộ gần đây, ảnh hưởng đến nhiều phiên bản Git và Microsoft Visual Studio 2017. Lỗ hổng này cho phép kẻ tấn công thao túng kho lưu trữ Git bằng các mô-đun con, khai thác lỗi trong Git cho phép ghi tệp bên ngoài cây làm việc của mô-đun con và vào thư mục .git/ . Lỗi này cho phép thực hiện một hook độc hại trong khi hoạt động sao chép kho lưu trữ vẫn đang chạy [1]. 

Lỗ hổng CVE-2024-32002 ảnh hưởng đến Microsoft Visual Studio 2017 phiên bản 15.9 và các phiên bản Git cũ hơn 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 và 2.39.4. Lỗ hổng này có thể bị khai thác trong môi trường hỗ trợ liên kết tượng trưng được bật trên hệ điều hành không phân biệt chữ hoa chữ thường. 

Mức độ nghiêm trọng của CVSS (Hệ thống chấm điểm lỗ hổng phổ biến) 3.x và thông tin vectơ với điểm cơ bản là 9.0 được gắn nhãn là nghiêm trọng, do GitHub, Inc. cung cấp.

Hiểu về Git

Git là một hệ thống kiểm soát phiên bản phân tán mã nguồn mở và miễn phí, được thiết kế để giúp các nhà phát triển phần mềm quản lý cơ sở mã nhanh chóng và hiệu quả. Nó tăng cường sự hợp tác giữa các thành viên trong nhóm phát triển bằng cách tổ chức và theo dõi các thay đổi đối với các tệp và thư mục theo cách chuẩn hóa, có cấu trúc. 

Git được sử dụng rộng rãi trong phát triển phần mềm. Các nền tảng như GitHub, GitLab và Bitbucket được xây dựng trên Git để tăng cường sự hợp tác giữa các nhà phát triển do các tính năng mạnh mẽ của nó: 

  • Ghi lại những thay đổi có thể theo dõi được vào các tệp mã, được gọi là cam kết
  • Hoàn nguyên các chỉnh sửa mã về phiên bản trước khi cần thiết. 
  • Kết hợp hiệu quả các thay đổi từ nhiều nhánh hoặc người đóng góp khác nhau. 
  • Lưu lại lịch sử về những người thực hiện thay đổi và ngày thực hiện.
Biểu diễn trực quan cấu trúc thư mục .git, hiển thị các thư mục như config, HEAD, hook, objects và ref.

Móc Git 

Khi kho lưu trữ Git được tạo hoặc sao chép, sử dụng lệnh git init hoặc git clone , một thư mục .g it được tạo ở gốc của cây làm việc. Cấu trúc thư mục của thư mục .git ban đầu trông như thế này: 

Git hooks là các tập lệnh thực thi, nằm trong thư mục .git/hooks hoặc thư mục .git/modules/module_type/module_name/hooks . Hooks được tự động kích hoạt khi các sự kiện cụ thể xảy ra trong kho lưu trữ Git.  

Khi một tệp trong thư mục hooks không có hậu tố .sample , các lệnh trong tệp đó sẽ được thực thi trước hoặc sau một hành động Git cụ thể có trong tên tệp, chẳng hạn như pre-commit, post-commitpost-checkout

Các mô-đun con Git

Một mô-đun con Git là một bản ghi trong kho lưu trữ Git tham chiếu đến một cam kết cụ thể trong kho lưu trữ bên ngoài. Khi một mô-đun con được thêm vào kho lưu trữ, một tệp mới trong thư mục .gitmodules được tạo với siêu dữ liệu về ánh xạ giữa URL của mô-đun con và thư mục cục bộ của nó. Khi một kho lưu trữ chứa nhiều mô-đun con, tệp .gitmodules sẽ bao gồm một mục nhập cho mỗi mô-đun con. [3] 

Sơ đồ thể hiện sự tương tác giữa kho lưu trữ và mô-đun con, minh họa mối quan hệ giữa Kho lưu trữ A, Mô-đun con B và Thư mục C
Nội dung ví dụ của tệp .gitmodules, hiển thị cấu hình cho một mô-đun con có tên "Ví dụ"
Hình ảnh sau đây cho thấy tệp .gitmodules trông như thế nào: 

Liên kết tượng trưng (Symlinks)

Liên kết tượng trưng, còn được gọi là liên kết tượng trưng hoặc liên kết mềm, là tệp trỏ đến tệp hoặc thư mục khác (được gọi là "mục tiêu") bằng cách chỉ định đường dẫn của tệp hoặc thư mục đó. Nếu liên kết tượng trưng bị xóa, mục tiêu của tệp hoặc thư mục đó vẫn không bị ảnh hưởng. [4] 

Một liên kết tượng trưng trong Git được tạo dưới dạng tệp có siêu dữ liệu để làm cho nó hoạt động như một tham chiếu hoặc một phím tắt đến một tệp khác. Liên kết tượng trưng có thể được sử dụng để tạo nhiều tham chiếu đến một tệp mà không cần sao chép nội dung của tệp đó.

Sơ đồ minh họa các liên kết tượng trưng và liên kết cứng đến một tệp (Tệp A), cho thấy cách các liên kết này truy cập vào cùng một nội dung tệp
Git coi liên kết tượng trưng như các tệp chuyên biệt lưu trữ đường dẫn đến tệp hoặc thư mục mà chúng tham chiếu. 
Hình ảnh hóa các liên kết tượng trưng trong kho lưu trữ Git, minh họa cấu trúc thư mục và tệp cùng đường dẫn liên kết tượng trưng của chúng
Khi một kho lưu trữ hoặc một nhánh chứa liên kết tượng trưng được sao chép hoặc kiểm tra, liên kết tượng trưng được lưu trữ trong Git sẽ được chuyển đổi thành liên kết tượng trưng trên hệ thống tệp cục bộ. 

Phân tích lỗ hổng bảo mật GIT

Phân tích bản vá

Để hiểu sâu hơn về các lỗ hổng bảo mật, các chuyên gia bảo mật thường thực hiện phân tích bản vá. Đây là một kỹ thuật giúp xác định các chức năng dễ bị tấn công và các vectơ tấn công tiềm ẩn. OPSWAT Các thành viên đã kiểm tra những thay đổi được thực hiện trong phiên bản đã vá để giải quyết lỗ hổng CVE-2024-32002 và họ phát hiện ra rằng có hai tệp đã được cập nhật để giải quyết lỗ hổng CVE này.

Một trong những tệp được cập nhật là tệp submodule--helper.c , bao gồm mã xử lý việc sao chép submodule Git. Cam kết mới trong phiên bản đã vá bao gồm hai mục sau:  

  1. Thêm hàm dir_contains_only_dotgit để đảm bảo rằng thư mục submodules không chứa bất kỳ tệp hoặc thư mục .git nào.
Thay đổi mã trong tệp có tên submodule-helper.c trong giao diện Git, hiển thị 83 mục bổ sung mà không có mục xóa nào
  1. Đã có những thay đổi đối với hàm clone_submodule() để bao gồm một điều kiện để kiểm tra xem thư mục submodule có tồn tại và trống không. Nếu thư mục không trống, quá trình sao chép sẽ bị hủy bỏ. 
Đoạn mã chi tiết từ một cam kết Git, làm nổi bật một chức năng kiểm tra nội dung thư mục trong các hoạt động mô-đun con

Bản cập nhật thứ hai trong cam kết mới nằm trong tệp t/t7406-submodule-update.sh, thêm một tập lệnh kiểm tra để xác minh rằng lỗ hổng bảo mật đã được giải quyết. 

Mở rộng các sửa đổi mã trong tệp thử nghiệm T7406-submodule-update.sh, nêu chi tiết cấu hình thử nghiệm cho các đường dẫn mô-đun con và liên kết tượng trưng

Từ Phân tích đến Khai thác

Phân tích quy trình làm việc của Symlink và Submodule trong Git

Ngoài những thông tin chi tiết thu thập được từ phân tích bản vá và mô tả về lỗ hổng CVE-2024-32002, OPSWAT Các thành viên đã làm việc để điều tra quy trình làm việc của các liên kết tượng trưng và các mô-đun con trong Git. Họ đã phân tích trình tự các sự kiện xảy ra khi người dùng sao chép một kho lưu trữ:

  1. Git bắt đầu bằng cách tải xuống các tệp và thư mục từ kho lưu trữ chính. 
  2. Nó sử dụng các định nghĩa được chỉ định trong các tệp liên kết tượng trưng để tạo lại các liên kết tượng trưng tương ứng trong hệ thống tệp cục bộ.  
  3. Nếu liên kết tượng trưng trỏ đến một tệp hiện có, liên kết tượng trưng sẽ hoạt động; nếu không, liên kết tượng trưng sẽ không hoạt động cho đến khi mục tiêu được khôi phục.  
  4. Nếu kho lưu trữ được sao chép bằng tùy chọn --recursive , Git sẽ sao chép các mô-đun con (kho lưu trữ bên ngoài) và đặt chúng vào đường dẫn thư mục như được chỉ định trong tệp .gitmodules.  
  5. Nếu liên kết tượng trưng là một phần của đường dẫn mô-đun con (ví dụ: util/module/test , trong đó util là liên kết tượng trưng trỏ đến một thư mục khác, chẳng hạn như symlink_folder ), Git sẽ lưu trữ nội dung mô-đun con trong thư mục thực tế được liên kết tượng trưng tham chiếu (ví dụ: symlink_folder/module/test ), đồng thời cho phép truy cập thông qua đường dẫn liên kết tượng trưng ban đầu. 
Biểu đồ luồng trực quan hiển thị các bước sao chép kho lưu trữ, tải xuống tệp và thư mục, tạo lại liên kết tượng trưng, sao chép các mô-đun con và di chuyển vào đúng đường dẫn

Hiểu về lỗ hổng bảo mật Git CVE-2024-32002 

Tạo kho lưu trữ độc hại

OPSWAT Các thành viên tiếp tục kiểm tra việc tạo ra các kho lưu trữ độc hại dựa trên các bản cập nhật được thực hiện cho tệp t/t7406-submodule-update.sh và chia nhỏ quá trình này thành các bước sau:

  1. Tạo một kho lưu trữ có chứa móc sau khi thanh toán
Một đoạn mã đầu cuối giới thiệu các lệnh để thiết lập móc sau khi thanh toán trong Git, bao gồm việc tạo thư mục và thêm tập lệnh
  1. Tạo một kho lưu trữ khác bao gồm một mô-đun con, nằm tại đường dẫn A/modules/x . Mô-đun con mới tham chiếu đến kho lưu trữ đã tạo trước đó.
Một đoạn mã đầu cuối minh họa quá trình thêm một mô-đun con vào kho lưu trữ bằng lệnh Git
  1. Tạo liên kết tượng trưng có tên a , trỏ đến thư mục .git trong chỉ mục Git. 
Ví dụ về tập lệnh đầu cuối làm nổi bật các lệnh để tạo và cam kết tệp .git dưới dạng tiện ích trong kho lưu trữ
Sơ đồ luồng chi tiết về một kịch bản tấn công trong đó kho lưu trữ hook độc hại được thêm vào dưới dạng một mô-đun phụ vào kho lưu trữ chính, dẫn đến việc thực thi tập lệnh
Sơ đồ hiển thị cách kẻ tấn công có thể khai thác CVE bằng cách sao chép kho lưu trữ 

Hiểu về lỗ hổng bảo mật

Khi người dùng sao chép kho lưu trữ độc hại được tạo ở bước trước bằng tùy chọn --recursive , tập lệnh độc hại từ hook sau khi thanh toán sẽ được kích hoạt, cho phép kẻ tấn công xâm nhập vào thiết bị của người dùng. 

Việc thực thi mã từ xa này xảy ra vì kho lưu trữ chính phát hiện ra một liên kết tượng trưng có tên a trỏ đến thư mục .git khi được sao chép. Với chế độ đệ quy được bật, các mô-đun con cũng được kéo vào kho lưu trữ được sao chép. Kho lưu trữ này chứa một thư mục hooks, chứa tập lệnh hook sau khi kiểm tra và thư mục cục bộ của nó nằm trong A/modules/x .  

a trỏ đến thư mục .git và hệ thống tệp không phân biệt chữ hoa chữ thường, A được hiểu là tương đương với a . Git bị đánh lừa khi viết tập lệnh hook sau khi kiểm tra vào thư mục .git/modules/query/fast/hooks/ . Nếu tìm thấy tập lệnh hook sau khi kiểm tra trong thư mục .git/modules/{module_type}/{module_name}/hooks , tập lệnh này sẽ được kích hoạt khi kho lưu trữ chính được sao chép bằng tùy chọn --recursive . Do đó, kẻ tấn công có thể xâm nhập thành công thiết bị của người dùng bằng cách thực thi mã từ xa.

Sơ đồ minh họa tương tác của nạn nhân với kho lưu trữ độc hại, bao gồm sao chép, kéo các mô-đun phụ và thực thi tập lệnh không mong muốn
Sơ đồ hiển thị luồng tấn công

Mô phỏng khai thác lỗ hổng Git

Dựa trên những phát hiện trước đó, OPSWAT Các thành viên đã tạo một kho lưu trữ chính và một móc nối để mô phỏng việc tạo ra một kho lưu trữ độc hại:

  1. Ban đầu, bạn nên cấu hình Git để luôn cho phép protocol.file , bật core.symlinks và đặt tên nhánh mặc định thành main (để tránh thông báo cảnh báo). 
Một đoạn mã đầu cuối giới thiệu các lệnh để cấu hình toàn cầu các thiết lập Git để xử lý liên kết tượng trưng và thiết lập nhánh mặc định
  1. Một tập lệnh móc hậu kiểm tra độc hại được thêm vào thư mục móc. Để đảm bảo rằng tập lệnh hậu kiểm tra có thể được thực thi trên thiết bị của người dùng, tập lệnh bash tạo ra móc này bao gồm lệnh chmod +x fast/hooks/post-checkout
Một tập lệnh đầu cuối hiển thị lệnh Python được mã hóa độc hại được nhúng trong một móc sau khi thanh toán của Git
  1. Một liên kết tượng trưng được tạo trong kho lưu trữ chính, trỏ đến thư mục .git .
Một tập lệnh đầu cuối trình bày quá trình cam kết thay đổi để bao gồm các tiện ích và tệp .git trong kho lưu trữ
Ảnh chụp màn hình danh sách thư mục kho lưu trữ với các thư mục như src, libs và .gitmodules được hiển thị trong giao diện Git
Kho lưu trữ chính dễ bị tấn công
Ảnh chụp màn hình giao diện kho lưu trữ Git hiển thị một thư mục có móc sau khi thanh toán

Thư mục /hooks có móc sau khi thanh toán

Ảnh chụp màn hình hiển thị lệnh đầu cuối để sao chép kho lưu trữ Git và phiên PowerShell với kết nối mạng được thiết lập
Khi người dùng sao chép kho lưu trữ độc hại này, kẻ tấn công có thể xâm nhập vào thiết bị của nạn nhân. 

Khắc phục

Để vô hiệu hóa mối đe dọa, người dùng có thể gỡ cài đặt Git hoặc áp dụng bản vá bảo mật mới nhất. Ngoài ra, một giải pháp như MetaDefender Endpoint có thể thông báo kịp thời cho người dùng và hiển thị tất cả các CVE đã biết trong môi trường thông qua giao diện trực quan của nó. MetaDefender Endpoint có thể phát hiện và giảm thiểu các CVE mới nhất bằng cách tận dụng khả năng của nó với hơn 3 triệu điểm dữ liệu và hơn 30.000 CVE liên quan với Thông tin mức độ nghiêm trọng. Bằng cách triển khai bất kỳ biện pháp đối phó nào, CVE sẽ được ngăn chặn hoàn toàn, loại bỏ nguy cơ tấn công mạng tàn phá.

Bạn đã sẵn sàng để đưa MetaDefender Endpoint ở tuyến đầu trong chiến lược an ninh mạng 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.