Lỗ hổng cho phép phát hành bản cập nhật cho bất kỳ gói nào trong kho NPM

GitHub đã tiết lộ hai sự cố trong cơ sở hạ tầng kho lưu trữ gói NPM của mình. Vào ngày 2 tháng XNUMX, các nhà nghiên cứu bảo mật bên thứ ba (Kajetan Grzybowski và Maciej Piechota), một phần của chương trình Bug Bounty, đã báo cáo sự hiện diện của một lỗ hổng trong kho lưu trữ NPM cho phép bạn xuất bản phiên bản mới của bất kỳ gói nào bằng tài khoản của mình, không được phép thực hiện các cập nhật đó.

Lỗ hổng này xảy ra do việc kiểm tra quyền không chính xác trong mã của vi dịch vụ xử lý yêu cầu tới NPM. Dịch vụ ủy quyền đã thực hiện kiểm tra quyền của gói dựa trên dữ liệu được chuyển trong yêu cầu, nhưng một dịch vụ khác đã tải bản cập nhật lên kho lưu trữ đã xác định gói sẽ xuất bản dựa trên nội dung siêu dữ liệu của gói đã tải lên. Do đó, kẻ tấn công có thể yêu cầu xuất bản bản cập nhật cho gói của mình mà anh ta có quyền truy cập, nhưng chỉ định trong chính gói đó thông tin về gói khác mà cuối cùng sẽ được cập nhật.

Sự cố đã được khắc phục 6 giờ sau khi lỗ hổng được báo cáo, nhưng lỗ hổng này tồn tại trong NPM lâu hơn so với nhật ký đo từ xa. GitHub tuyên bố rằng không có dấu vết của các cuộc tấn công sử dụng lỗ hổng này kể từ tháng 2020 năm XNUMX, nhưng không có gì đảm bảo rằng vấn đề này chưa từng bị khai thác trước đó.

Vụ thứ hai xảy ra vào ngày 26/30. Trong quá trình làm việc kỹ thuật với cơ sở dữ liệu của dịch vụ replica.npmjs.com, sự hiện diện của dữ liệu bí mật trong cơ sở dữ liệu có thể truy cập được bởi các yêu cầu bên ngoài đã bị tiết lộ, tiết lộ thông tin về tên của các gói nội bộ được đề cập trong nhật ký thay đổi. Thông tin về những cái tên như vậy có thể được sử dụng để thực hiện các cuộc tấn công phụ thuộc vào các dự án nội bộ (vào tháng XNUMX, một cuộc tấn công tương tự đã cho phép thực thi mã trên máy chủ của PayPal, Microsoft, Apple, Netflix, Uber và XNUMX công ty khác).

Ngoài ra, do số lượng các trường hợp kho dự án lớn bị tấn công ngày càng tăng và mã độc được quảng bá thông qua việc xâm phạm tài khoản nhà phát triển, GitHub đã quyết định đưa ra xác thực hai yếu tố bắt buộc. Thay đổi sẽ có hiệu lực vào quý 2022 năm XNUMX và sẽ áp dụng cho những người bảo trì và quản trị viên các gói có trong danh sách phổ biến nhất. Ngoài ra, có báo cáo về việc hiện đại hóa cơ sở hạ tầng, trong đó việc giám sát và phân tích tự động các phiên bản mới của gói sẽ được giới thiệu để phát hiện sớm các thay đổi độc hại.

Hãy nhớ rằng, theo một nghiên cứu được thực hiện vào năm 2020, chỉ 9.27% người bảo trì gói sử dụng xác thực hai yếu tố để bảo vệ quyền truy cập và trong 13.37% trường hợp, khi đăng ký tài khoản mới, nhà phát triển đã cố gắng sử dụng lại mật khẩu bị xâm phạm đã xuất hiện trong rò rỉ mật khẩu đã biết. Trong quá trình đánh giá bảo mật mật khẩu, 12% tài khoản NPM (13% gói) đã bị truy cập do sử dụng các mật khẩu tầm thường và có thể dự đoán được, chẳng hạn như “123456”. Trong số những vấn đề có 4 tài khoản người dùng thuộc Top 20 gói phổ biến nhất, 13 tài khoản có gói được tải xuống hơn 50 triệu lần mỗi tháng, 40 tài khoản có hơn 10 triệu lượt tải xuống mỗi tháng và 282 tài khoản có hơn 1 triệu lượt tải xuống mỗi tháng. Khi tính đến việc tải các mô-đun dọc theo chuỗi phụ thuộc, việc xâm phạm các tài khoản không đáng tin cậy có thể ảnh hưởng tới 52% tất cả các mô-đun trong NPM.

Nguồn: opennet.ru

Thêm một lời nhận xét