{"id":"CVE-2026-114647","kind":"vulnerability","aliases":["CVE-2026-114647"],"related":[],"title":"MongoDB C# Driver: FindOneAndReplace accepts $-prefixed field names, altering documents","description":"The MongoDB C# Driver does not reject replacement documents whose top-level field names begin with a dollar sign in FindOneAndReplace, unlike other replace operations. An application that builds such a document from user-supplied field names can have the server apply update operators instead of a full replacement. The effect is limited to the document matched by the application's own filter, whose contents can be modified in ways the application did not intend.","summary":"The MongoDB C# Driver's FindOneAndReplace does not reject replacement documents whose top-level field names start with a dollar sign, unlike other replace operations. If the application builds such a document from user-supplied field names, the server can apply update operators instead of a full replacement, modifying the matched document in unintended ways.","severity":"medium","cvss":5.3,"epss":0.00259,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["csharp","dotnet","mongodb","package"],"not_affected_if":["fixed-document-shape","no-user-controlled-keys"],"how_to_check":"- Search the codebase for `FindOneAndReplace` calls that build the replacement document from user-supplied field names.\n- Check the installed driver version with `dotnet list package` and look for `MongoDB.Driver` below the fixed release.","fix":"- Upgrade the `MongoDB.Driver` NuGet package to a patched version (unknown exact version; the sources do not say).\n- Do not pass user-supplied field names as top-level keys of replacement documents; validate or reject keys starting with `$`.","status":"open","published_at":"2026-10-22T19:17:38+00:00","first_seen_at":"2026-10-23T21:57:31+00:00","triaged_at":"2026-10-25T04:19:05+00:00","updated_at":"2026-10-25T04:19:05+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T04:19:05Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the `MongoDB.Driver` NuGet package to a patched version (unknown exact version; the sources do not say).\n- Do not pass user-supplied field names as top-level keys of replacement documents; validate or reject keys starting with `$`.","reach":"unknown","title":"MongoDB C# Driver: FindOneAndReplace accepts $-prefixed field names, altering documents","impact":"medium","summary":"The MongoDB C# Driver's FindOneAndReplace does not reject replacement documents whose top-level field names start with a dollar sign, unlike other replace operations. If the application builds such a document from user-supplied field names, the server can apply update operators instead of a full replacement, modifying the matched document in unintended ways.","category":"package","nicknames":[],"who_cares":["csharp","dotnet","mongodb"],"confidence":0.6,"needs_auth":"unknown","worst_case":"matched document is modified with unintended update operators","analyst_note":"Check the NVD entry for the affected and fixed driver versions and whether the flaw needs an attacker-controlled field name path; the sources here do not name them.","how_to_check":"- Search the codebase for `FindOneAndReplace` calls that build the replacement document from user-supplied field names.\n- Check the installed driver version with `dotnet list package` and look for `MongoDB.Driver` below the fixed release.","needs_analyst":true,"not_affected_if":["fixed-document-shape","no-user-controlled-keys"],"who_is_affected":"Applications using the MongoDB C# Driver's FindOneAndReplace where the replacement document is built from user-supplied top-level field names. Applications that use fixed document shapes, or that do not call FindOneAndReplace with user-controlled keys, are not exposed. The effect is limited to the document matched by the application's own filter.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000671,"input_tokens":3385,"output_tokens":665,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-114647':13A,16A '-2026':12A,15A 'accept':5A 'alter':9A 'appli':63B,121C 'applic':49B,105C,139C,151C 'begin':93C 'build':50B,107C 'c':2A,23B,80C 'content':144C 'csharp':17B 'cve':11A,14A 'document':10A,31B,53B,74B,86C,110C,135C 'dollar':41B,96C 'dotnet':18B 'driver':3A,24B,81C 'effect':130C 'field':7A,36B,58B,91C,115C 'filter':142C 'findoneandreplac':4A,26B,99C 'full':69B,127C 'instead':66B,124C 'intend':154C 'level':35B,90C 'limit':132C 'match':73B,136C 'modifi':71B,147C 'mongodb':1A,19B,22B,79C 'name':8A,37B,59B,92C,116C 'oper':46B,65B,103C,123C 'packag':20B 'prefix':6A 'reject':29B,84C 'replac':30B,45B,70B,85C,102C,128C 'server':61B,120C 'sign':42B,97C 'start':38B 'suppli':57B,114C 'top':34B,89C 'top-level':33B,88C 'unintend':76B 'unlik':43B,100C 'updat':64B,122C 'user':56B,113C 'user-suppli':55B,112C 'way':77B,149C 'whose':32B,87C,143C","nicknames":[],"mitigations":[],"who_affected":"Applications using the MongoDB C# Driver's FindOneAndReplace where the replacement document is built from user-supplied top-level field names. Applications that use fixed document shapes, or that do not call FindOneAndReplace with user-controlled keys, are not exposed. The effect is limited to the document matched by the application's own filter.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-22T19:17:38+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"cna@mongodb.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-114647","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-114647","severity":null,"published_at":"2026-10-22T19:17:38+00:00","modified_at":"2026-10-23T19:45:03+00:00","first_seen_at":"2026-10-23T21:57:31+00:00","fetched_at":"2026-10-23T22:29:02+00:00","note":null},{"source":"epss","external_id":"CVE-2026-114647","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-114647","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T07:15:51+00:00","fetched_at":"2026-10-24T07:15:51+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}