
CVE-2026-75130: Máy chủ tài liệu MCP của Context7 được chấm 9.0 điểm, và hồ sơ không nêu phiên bản đã được sửa
- OrcaMỚIOrcaCyber: MiniMax M3.1 Flash Abliterated2026-10-29orca/orcacyber-minimax-m3.1-flash
- OrcaMỚIOrcaCyber: GLM 5.3 Flash Abliterated2026-10-2793 tok/s
- OrcaMỚIOrcaCyber: Qwen3.8 Flash Next Abliterated2026-10-26$0.80 / $1.60 trên 1 triệu token · 260 tok/s
- OrcaMỚIOrcaCyber: MiMo V2.6 Flash Abliterated2026-10-26$0.80 / $1.60 trên 1 triệu token · 92 tok/s
- MoonshotMỚIMoonshotAI: Kimi K3.1 Pro2026-10-2446Trí tuệ
- OrcaMỚIOrcaCyber: DeepSeek V4.1 Flash Abliterated2026-10-23$0.80 / $1.60 trên 1 triệu token · 104 tok/s
- minimaxMỚIMiniMax: M3.1 Flash2026-10-1929Trí tuệ
- OrcaMỚIOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 trên 1 triệu token · 65 tok/s
- deepseekMỚIDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Trí tuệ
- DeepSeekMỚIDeepSeek: DeepSeek V4.1 Flash2026-10-1740Trí tuệ
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 trên 1 triệu token · 101 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Trí tuệ
- anthropicAnthropic: Claude Sonnet 5.52026-09-2854Trí tuệ
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 trên 1 triệu token · 180 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Trí tuệ
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Trí tuệ
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Trí tuệ
- xiaomiXiaomi: MiMo-V2.6-Flash2026-09-2127Trí tuệ
- xiaomiXiaomi: MiMo-V2.6-Pro2026-09-2130Trí tuệ
- xAIGrok 4.72026-09-2134Trí tuệ
Vào ngày 18 tháng 8 năm 2026, VulnCheck đã công bố CVE-2026-75130 đối với Context7, máy chủ tài liệu thư viện do Upstash vận hành cho Model Context Protocol và được các agent lập trình truy vấn để lấy tài liệu theo phiên bản. Lỗ hổng nằm ở tính năng mà Upstash gọi là Custom AI Instructions: chủ sở hữu thư viện gắn hướng dẫn vào một mục tài liệu, Context7 phục vụ hướng dẫn đó vào cửa sổ ngữ cảnh của mọi agent tra cứu thư viện, và không có gì trên đường dẫn đó làm sạch nó. Noma Security, nơi Eli Ainhorn, nhà nghiên cứu lỗ hổng AI cấp cao, được ghi nhận là người phát hiện, đã chứng minh rằng một mục bị đầu độc có thể khiến một agent được kết nối đọc các tệp .env trong thư mục gốc của dự án, gửi nội dung của chúng đến một kho lưu trữ GitHub do kẻ tấn công kiểm soát dưới dạng issue, và xóa các thư mục cục bộ với lý do “dọn dẹp” — tất cả chỉ từ một yêu cầu tài liệu thông thường. Không có nạn nhân nào được ghi nhận. Phần còn lại của các sự cố agent được ghi nhận, mỗi sự cố có mức độ nghiêm trọng, cấp độ tin cậy và cờ tranh chấp riêng, nằm trong kho lưu trữ sự cố AI, nơi có thể đọc các mục lân cận của bản ghi này ngay bên cạnh nó.
Máy chủ của Context7 nhỏ, và đó là phần đáng để hiểu trước tiên. Bài viết của Noma lưu ý rằng nó cung cấp hai công cụ, resolve-library-id và query-docs, và rằng nó không thể tự thực thi mã, ghi tệp hay truy cập mạng. Mọi tác động được ghi nhận đều do tác nhân ở đầu bên kia thực hiện, tác nhân này thực sự có quyền truy cập hệ thống tệp, shell và mạng trên máy của nhà phát triển. Sổ đăng ký npm cho thấy cơ sở cài đặt lớn đến mức nào: @upstash/context7-mcp đã được tải xuống 4.064.176 lần trong ba mươi ngày từ 22 tháng 7 đến 20 tháng 8 năm 2026, khoảng thời gian quanh thời điểm công bố.
Cơ chế: một thư viện bị đầu độc, mọi tác nhân truy vấn nó
Bản trình diễn của Noma, được mô tả trong bài viết ContextCrush của nó ngày 5 tháng 3 năm 2026, diễn ra theo ba bước mà agent thực hiện thay vì máy chủ. Nó đã đăng ký một thư viện trong sổ đăng ký của Context7 với các quy tắc bị đầu độc được gắn kèm. Các hướng dẫn trong những quy tắc đó chỉ dẫn agent tìm kiếm và đọc mọi .env tệp trong thư mục gốc dự án; các hướng dẫn tiếp theo chỉ dẫn nó đăng nội dung lên một kho lưu trữ GitHub do kẻ tấn công kiểm soát dưới dạng issue; một tập hợp cuối cùng bảo nó xóa các thư mục và tệp cục bộ để “dọn dẹp.” Yêu cầu kéo tất cả những điều này vào ngữ cảnh là một yêu cầu bình thường — nhờ trợ lý lập trình giúp đỡ với một thư viện.
Lý do khiến đây là vấn đề chuỗi cung ứng chứ không phải kiểu tấn công chèn prompt thông thường nằm ở chỗ nội dung độc hại được đặt ở đâu. Kẻ tấn công không bao giờ chạm được vào máy của nạn nhân và cũng không cần cài văn bản vào một tài liệu mà người dùng mở. Các chỉ dẫn bị đầu độc nằm trên chính registry của Context7, được hạ tầng của Context7 lưu trữ và phục vụ, và đến qua đúng kênh đáng tin cậy như tài liệu hợp lệ, không thể phân biệt với tài liệu đó. Noma lưu ý rằng điểm tin cậy của Context7, vốn đánh giá các thư viện dựa trên lịch sử GitHub đằng sau chúng, không phòng thủ được trước điều này, vì một tài khoản tồn tại lâu có thể bị mua, bị chiếm đoạt hoặc được tạo ra. Bản tóm tắt của chính công ty về điểm cấu trúc này rất thẳng thắn: “Bề mặt tấn công không phải là những gì máy chủ MCP có thể làm. Mà là những gì nó có thể khiến tác nhân AI làm.”
Hai điểm cho một lỗi
Bản khuyến nghị này mang CVSS 3.1 9.0 (nghiêm trọng) và CVSS 4.0 6.4 (trung bình). Cả hai vector đều do VulnCheck cung cấp với tư cách CNA thực hiện việc gán điểm, và NVD ghi nhận cả hai nguyên vẹn, quy từng vector cho VulnCheck. Sự chênh lệch này không phải là sai sót; đó là cách hai khung đánh giá quy cùng một mức thiệt hại cho những cỗ máy khác nhau. CVSS 3.1 đánh dấu Scope là Changed — tức là cuộc tấn công tiêm nhiễm vượt qua từ máy chủ sang máy của nhà phát triển và xa hơn nữa — và vì thế ghi nhận toàn bộ tác động cao về tính bảo mật, toàn vẹn và khả dụng của các năng lực của agent ở mức trọng số đầy đủ. CVSS 4.0 thay Scope bằng các chỉ số riêng cho hệ thống dễ bị tổn thương và hệ thống tiếp theo: nó ghi nhận không có tác động về tính bảo mật, toàn vẹn hay khả dụng đối với bản thân Context7 (VC:N/VI:N/VA:N) và tác động cao trên các hệ thống ở phía sau (SC:H/SI:H/SA:H), mà công thức của nó có trọng số nhẹ hơn. Máy chủ chỉ là kẻ chuyển phát, không phải nạn nhân.
Sự chia rẽ lan truyền vào các cơ sở dữ liệu. Bản tư vấn của GitHub, GHSA-97r6-3rgm-v39r, được công bố lúc 18:32 UTC ngày 18 tháng 8, nửa giờ sau CVE, và mức độ nghiêm trọng tóm tắt của nó ghi là trung bình mặc dù vectơ CVSS 3.1 trong cùng bản ghi cho điểm 9,0. Cơ sở dữ liệu lỗ hổng EU của ENISA phản chiếu mục này thành EUVD-2026-61099 và chỉ lưu điểm cơ sở 6,4 theo phiên bản 4.0. Bản ghi lưu trữ mà bài viết này theo dõi chấm sự cố ở mức cao — đây không phải một trong hai điểm đã công bố — và đó là xếp hạng của bản lưu trữ, không phải phép đo của chính nó.

Một CVE được công bố vào tháng 8 cho một tiết lộ hồi tháng 3
Mã định danh CVE được đặt trước vào ngày 17 tháng 8 năm 2026 và được công bố lúc 18:02 UTC ngày 18 tháng 8, đây là ngày được ghi trong bản ghi. Vùng chứa CNA cũng mang một ngày thứ hai không xuất hiện trên các trang tổng hợp: datePublic, 5 tháng 3 năm 2026 — năm tháng rưỡi trước khi mã định danh tồn tại, và cùng ngày Noma xuất bản ContextCrush. Tài liệu tham chiếu kỹ thuật duy nhất của bản tư vấn là bài viết tháng Ba đó, mà VulnCheck gắn thẻ cho cả mô tả kỹ thuật và khai thác.
Dòng thời gian công bố của Noma giải thích khoảng trống đó. Nó báo cáo lỗ hổng cho Upstash vào ngày 18 tháng 2 năm 2026 với báo cáo đầy đủ và bằng chứng khái niệm, ghi nhận việc Upstash chấp nhận các phát hiện và bắt đầu khắc phục vào ngày 19 tháng 2, cho biết một bản vá đã "được triển khai lên môi trường sản xuất với việc làm sạch quy tắc và các rào chắn" vào ngày 23 tháng 2, đồng thời ấn định ngày công bố công khai và xác minh cuối cùng của Noma là ngày 5 tháng 3. Theo lời kể của Noma, lỗi hồi tháng Hai đã được giải quyết trong vài ngày.
Ngày tháng trên registry npm khớp với mốc thời gian đó theo cách khiến phạm vi bị ảnh hưởng trông kỳ lạ. @upstash/context7-mcp 2.1.2 được phát hành vào ngày 23 tháng 2 năm 2026 lúc 10:06 UTC, đúng ngày Noma nói rằng bản sửa đã lên production; dòng changelog của nó ghi “Xóa cảnh báo không cần thiết và cập nhật mô tả công cụ.” 2.1.3 tiếp theo vào ngày 4 tháng 3 năm 2026, một ngày trước bài viết của Noma, với ghi chú về việc từ chối các yêu cầu GET trên endpoint MCP và thêm trường source vào kết quả tìm kiếm. Không có ghi chú phát hành nào trong hai bản đề cập đến việc làm sạch, rào chắn an toàn hay cuộc tấn công injection. Phạm vi bị ảnh hưởng của CNA kết thúc ở 2.1.2, khiến 2.1.3 trở thành phiên bản đầu tiên nằm ngoài phạm vi đó.
Ba cách lý giải đều khớp với những ngày đó, và cả VulnCheck lẫn Noma đều không nêu rõ cách nào là đúng. Cách thứ nhất, được Digital Applied lập luận trong bài viết ngày 18 tháng 8 và được AI Security Wire nhắc lại vào ngày 22 tháng 8, cho rằng bản vá đã bị thoái hóa: bản dựng mang bản vá tháng Hai nằm trong khoảng bị ảnh hưởng của tháng Tám. Cách thứ hai là khoảng phiên bản chỉ được neo vào bản dựng mà nhà nghiên cứu đã kiểm thử, và rằng 2.1.3, được phát hành một ngày trước khi công bố, mới là ranh giới thực sự — một suy luận mà một số trình tổng hợp đưa ra một cách máy móc, bao gồm Feedly, nơi liệt kê “cập nhật lên phiên bản 2.1.3 hoặc mới hơn” như biện pháp giảm thiểu. Cách thứ ba là bản vá tháng Hai được áp dụng ở nơi các quy tắc được cung cấp thay vì trong gói client, trong trường hợp đó phạm vi phiên bản npm không hề mô tả bản vá. Một bản vá bảo mật âm thầm là chuyện đủ phổ biến đến mức việc thiếu một mục changelog tương ứng không kết luận được gì theo cả hai hướng.

Điều gì đã được xác lập, và điều gì chưa.
• Được xác lập bởi bản ghi chính. Mã định danh CVE, ngày công bố 18 tháng 8, VulnCheck là CNA, phân loại CWE-1427 về việc trung hòa không đúng đầu vào được sử dụng cho lời nhắc LLM, ghi công Eli Ainhorn của Noma Security, và phạm vi bị ảnh hưởng của Context7 đến 2.1.2.
• Được xác lập bởi nghiên cứu của Noma. Đường dẫn chèn thông qua Custom AI Instructions, bằng chứng khái niệm gồm ba bước, quan sát rằng máy chủ chỉ cung cấp resolve-library-id và query-docs, và tuyên bố rằng không quan sát thấy bằng chứng nào về việc khai thác trong thực tế đối với lỗ hổng tháng Hai.
• Được cơ quan đăng ký thiết lập. Ngày phát hành 2.1.2 là 23 tháng 2 năm 2026, ngày phát hành 2.1.3 là 4 tháng 3 năm 2026, và một dòng gói kể từ đó đã tiến vượt qua 4.0 lên 4.4.4 vào ngày 19 tháng 10 năm 2026.
• Chưa xác định: liệu các bản build hiện tại có bị ảnh hưởng hay không. Không có nguồn nào nói rằng dòng 4.x bị ảnh hưởng, và cũng không có nguồn nào nói rằng dòng này an toàn. Bản ghi CVE, khuyến cáo của VulnCheck và khuyến cáo của GitHub đều không nêu phiên bản đã sửa, và danh sách các phạm vi phiên bản bị ảnh hưởng trong khuyến cáo của GitHub là trống.
• Chưa xác định: bất kỳ nạn nhân nào hoặc việc khai thác trong thực tế. Hồ sơ lưu trữ ghi nhận tác hại thực tế là sai. Việc CISA bổ sung dữ liệu cho hồ sơ vào ngày 19 tháng 8 đã chấm điểm Khai thác là “none”, Có thể tự động hóa là “no” và Tác động kỹ thuật là “total”; lỗ hổng này không nằm trong danh mục KEV; bản sao của ENISA ghi nhận EPSS là 0,49 phần trăm. Nghiên cứu của Noma là một bản trình diễn, không phải báo cáo sự cố.
• Chưa được xác lập: bản thân cách diễn giải về hồi quy. Nó dựa trên sự trùng hợp về ngày giữa dòng thời gian sửa lỗi và một bản phát hành npm, và không có nguồn sơ cấp nào khẳng định rằng cùng một đường dẫn mã đã thất bại hai lần.

Sự chứng thực: nhắc lại, và im lặng ở nơi cần thiết
Các tài liệu đồng nhất với hồ sơ phần lớn đều bắt nguồn từ chính hồ sơ đó. Khuyến cáo của VulnCheck nhắc lại văn bản CVE và bổ sung phân loại điểm yếu cùng ghi nhận công lao của nhà nghiên cứu. Khuyến cáo trên GitHub là một bí danh của cùng một hồ sơ đăng ký, được công bố cùng buổi tối đó, không có phạm vi phiên bản và không có đánh giá độc lập. Mục của ENISA là một bản sao. Digital Applied, một trong hai nguồn mà kho lưu trữ trích dẫn, đã công bố phân tích của mình vào ngày 18 tháng 8 và cập nhật vào ngày 22 tháng 8 với các bản trích xuất registry mới; AI Security Wire đã công bố một bài viết thứ hai vào ngày 22 tháng 8. Cả hai đều nhắc lại khuyến cáo và chuyển tiếp suy luận hồi quy, và không bên nào tuyên bố đã xác minh độc lập.
Chúng tôi không tìm thấy bài đưa tin nào từ tòa soạn về CVE vào ngày 29 tháng 10 năm 2026 — không có bài nào từ BleepingComputer, The Register hay SecurityWeek — và các kết quả là những trang tổng hợp CVE chứ không phải bài báo. Việc thiếu vắng đó có ý nghĩa đối với cách đọc hồ sơ: kho lưu trữ chấm nó hạng A, được ghi chép đầy đủ với các nguồn sơ cấp đồng thuận, và các nguồn sơ cấp thực sự đồng thuận, nhưng sự đồng thuận ở đây là giữa một bản ghi CNA và nghiên cứu mà bản ghi đó trích dẫn, chứ không phải giữa hai phép đo độc lập. Một số trang tổng hợp bổ sung những tuyên bố mà nguồn của chúng không ủng hộ; chẳng hạn, mục của Feedly nêu rằng đã có bản vá và nêu tên 2.1.3, điều mà không có khuyến cáo nào nói, trong khi trang của VulDB trả về kiểm tra bot thay vì nội dung và hoàn toàn không thể đọc được.
Điều gì đã thay đổi, và điều gì thì không.
Đối với lỗi tháng 2, Upstash đã hành động chỉ trong vài ngày: được chấp nhận vào ngày 19 tháng 2, được sửa vào ngày 23 tháng 2, theo lời kể của Noma. Đối với hồ sơ tháng 8, tuyên bố duy nhất của nhà cung cấp mà CVE tham chiếu là một bài đăng LinkedIn của Upstash, được gắn thẻ ở đó là khuyến cáo của nhà cung cấp, mà chúng tôi không thể đọc nội dung nếu không có phiên đăng nhập. Không có khuyến cáo bảo mật GitHub nào trong phạm vi kho lưu trữ nêu phiên bản đã sửa, và mục NVD nằm ở trạng thái Deferred không có cấu hình CPE nào và lần sửa đổi cuối cùng là ngày 22 tháng 10 năm 2026, nên phân tích của chính NVD không nằm trong hồ sơ.
Bản thân gói vẫn tiếp tục được phát hành. Từ ngày 20 tháng 4 năm 2025 đến ngày 23 tháng 10 năm 2026, kho lưu trữ upstash/context7 đã phát hành 163 bản phát hành, và không có ghi chú nào của họ đề cập đến CVE này hoặc mô tả việc làm sạch các hướng dẫn tùy chỉnh mang nội dung injection. Đó là bản ghi về những gì những người bảo trì đã chọn ghi lại, không phải bằng chứng rằng không có gì được khắc phục.
Điều mà bản ghi để lại cho người vận hành là quản lý phơi nhiễm chứ không phải một dòng bản vá. Khuyến nghị của Noma tập trung vào việc rà soát các tích hợp MCP và kiểm tra những gì được truyền giữa agent và server trong lúc chạy; các hành động được OpenCVE đề xuất là nâng cấp, tắt hoặc hạn chế tính năng Custom AI Instructions, và thêm kiểm tra dữ liệu đầu vào cho server. Phiên bản vận hành của tất cả những điều đó là cùng ba bước: ghim phiên bản MCP server thay vì thả nổi theo bản latest, giữ thông tin xác thực production ra khỏi các tệp môi trường dạng văn bản thuần mà agent có thể đọc, và coi phản hồi của công cụ là dữ liệu đầu vào không đáng tin cậy thay vì là tài liệu mà agent có thể làm theo.
Mười tuần sau khi công bố, hồ sơ công khai vẫn dừng đúng ở chỗ nó đã dừng vào ngày 18 tháng 8: một mã định danh, hai điểm số lệch nhau hai dải, một phạm vi bị ảnh hưởng có cận trên là một bản dựng đã phát hành vào tháng 2, và không có bản vá nào được nêu tên. Bất kỳ ai phân loại CVE-2026-75130 đều phải quyết định dựa trên những gì các agent của họ có thể tiếp cận, vì hồ sơ không cho họ biết cần cài đặt phiên bản nào.
