Skip to content

Commit 916a9f4

Browse files
authored
Merge pull request #47 from DeagleGross/dmkorolev/issue-triage-agent
Dmkorolev/issue triage agent
2 parents f0d3fe1 + faac056 commit 916a9f4

1 file changed

Lines changed: 171 additions & 31 deletions

File tree

.github/workflows/issue-triage-agent.md

Lines changed: 171 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,52 @@ Read the full issue title and body first using:
8686
gh issue view <NUMBER> --repo $GITHUB_REPOSITORY --json title,body,labels,number
8787
```
8888

89+
## CRITICAL: Security-Sensitive Issue Handling
90+
91+
**Before performing ANY analysis**, determine whether the issue describes or hints at
92+
a security vulnerability, MSRC case, exploit, or anything that could compromise
93+
the security of services, applications, or users relying on ASP.NET Core or its
94+
tooling.
95+
96+
**Indicators of a security-sensitive issue:**
97+
- Mentions CVE, MSRC, vulnerability, exploit, RCE, XSS, CSRF bypass, SQL injection,
98+
privilege escalation, authentication bypass, token leakage, secret exposure,
99+
deserialization attack, path traversal, denial of service, or similar terms
100+
- Describes a way to bypass security controls, authorization, or authentication
101+
- Shows how to access data or systems without proper authorization
102+
- Reports a crash or unexpected behavior that could be weaponized
103+
- Mentions "responsible disclosure", "coordinated disclosure", or "security advisory"
104+
- Contains proof-of-concept code that demonstrates breaking a security boundary
105+
106+
**If the issue IS or MAY BE security-sensitive, you MUST:**
107+
108+
1. **STOP all detailed analysis immediately.** Do NOT describe the vulnerability
109+
mechanism, do NOT explain how or why it is broken, do NOT include reproduction
110+
steps, do NOT reference specific code paths or attack vectors.
111+
2. Apply ONLY the area label (e.g., `area-auth`, `area-networking`) and `bug`.
112+
3. Post an extremely minimal comment — nothing more than:
113+
114+
```markdown
115+
### Triage Summary
116+
117+
**Area:** `area-xyz`
118+
**Type:** `bug`
119+
120+
> This issue may involve a security-sensitive topic. Detailed triage has been
121+
> intentionally withheld. Please review this issue through the appropriate
122+
> internal security process. If this is a genuine security vulnerability, it
123+
> should be reported privately via https://msrc.microsoft.com and **not** in a
124+
> public GitHub issue.
125+
```
126+
127+
4. Do NOT search for or mention duplicates. Do NOT add notes explaining the
128+
impact, root cause, or affected components beyond the area label.
129+
130+
**This rule overrides ALL other instructions.** When in doubt about whether
131+
something is security-sensitive, treat it as security-sensitive.
132+
133+
---
134+
89135
## Step 1: Area Classification
90136

91137
Classify the issue into exactly **one** area label from the list below. Pick the
@@ -94,37 +140,131 @@ API names mentioned.
94140

95141
### Area Labels Reference
96142

97-
| Label | Description |
98-
|-------|-------------|
99-
| `area-auth` | Authentication, Authorization, OAuth, OIDC, Bearer tokens |
100-
| `area-blazor` | Blazor, Razor Components (WASM issues may also relate to dotnet/runtime) |
101-
| `area-commandlinetools` | CLI tools: dotnet-dev-certs, dotnet-user-jwts, OpenAPI tooling |
102-
| `area-dataprotection` | Data Protection APIs and key management |
103-
| `area-grpc` | gRPC wire-up, templates (library itself is grpc/grpc-dotnet) |
104-
| `area-healthchecks` | Health check endpoints and middleware |
105-
| `area-hosting` | Host builder, GenericHost, WebHost, startup |
106-
| `area-identity` | ASP.NET Core Identity, identity providers |
107-
| `area-infrastructure` | MSBuild, build scripts, CI, installers, shared framework |
108-
| `area-middleware` | URL rewrite, redirect, response cache/compression, session, caching |
109-
| `area-minimal` | Minimal APIs, endpoint filters, parameter binding, request delegate generator |
110-
| `area-mvc` | MVC, Controllers, Localization, CORS, templates |
111-
| `area-networking` | Kestrel, HTTP/2, HTTP/3, YARP, WebSockets, HttpClient factory, HTTP abstractions |
112-
| `area-perf` | Performance bugs, perf infrastructure, benchmarks |
113-
| `area-routing` | Endpoint routing, route matching, URL generation |
114-
| `area-security` | Security features and hardening |
115-
| `area-signalr` | SignalR clients and servers |
116-
| `area-ui-rendering` | MVC Views/Pages, Razor Views/Pages, Razor engine rendering |
117-
| `area-unified-build` | dotnet/dotnet unified build, source-build |
118-
119-
**Hints for disambiguation:**
120-
- Kestrel, HTTP protocols, WebSockets, server errors → `area-networking`
121-
- Blazor component lifecycle, JSInterop, WASM, render modes → `area-blazor`
122-
- Razor Pages rendering, TagHelpers, view compilation → `area-ui-rendering`
123-
- `MapGet`/`MapPost`, endpoint filters, `Results.*``area-minimal`
124-
- Controller-based APIs, `[ApiController]`, model binding in controllers → `area-mvc`
125-
- OAuth/OIDC middleware, `[Authorize]`, policy-based auth → `area-auth`
126-
- `SignInManager`, `UserManager`, Identity scaffolding → `area-identity`
127-
- Build failures, CI, `eng/` scripts, package references → `area-infrastructure`
143+
Each area below lists key types, APIs, and concepts. Use these as strong signals
144+
when the issue title/body mentions them.
145+
146+
#### `area-networking`
147+
Kestrel, HttpSys, HTTP/2, HTTP/3, QUIC, YARP, WebSockets, HTTP abstractions, connection management.
148+
**Key types:** `KestrelServer`, `KestrelServerOptions`, `KestrelServerLimits`, `ListenOptions`, `HttpsConnectionAdapterOptions`, `Http2Limits`, `Http3Limits`, `HttpSysOptions`, `ConnectionContext`, `ConnectionHandler`, `IConnectionBuilder`, `IConnectionFactory`, `IConnectionListener`, `IConnectionListenerFactory`, `ConnectionAbortedException`, `ConnectionResetException`, `AddressInUseException`, `MinDataRate`, `PipeReader`, `PipeWriter`, `IDuplexPipe`, `IServer`
149+
**Config:** `UseKestrel()`, `ConfigureKestrel()`, `UseHttpSys()`, `Listen()`, `ListenAnyIP()`, `ListenLocalhost()`, `UseHttps()`
150+
**Concepts:** port binding, TLS/SSL, HTTPS, connection timeout, keep-alive, request body size limits, named pipes, Unix sockets, reverse proxy, connection middleware, transport layer, `System.IO.Pipelines`
151+
152+
#### `area-blazor`
153+
Blazor, Razor Components, WebAssembly, interactive rendering modes, circuits.
154+
**Key types:** `ComponentBase`, `LayoutComponentBase`, `DynamicComponent`, `ErrorBoundary`, `NavigationManager`, `PersistentComponentState`, `CascadingValue<T>`, `RenderMode` (`InteractiveServer`, `InteractiveWebAssembly`, `InteractiveAuto`), `EditContext`, `DataAnnotationsValidator`, `CircuitHandler`, `NavLink`, `RouteView`, `HeadOutlet`, `StreamRendering`, `IComponentRenderMode`, `RenderFragment`, `EventCallback`, `IJSRuntime`, `IJSObjectReference`, `ProtectedBrowserStorage`
155+
**Config:** `AddRazorComponents()`, `AddInteractiveServerComponents()`, `AddInteractiveWebAssemblyComponents()`, `MapRazorComponents<T>()`
156+
**Concepts:** `.razor` files, `@code`, render tree, JSInterop, circuit, prerendering, streaming rendering, enhanced navigation, form handling, cascading parameters, Blazor Server, Blazor WASM, Blazor Web App
157+
158+
#### `area-auth`
159+
Authentication, Authorization, OAuth, OIDC, Bearer tokens, cookie auth, JWT.
160+
**Key types:** `IAuthenticationHandler`, `IAuthenticationService`, `AuthenticationMiddleware`, `AuthenticationBuilder`, `AuthenticationScheme`, `AuthenticationTicket`, `CookieAuthenticationHandler`, `CookieAuthenticationOptions`, `JwtBearerHandler`, `JwtBearerOptions`, `OAuthHandler<T>`, `OpenIdConnectHandler`, `OpenIdConnectOptions`, `IAuthorizationService`, `IAuthorizationHandler`, `IAuthorizationRequirement`, `AuthorizationPolicy`, `AuthorizationMiddleware`, `AuthorizeAttribute`, `AllowAnonymousAttribute`, `IPolicyEvaluator`, `ClaimsPrincipal`, `AuthenticateResult`
161+
**Config:** `AddAuthentication()`, `UseAuthentication()`, `AddAuthorization()`, `UseAuthorization()`, `AddJwtBearer()`, `AddCookie()`, `AddOpenIdConnect()`, `AddOAuth()`
162+
**Concepts:** authentication scheme, claims, bearer token, cookie auth, JWT validation, OAuth 2.0, OpenID Connect, authorization policy, `[Authorize]`, challenge, forbid, sign-in, sign-out, token validation
163+
164+
#### `area-identity`
165+
ASP.NET Core Identity, user/role management, identity providers, scaffolding.
166+
**Key types:** `UserManager<TUser>`, `SignInManager<TUser>`, `RoleManager<TRole>`, `IdentityOptions`, `IdentityResult`, `IdentityError`, `IdentityUser`, `IdentityRole`, `IUserStore<T>`, `IRoleStore<T>`, `IPasswordHasher<T>`, `IUserClaimsPrincipalFactory<T>`, `ExternalLoginInfo`, `IEmailSender`, `SecurityStampValidator`, `IPasskeyHandler<T>`
167+
**Config:** `AddIdentity<TUser,TRole>()`, `AddDefaultIdentity<TUser>()`, `MapIdentityApi<TUser>()`
168+
**Concepts:** password hashing, two-factor authentication (2FA), external login, lockout, security stamp, email confirmation, password reset, passkey, token provider, Identity UI, Identity scaffolding, Identity API endpoints
169+
170+
#### `area-mvc`
171+
MVC, Controllers, Actions, model binding, formatters, Razor Pages (page model logic).
172+
**Key types:** `Controller`, `ControllerBase`, `ApiControllerAttribute`, `MvcOptions`, `ApiBehaviorOptions`, `ActionResult`, `IActionResult`, `JsonResult`, `ObjectResult`, `PageModel`, `IInputFormatter`, `IOutputFormatter`, `IUrlHelper`, `IFilterMetadata`, `ModelBinderAttribute`, `BindingInfo`, `ActionContext`
173+
**Config:** `AddMvc()`, `AddControllers()`, `AddControllersWithViews()`, `AddRazorPages()`, `MapControllers()`, `MapControllerRoute()`, `MapRazorPages()`
174+
**Concepts:** `[ApiController]`, `[Route]`, `[HttpGet]`/`[HttpPost]`, model binding, model validation, action filters, exception filters, content negotiation, Razor Pages page model, areas, formatters
175+
176+
#### `area-minimal`
177+
Minimal APIs, endpoint filters, parameter binding, request delegate generator, HTTP results.
178+
**Key types:** `HttpContext`, `HttpRequest`, `HttpResponse`, `IResult`, `Results`, `TypedResults`, `IEndpointFilter`, `EndpointFilterInvocationContext`, `ProblemDetails`, `HttpValidationProblemDetails`, `IProblemDetailsService`, `IMiddleware`, `IApplicationBuilder`, `Endpoint`, `IEndpointConventionBuilder`, `BadHttpRequestException`, `IHttpContextAccessor`, `JsonOptions`
179+
**Config:** `app.MapGet()`, `app.MapPost()`, `app.MapPut()`, `app.MapDelete()`, `app.MapPatch()`, `app.MapGroup()`, `Results.Ok()`, `Results.NotFound()`, `TypedResults.Ok()`, `AddProblemDetails()`
180+
**Concepts:** route handler, endpoint filter, parameter binding, `[FromBody]`, `[FromQuery]`, `[FromRoute]`, `[FromHeader]`, `[FromServices]`, `[AsParameters]`, route group, request delegate, problem details
181+
182+
#### `area-middleware`
183+
URL rewrite, response caching/compression, session, CORS, diagnostics, static files, rate limiting, HTTP logging, forwarded headers.
184+
**Key types:** `CorsMiddleware`, `CorsPolicy`, `DeveloperExceptionPageMiddleware`, `ExceptionHandlerMiddleware`, `IExceptionHandler`, `StatusCodePagesMiddleware`, `StaticFileMiddleware`, `SessionMiddleware`, `ResponseCompressionMiddleware`, `OutputCacheOptions`, `IOutputCacheStore`, `IRateLimiterPolicy<T>`, `HstsMiddleware`, `HttpsRedirectionMiddleware`, `RewriteMiddleware`, `ForwardedHeadersMiddleware`, `ForwardedHeadersOptions`, `ResponseCachingMiddleware`, `IHttpLoggingInterceptor`, `WebSocketOptions`
185+
**Config:** `AddCors()` / `UseCors()`, `UseExceptionHandler()`, `UseDeveloperExceptionPage()`, `UseStaticFiles()`, `AddSession()` / `UseSession()`, `AddResponseCompression()` / `UseResponseCompression()`, `AddOutputCache()` / `UseOutputCaching()`, `AddRateLimiter()` / `UseRateLimiter()`, `UseHsts()`, `UseHttpsRedirection()`, `UseRewriter()`, `UseForwardedHeaders()`, `AddHttpLogging()` / `UseHttpLogging()`
186+
**Concepts:** middleware pipeline, CORS policy, exception handler, static files, session state, output caching, response compression, rate limiting, HSTS, HTTPS redirect, URL rewrite, forwarded headers, X-Forwarded-For, X-Forwarded-Proto, host filtering
187+
188+
#### `area-signalr`
189+
SignalR clients and servers, real-time communication, hub protocol.
190+
**Key types:** `Hub`, `Hub<T>`, `HubConnection`, `HubConnectionBuilder`, `HubCallerContext`, `HubConnectionContext`, `IHubContext<T>`, `IClientProxy`, `IGroupManager`, `IHubProtocol`, `HubException`, `HubOptions`, `RedisHubLifetimeManager`
191+
**Config:** `AddSignalR()`, `MapHub<T>()`, `WithUrl()`, `.Build()`
192+
**Concepts:** hub, hub method, real-time, WebSocket transport, Server-Sent Events, long polling, groups, streaming, MessagePack protocol, JSON protocol, reconnect, retry policy, scale-out, Redis backplane, sticky sessions
193+
194+
#### `area-routing`
195+
Endpoint routing, route matching, URL generation, route constraints.
196+
**Key types:** `EndpointDataSource`, `IEndpointRouteBuilder`, `LinkGenerator`, `RouteData`, `IRouteConstraint`, `IRouter`, `IParameterPolicy`, `IOutboundParameterTransformer`, `EndpointNameMetadata`
197+
**Config:** `UseRouting()`, `UseEndpoints()`, `MapFallback()`, `RequireHost()`, `WithName()`, `AddRouting()`
198+
**Concepts:** route template, route pattern, route constraint (`{id:int}`, `{slug:regex(...)}`), link generation, URL generation, route values, endpoint metadata, conventional vs attribute routing, catch-all routes
199+
200+
#### `area-dataprotection`
201+
Data Protection APIs, key management, encryption/decryption.
202+
**Key types:** `IDataProtectionProvider`, `IDataProtector`, `ITimeLimitedDataProtector`, `DataProtectionOptions`, `IKey`, `IKeyManager`, `IXmlRepository`, `DataProtectionKey`, `KeyManagementOptions`, `IAuthenticatedEncryptor`
203+
**Config:** `AddDataProtection()`, `PersistKeysToFileSystem()`, `PersistKeysToDbContext()`, `PersistKeysToStackExchangeRedis()`, `ProtectKeysWithCertificate()`, `SetApplicationName()`, `SetDefaultKeyLifetime()`
204+
**Concepts:** protect/unprotect, key ring, key rotation, XML repository, purpose string, key escrow, data protector
205+
206+
#### `area-hosting`
207+
Host builder, WebApplication, startup, server configuration.
208+
**Key types:** `WebApplication`, `WebApplicationBuilder`, `WebApplicationOptions`, `IWebHost`, `IWebHostBuilder`, `IWebHostEnvironment`, `IStartup`, `IStartupFilter`, `IHostingStartup`, `WebHostDefaults`, `StaticWebAssetsLoader`
209+
**Config:** `WebApplication.CreateBuilder()`, `ConfigureWebHostDefaults()`, `UseStartup<T>()`, `UseUrls()`, `UseContentRoot()`
210+
**Concepts:** `Program.cs`, `Startup.cs`, minimal hosting, Generic Host, `ASPNETCORE_URLS`, `ASPNETCORE_ENVIRONMENT`, `launchSettings.json`, hosting startup, server addresses, host configuration
211+
212+
#### `area-commandlinetools`
213+
CLI tools: dotnet-dev-certs, dotnet-user-jwts, dotnet-user-secrets, OpenAPI tooling.
214+
**Key types:** `SecretsStore`, `JwtStore`, `UserSecretsIdAttribute`
215+
**Concepts:** `dotnet dev-certs https --trust`, `dotnet user-secrets`, `dotnet user-jwts`, `dotnet sql-cache`, `dotnet-openapi`, `secrets.json`, HTTPS dev certificate, user secrets ID
216+
217+
#### `area-grpc`
218+
gRPC wire-up, JSON transcoding, gRPC Swagger (main library is grpc/grpc-dotnet).
219+
**Key types:** `GrpcJsonTranscodingServiceExtensions`, `GrpcSwaggerServiceExtensions`
220+
**Config:** `AddGrpc()`, `MapGrpcService<T>()`, `AddGrpcJsonTranscoding()`, `AddGrpcSwagger()`
221+
**Concepts:** gRPC, protobuf, `.proto` files, gRPC-Web, JSON transcoding, gRPC Swagger, unary/streaming calls, gRPC interceptors, gRPC channels
222+
223+
#### `area-healthchecks`
224+
Health check endpoints and publishers.
225+
**Key types:** `IHealthCheck`, `IHealthCheckPublisher`, `HealthCheckService`, `IHealthChecksBuilder`, `HealthCheckMiddleware`, `HealthCheckOptions`, `HealthStatus` (Healthy, Degraded, Unhealthy)
226+
**Config:** `AddHealthChecks()`, `MapHealthChecks()`, `UseHealthChecks()`
227+
**Concepts:** liveness probe, readiness probe, health status, health check publisher, health check endpoint
228+
229+
#### `area-security`
230+
Security hardening, antiforgery, cookie policy, CSRF/XSRF protection.
231+
**Key types:** `IAntiforgery`, `AntiforgeryOptions`, `AntiforgeryTokenSet`, `AntiforgeryValidationException`, `RequireAntiforgeryTokenAttribute`, `CookiePolicyOptions`
232+
**Config:** `AddAntiforgery()`, `UseAntiforgery()`, `UseCookiePolicy()`
233+
**Concepts:** antiforgery token, CSRF/XSRF, SameSite cookies, secure cookies, HTTPS enforcement, cookie policy
234+
235+
#### `area-ui-rendering`
236+
MVC Views, Razor Pages (rendering/templates), TagHelpers, view compilation.
237+
**Key types:** `ViewResult`, `PartialViewResult`, `IHtmlHelper`, `ViewDataDictionary`, `TempDataDictionary`, `ViewComponent`, `ViewComponentResult`, `RazorPagesOptions`, `AnchorTagHelper`, `FormTagHelper`, `InputTagHelper`, `CacheTagHelper`, `EnvironmentTagHelper`, `ImageTagHelper`, `GlobbingUrlBuilder`
238+
**Concepts:** `.cshtml`, Razor syntax, `@model`, `@page`, `_ViewImports.cshtml`, `_ViewStart.cshtml`, layout, partial view, tag helper, HTML helper, view component, runtime compilation, Razor SDK, Razor Class Library (RCL), sections
239+
240+
#### `area-perf`
241+
Performance regressions, benchmarks, perf infrastructure.
242+
**Concepts:** benchmark, throughput regression, latency, RPS, memory allocation, `BenchmarkDotNet`, perf lab, crank, bombardier
243+
244+
#### `area-infrastructure`
245+
Build system, CI/CD, shared framework, installers.
246+
**Concepts:** MSBuild, `Directory.Build.props`, `Directory.Build.targets`, `eng/` scripts, Arcade SDK, source build, shared framework, targeting pack, reference assemblies, NuGet packaging, CI pipelines
247+
248+
#### `area-unified-build`
249+
dotnet/dotnet unified build, source-build integration.
250+
**Concepts:** `dotnet/dotnet` repo, unified build, source-build, VMR (Virtual Monolithic Repository)
251+
252+
### Disambiguation Tips
253+
254+
When multiple areas could match, use these priorities:
255+
- **Pipe-level I/O** (`PipeReader`, `PipeWriter`, `IDuplexPipe`, connection handling) → `area-networking`, NOT `area-middleware`
256+
- **Kestrel config, HTTP protocol errors, TLS/SSL**`area-networking`
257+
- **`Hub`, `HubConnection`, real-time**`area-signalr` (even though SignalR uses WebSockets)
258+
- **`ComponentBase`, `.razor`, render modes, JSInterop**`area-blazor`
259+
- **`.cshtml`, TagHelpers, view compilation, `ViewResult`**`area-ui-rendering`
260+
- **`MapGet`/`MapPost`, `Results.*`, endpoint filters**`area-minimal`
261+
- **`[ApiController]`, `Controller`, action filters**`area-mvc`
262+
- **`[Authorize]`, authentication schemes, JWT, OAuth**`area-auth`
263+
- **`UserManager`, `SignInManager`, Identity scaffolding**`area-identity`
264+
- **`UseCors()`, `UseStaticFiles()`, `UseSession()`, response caching**`area-middleware`
265+
- **Route templates, constraints, `LinkGenerator`**`area-routing`
266+
- **`IDataProtector`, key management, protect/unprotect**`area-dataprotection`
267+
- **Build failures, `eng/`, packages, CI**`area-infrastructure`
128268

129269
If you are truly unsure (confidence below ~40%), do **not** add an area label.
130270
Explain why in the comment instead.

0 commit comments

Comments
 (0)