Lộ GitHub access token trong JetBrains IDE qua GitHub Plugin

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

Lỗ hổng CVE-2024-37051 là lỗ hổng Insufficiently Protected Credentials ảnh hưởng tới IntelliJ IDEA (phiên bản bị ảnh hưởng: 2023.1 – < 2023.1.7, 2023.1 – < 2023.2.7 và các phiên bản bị ảnh hưởng khác), Aqua (phiên bản bị ảnh hưởng: < 2024.1.2), CLion (phiên bản bị ảnh hưởng: 2023.1 – < 2023.1.7, 2023.1 – < 2023.2.4 và các phiên bản bị ảnh hưởng khác) và 10 sản phẩm khác. Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.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

Token truy cập GitHub có thể bị lộ tới các trang web bên thứ ba trong các IDE JetBrains sau phiên bản 2023.1 và nhỏ hơn các phiên bản sau: IntelliJ IDEA 2023.1.7, 2023.2.7, 2023.3.7, 2024.1.3, 2024.2 EAP3; Aqua 2024.1.2; CLion 2023.1.7, 2023.2.4, 2023.3.5, 2024.1.3, 2024.2 EAP2; DataGrip 2023.1.3, 2023.2.4, 2023.3.5, 2024.1.4; DataSpell 2023.1.6, 2023.2.7, 2023.3.6, 2024.1.2, 2024.2 EAP1; GoLand 2023.1.6, 2023.2.7, 2023.3.7, 2024.1.3, 2024.2 EAP3; MPS 2023.2.1, 2023.3.1, 2024.1 EAP2; PhpStorm 2023.1.6, 2023.2.6, 2023.3.7, 2024.1.3, 2024.2 EAP3; PyCharm 2023.1.6, 2023.2.7, 2023.3.6, 2024.1.3, 2024.2 EAP2; Rider 2023.1.7, 2023.2.5, 2023.3.6, 2024.1.3; RubyMine 2023.1.7, 2023.2.7, 2023.3.7, 2024.1.3, 2024.2 EAP4; RustRover 2024.1.1; WebStorm 2023.1.6, 2023.2.7, 2023.3.7, 2024.1.4

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

Bản ghi đánh dấu trạng thái mặc định là không bị ảnh hưởng ngoài các phạm vi dưới đây. Các bản ghi có điều kiện less than nghĩa là bản phát hành tại ranh giới được nêu là bản sửa lỗi cho nhánh tương ứng.

  • IntelliJ IDEA: nhánh 2023.1 nhỏ hơn 2023.1.7, 2023.2.7, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP3.
  • Aqua: phiên bản nhỏ hơn 2024.1.2.
  • CLion: nhánh 2023.1 nhỏ hơn 2023.1.7, 2023.2.4, 2023.3.5, 2024.1.3 hoặc 2024.2 EAP2.
  • DataGrip: nhánh 2023.1 nhỏ hơn 2023.1.3, 2023.2.4, 2023.3.5 hoặc 2024.1.4.
  • DataSpell: nhánh 2023.1 nhỏ hơn 2023.1.6, 2023.2.7, 2023.3.6, 2024.1.2 hoặc 2024.2 EAP1.
  • GoLand: nhánh 2023.1 nhỏ hơn 2023.1.6, 2023.2.7, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP3.
  • MPS: nhánh 2023.1 nhỏ hơn 2023.2.1, 2023.3.1 hoặc 2024.1 EAP2.
  • PhpStorm: nhánh 2023.1 nhỏ hơn 2023.1.6, 2023.2.6, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP3.
  • PyCharm: nhánh 2023.1 nhỏ hơn 2023.1.6, 2023.2.7, 2023.3.6, 2024.1.3 hoặc 2024.2 EAP2.
  • Rider: nhánh 2023.1 nhỏ hơn 2023.1.7, 2023.2.5, 2023.3.6 hoặc 2024.1.3.
  • RubyMine: nhánh 2023.1 nhỏ hơn 2023.1.7, 2023.2.7, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP4.
  • RustRover: phiên bản nhỏ hơn 2024.1.1.
  • WebStorm: nhánh 2023.1 nhỏ hơn 2023.1.6, 2023.2.7, 2023.3.7 hoặc 2024.1.4.

Các nhánh song song hoặc các bản phát hành không được liệt kê không nên được coi là đã được xác minh chỉ dựa trên một ranh giới sửa lỗi khác.

Chi tiết kỹ thuật

Lỗi nằm trong JetBrains GitHub Plugin trên nền tảng IntelliJ. Nội dung độc hại trong pull request của một dự án GitHub, khi được IDE xử lý, có thể khiến access token của GitHub bị gửi hoặc để lộ tới một máy chủ bên thứ ba. Điều kiện được xác nhận gồm IDE có plugin này được bật, cấu hình và đang sử dụng; đánh giá của JetBrains mô tả khả năng truy cập qua mạng, không cần quyền của kẻ tấn công, độ phức tạp thấp và yêu cầu người dùng tương tác. Chi tiết triển khai chính xác, chẳng hạn đường xử lý nội dung hoặc cơ chế gửi token, không được nguồn công bố, vì vậy không nên giả định đây là một loại XSS hoặc gán cho lỗi một endpoint cụ thể.

Khả năng khai thác

Lỗi có thể bị kích hoạt từ xa thông qua nội dung độc hại trong pull request mà IDE xử lý. Theo đánh giá hiệu lực do JetBrains cung cấp, kẻ tấn công không cần xác thực hoặc đặc quyền trước, nhưng người dùng phải tương tác với chức năng liên quan trong IDE. Bản ghi được cung cấp đánh dấu rằng đã có public exploit, nhưng không cung cấp mã khai thác, các bước khai thác, chiến dịch, nạn nhân hoặc bằng chứng lạm dụng thực tế. Trạng thái known exploited và ransomware campaign không được xác lập trong bản ghi.

Tác động kỹ thuật

Kết quả kỹ thuật trực tiếp là GitHub access token có thể bị tiết lộ cho một trang hoặc máy chủ bên thứ ba trong quá trình IDE xử lý pull request. Quyền của kẻ tấn công sau đó bị giới hạn hoặc mở rộng theo quyền được cấp cho token, nhưng token có quyền ghi có thể dẫn tới thay đổi trái phép đối với kho mã hoặc tài nguyên GitHub. Đánh giá được cung cấp mô tả ảnh hưởng cao đến tính bí mật và tính toàn vẹn, không xác định ảnh hưởng đến tính sẵn sàng; điều này không có nghĩa mọi token bị lộ đều có quyền cao. Lỗi vượt qua ranh giới giữa IDE, GitHub và máy chủ bên thứ ba, nhưng bản ghi không xác nhận rằng một tổ chức cụ thể đã bị xâm nhập.

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

Lộ token có thể làm mất tính bí mật của mã nguồn, dữ liệu pull request và các tài nguyên GitHub mà token được phép truy cập. Nếu token có quyền ghi, kẻ tấn công có thể thực hiện thay đổi trái phép trong phạm vi quyền của token, chẳng hạn thay đổi mã nguồn hoặc quy trình phát triển. Mức độ ảnh hưởng thực tế phụ thuộc vào loại token, quyền của token và việc token có còn hiệu lực hay không. JetBrains khuyến nghị thu hồi các token đã được plugin sử dụng nếu người dùng từng dùng chức năng GitHub pull request trong IDE bị ảnh hưởng.

Cách khắc phục

  1. Cập nhật IDE: nâng từng sản phẩm lên bản sửa lỗi tương ứng với nhánh đang sử dụng. Các ranh giới được xác nhận gồm: Aqua 2024.1.2; CLion 2023.1.7, 2023.2.4, 2023.3.5, 2024.1.3 hoặc 2024.2 EAP2; DataGrip 2024.1.4; DataSpell 2023.1.6, 2023.2.7, 2023.3.6, 2024.1.2 hoặc 2024.2 EAP1; GoLand 2023.1.6, 2023.2.7, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP3; IntelliJ IDEA 2023.1.7, 2023.2.7, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP3; MPS 2023.2.1, 2023.3.1 hoặc 2024.1 EAP2; PhpStorm 2023.1.6, 2023.2.6, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP3; PyCharm 2023.1.6, 2023.2.7, 2023.3.6, 2024.1.3 hoặc 2024.2 EAP2; Rider 2023.1.7, 2023.2.5, 2023.3.6 hoặc 2024.1.3; RubyMine 2023.1.7, 2023.2.7, 2023.3.7, 2024.1.3 hoặc 2024.2 EAP4; RustRover 2024.1.1; WebStorm 2023.1.6, 2023.2.7, 2023.3.7 hoặc 2024.1.4.
  2. Cập nhật plugin: bảo đảm JetBrains GitHub Plugin đã nhận bản sửa lỗi. Các bản plugin bị ảnh hưởng đã được gỡ khỏi JetBrains Marketplace.
  3. Thu hồi token: nếu chức năng GitHub pull request từng được sử dụng trên IDE có khả năng bị ảnh hưởng, thu hồi cả OAuth integration và Personal Access Token mà plugin sử dụng. Sau khi thu hồi, cần cấu hình lại plugin vì các chức năng của plugin, bao gồm Git operations, sẽ ngừng hoạt động cho đến khi thiết lập lại.
  4. Xử lý bản cũ: GitHub đã phối hợp với JetBrains để áp dụng biện pháp giảm thiểu, vì vậy plugin trên các bản IDE cũ có thể không còn hoạt động như trước. Không suy ra trạng thái an toàn của các nhánh hoặc bản phát hành không được liệt kê từ một bản sửa lỗi của nhánh khác.

Cách phát hiện

  1. Kiểm kê tất cả JetBrains IDE và đối chiếu build đang cài đặt với các nhánh bị ảnh hưởng và bản sửa lỗi trong affected_summary và remediation.
  2. Kiểm tra JetBrains GitHub Plugin có được cài đặt, bật, cấu hình và đang được sử dụng hay không, đặc biệt trên các máy đã mở hoặc xử lý GitHub pull request.
  3. Xác định các OAuth integration và Personal Access Token mà plugin đang sử dụng. Tên mặc định của token có thể là IntelliJ IDEA GitHub integration plugin, nhưng tổ chức cũng có thể dùng tên tùy chỉnh.
  4. Nếu plugin đã được dùng để xử lý pull request trong thời gian có thể bị ảnh hưởng, coi token liên quan là có khả năng đã bị lộ và thực hiện thu hồi, sau đó cấu hình lại plugin.
  5. Có thể rà soát GitHub audit log và hoạt động của token để tìm hành vi bất thường như một biện pháp phòng ngừa. Không có log đáng ngờ không chứng minh rằng token chưa bị lộ.
Nguồn (20)
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.