{"id":"CVE-2026-102870","kind":"vulnerability","aliases":["CVE-2026-102870","GHSA-g27p-qf6j-c96c"],"related":[],"title":"Microsoft Security Advisory CVE-2026-102870 - ASP.NET Core Remote Code Execution Vulnerability","description":"## Executive summary\n\nMicrosoft is releasing this security advisory to provide information about a vulnerability in the Blazor WebAssembly debugger included in `Microsoft.AspNetCore.Components.WebAssembly.Server`. This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability.\n\nThe Blazor WebAssembly debug proxy evaluates debugger expressions by generating and compiling C# source. Certain values originating in the application being debugged, including `ToString()` results, descriptions, and class names, are embedded in that generated source without consistent escaping. An attacker-controlled value can escape the generated string literal and execute code on a developer's machine when the developer evaluates an expression during debugging.\n\n## Announcement\n\nAnnouncement for this issue can be found at https://github.com/dotnet/announcements/issues/445\n\n## CVSS Details\n\n- **Version:** 3.1\n- **Severity:** High\n- **Score:** 8.8\n- **Vector:** `CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H`\n- **Weakness:** CWE-94 (Improper Control of Generation of Code ('Code Injection'))\n\n## Affected Platforms\n\n- **Platforms:** Windows, Linux, macOS\n- **Architectures:** All\n\n## <a name=\"affected-packages\"></a>Affected Packages\n\nThe vulnerability affects Microsoft .NET projects that use an affected package version listed below.\n\nPackage name | Affected version | Patched version\n------------ | ---------------- | ---------------\n[Microsoft.AspNetCore.Components.WebAssembly.Server](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.WebAssembly.Server) | >= 10.0.0, <= 10.0.12 | 10.0.13\n[Microsoft.AspNetCore.Components.WebAssembly.Server](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.WebAssembly.Server) | >= 11.0.0-preview.1, <= 11.0.0-rc.1 | 11.0.0-rc.2.26478.115\n\n## Advisory FAQ\n\n### <a name=\"how-affected\"></a>How do I know if I am affected?\n\nYou are affected if you use a vulnerable version of `Microsoft.AspNetCore.Components.WebAssembly.Server` to debug a Blazor WebAssembly application and evaluate an expression involving attacker-controlled application data.\n\n### <a name=\"how-fix\"></a>How do I fix the issue?\n\n1. Install the latest supported version of .NET.\n2. Update `Microsoft.AspNetCore.Components.WebAssembly.Server` to the patched version for the .NET release used by the application.\n\nOnce the updated package or runtime is installed, restart the debugger and development environment.\n\n## Other Information\n\n### Reporting Security Issues\n\nIf you have found a potential security issue in a supported version of .NET, please report it to the Microsoft Security Response Center (MSRC) via the [MSRC Researcher Portal](https://msrc.microsoft.com/report/vulnerability/new). Further information can be found in the MSRC [Report an Issue FAQ](https://www.microsoft.com/msrc/faqs-report-an-issue).\n\nSecurity reports made through MSRC may qualify for the Microsoft .NET Bounty. Details of the Microsoft .NET Bounty Program including terms and conditions are at https://aka.ms/corebounty.\n\n### Support\n\nYou can ask questions about this issue on GitHub in the .NET GitHub organization. The main repositories are located at https://github.com/dotnet/runtime and https://github.com/dotnet/aspnetcore. The Announcements repository (https://github.com/dotnet/announcements) will contain this bulletin as an issue and will include a link to a discussion issue.\n\n### Disclaimer\n\nThe information provided in this advisory is provided \"as is\" without warranty of any kind. Microsoft disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. In no event shall Microsoft Corporation or its suppliers be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if Microsoft Corporation or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply.\n\n### External Links\n\n[CVE-2026-102870](https://www.cve.org/CVERecord?id=CVE-2026-102870)\n\n### Acknowledgements\n\nalittleston3\n\n### Revisions\n\nV1.0 (10/13/2026): Advisory published.","summary":"The Blazor WebAssembly debug proxy in Microsoft.AspNetCore.Components.WebAssembly.Server builds C# source from application values such as ToString() results without proper escaping. An attacker-controlled value can break out of the generated string and run code on the developer's machine when that developer evaluates an expression while debugging.","severity":"high","cvss":8.800000190734863,"epss":0.007780000101774931,"exploited":false,"exploited_at":null,"products":[{"name":"Microsoft.AspNetCore.Components.WebAssembly.Server","fixed":["10.0.13"],"affected":">= 10.0.0, <= 10.0.12","ecosystem":"nuget"},{"name":"Microsoft.AspNetCore.Components.WebAssembly.Server","fixed":["11.0.0-rc.2.26478.115"],"affected":">= 11.0.0-preview.1, <= 11.0.0-rc.1","ecosystem":"nuget"}],"ecosystems":["nuget"],"tags":["aspnet-core","blazor","cwe-94","dotnet","linux","macos","package","windows"],"not_affected_if":["debugging-not-used","not-using-blazor-webassembly","versions-outside-affected-range"],"how_to_check":"Check the project's NuGet references for Microsoft.AspNetCore.Components.WebAssembly.Server and compare the version to the affected ranges (10.0.0 to 10.0.12, or 11.0.0-preview.1 to 11.0.0-rc.1).\nRun dotnet list package to see the resolved version.","fix":"Update Microsoft.AspNetCore.Components.WebAssembly.Server to 10.0.13 on the 10.x line, or to 11.0.0-rc.2.26478.115 on the 11.x preview line, then restart the debugger and IDE.","status":"open","published_at":"2026-10-13T19:17:51+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","triaged_at":"2026-10-23T19:51:17+00:00","updated_at":"2026-10-23T23:44:52+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-23T19:51:17Z","model":"claude-haiku-5-5","output":{"fix":"Update Microsoft.AspNetCore.Components.WebAssembly.Server to 10.0.13 on the 10.x line, or to 11.0.0-rc.2.26478.115 on the 11.x preview line, then restart the debugger and IDE.","summary":"The Blazor WebAssembly debug proxy in Microsoft.AspNetCore.Components.WebAssembly.Server builds C# source from application values such as ToString() results without proper escaping. An attacker-controlled value can break out of the generated string and run code on the developer's machine when that developer evaluates an expression while debugging.","category":"package","who_cares":["aspnet-core","blazor","dotnet","windows","linux","macos"],"confidence":0.8,"analyst_note":"","how_to_check":"Check the project's NuGet references for Microsoft.AspNetCore.Components.WebAssembly.Server and compare the version to the affected ranges (10.0.0 to 10.0.12, or 11.0.0-preview.1 to 11.0.0-rc.1).\nRun dotnet list package to see the resolved version.\nunknown","needs_analyst":false,"not_affected_if":["not-using-blazor-webassembly","debugging-not-used","versions-outside-affected-range"],"severity_if_unknown":"high"},"cost_usd":0.00059,"input_tokens":3685,"output_tokens":444,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-102870':6A,15A,23A '-2026':5A,14A,22A '-94':31B,224C '/av':213C '/corebounty.':439C '/dotnet/announcements)':473C '/dotnet/announcements/issues/445':201C '/dotnet/aspnetcore.':467C '/dotnet/runtime':463C '/msrc/faqs-report-an-issue).':411C '/packages/microsoft.aspnetcore.components.webassembly.server)':266C,273C '/report/vulnerability/new).':396C '1':323C '10.0.0':267C '10.0.12':268C '10.0.13':269C '11.0.0':274C,276C,278C '2':331C '3.1':205C,212C '8.8':209C 'advis':561C 'advisori':3A,92C,108C,280C,496C 'affect':233C,241C,245C,252C,259C,289C,292C 'aka.ms':438C 'aka.ms/corebounty.':437C 'also':109C 'announc':190C,191C,469C 'applic':48B,120C,144C,306C,315C,345C 'architectur':239C 'ask':443C 'asp.net':7A 'aspnet':27B 'aspnet-cor':26B 'attack':59B,165C,313C 'attacker-control':58B,164C,312C 'blazor':29B,38B,101C,126C,304C 'bounti':423C,429C 'break':63B 'build':44B 'bulletin':477C 'busi':547C 'c':45B,137C 'c96c':20A 'center':387C 'certain':139C 'class':152C 'code':10A,71B,176C,230C,231C 'compil':136C 'condit':434C 'consequenti':544C 'consist':161C 'contain':475C 'control':60B,166C,226C,314C 'core':8A,28B 'corpor':530C,555C 'cve':4A,13A,21A 'cvss':202C,211C 'cwe':30B,223C 'damag':538C,551C,567C 'data':316C 'debug':40B,84B,128C,146C,189C,302C 'debugg':103C,131C,356C 'descript':150C 'detail':203C,424C 'develop':74B,79B,114C,179C,184C,358C 'direct':541C 'disclaim':490C,507C 'discuss':488C 'dotnet':32B 'either':510C 'embed':155C 'environ':359C 'escap':56B,162C,169C 'evalu':80B,130C,185C,308C 'even':552C 'event':527C 'execut':11A,85C,175C 'express':82B,132C,187C,310C,511C 'faq':281C,408C 'fit':520C 'fix':320C 'found':197C,368C,401C 'g27p':18A 'generat':67B,134C,158C,171C,228C 'ghsa':17A 'ghsa-g27p-qf6j-c96c':16A 'github':449C,453C 'github.com':200C,462C,466C,472C 'github.com/dotnet/announcements)':471C 'github.com/dotnet/announcements/issues/445':199C 'github.com/dotnet/aspnetcore.':465C 'github.com/dotnet/runtime':461C 'guidanc':111C 'h':221C 'h/a':220C 'h/i':219C 'high':207C 'impli':513C 'improp':225C 'incident':543C 'includ':104C,147C,431C,483C,514C,540C 'indirect':542C 'inform':95C,361C,398C,492C 'inject':232C 'instal':324C,353C 'involv':311C 'issu':194C,322C,364C,372C,407C,447C,480C,489C 'kind':505C 'know':285C 'l/pr':215C 'latest':326C 'liabl':535C 'link':485C 'linux':33B,237C 'list':255C 'liter':173C 'locat':459C 'loss':545C 'machin':76B,181C 'maco':34B,238C 'made':414C 'main':456C 'may':417C 'merchant':518C 'microsoft':1A,87C,246C,384C,421C,427C,506C,529C,554C 'microsoft.aspnetcore.components.webassembly.server':24A,25A,43B,106C,263C,270C,300C,333C 'msrc':388C,391C,404C,416C 'msrc.microsoft.com':395C 'msrc.microsoft.com/report/vulnerability/new).':394C 'n/ac':214C 'n/ui':216C 'name':153C,258C 'net':247C,330C,340C,378C,422C,428C,452C 'organ':454C 'origin':141C 'packag':35B,242C,253C,257C,349C 'particular':523C 'patch':261C,336C 'platform':234C,235C 'pleas':379C 'portal':393C 'possibl':564C 'potenti':370C 'preview.1':275C 'profit':548C 'program':430C 'project':248C 'proper':55B 'provid':94C,110C,493C,498C 'proxi':41B,129C 'purpos':524C 'qf6j':19A 'qualifi':418C 'question':444C 'r/s':217C 'rc.1':277C 'rc.2.26478.115':279C 'releas':89C,341C 'remot':9A 'remov':122C 'report':362C,380C,405C,413C 'repositori':457C,470C 'research':392C 'respons':386C 'restart':354C 'result':53B,149C 'run':70B 'runtim':351C 'score':208C 'secur':2A,91C,363C,371C,385C,412C 'sever':206C 'shall':528C 'sourc':46B,138C,159C 'special':550C 'string':68B,172C 'summari':86C 'supplier':533C,558C 'support':327C,375C,440C 'term':432C 'tostr':52B,148C 'u/c':218C 'updat':118C,332C,348C 'use':250C,295C,342C 'valu':49B,61B,140C,167C 'vector':210C 'version':204C,254C,260C,262C,298C,328C,337C,376C 'via':389C 'vulner':12A,98C,124C,244C,297C 'warranti':502C,509C,516C 'weak':222C 'webassembl':39B,102C,127C,305C 'whatsoev':539C 'window':36B,236C 'without':54B,160C,501C 'www.microsoft.com':410C 'www.microsoft.com/msrc/faqs-report-an-issue).':409C 'www.nuget.org':265C,272C 'www.nuget.org/packages/microsoft.aspnetcore.components.webassembly.server)':264C,271C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-13T19:17:51+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-g27p-qf6j-c96c","url":"https://github.com/advisories/GHSA-g27p-qf6j-c96c","severity":"high","published_at":"2026-10-13T20:27:36+00:00","modified_at":"2026-10-19T19:19:34+00:00","first_seen_at":"2026-10-23T19:11:32+00:00","fetched_at":"2026-10-23T19:11:32+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-102870","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-102870","severity":null,"published_at":"2026-10-13T19:17:51+00:00","modified_at":"2026-10-22T22:17:49+00:00","first_seen_at":"2026-10-23T23:44:52+00:00","fetched_at":"2026-10-23T23:44:52+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"}