noorqureshi/security-skills/code-review-dotnet
Claude Code and agent skill by noorqureshi/security-skills
- community
Checking that the SKILL.md file is still in the repository.
Security review of .NET / C# code — dangerous sinks and ASP.NET pitfalls. Load when reviewing a C#/.NET codebase/PR, on .cs source in scope, or "review this .NET app". Signals: .csproj/.sln, ASP.NET (Core/MVC/WebForms), BinaryFormatter, SqlCommand, Razor Html.Raw, XmlDocument.
Install
npx vskill@latest install noorqureshi/security-skills/code-review-dotnetSKILL.md
.NET / C# source review
When it applies
Reviewing C#/.NET source (ASP.NET Core, MVC, or legacy WebForms). The headline risks are unsafe deserialization, string-built SQL, XXE, and Razor's raw-output escape hatch.
Why it works
.NET ships powerful-but-dangerous serializers (BinaryFormatter, Json.NET with TypeNameHandling, LosFormatter/ViewState) that instantiate arbitrary types, and several XML APIs resolve DTDs by default on older frameworks. Reviews find where these meet untrusted input.
Sinks & patterns (grep, then trace to user input)
- Deserialization:
BinaryFormatter,LosFormatter,SoapFormatter,NetDataContractSerializer,
JsonConvert with TypeNameHandling != None, Js.NET/fastJSON polymorphic types → RCE gadgets.
- SQLi: string-concatenated
SqlCommand/ExecuteReader/FromSqlRaw(EF Core) vs parameters. - Command exec:
Process.Startwith concatenated arguments /UseShellExecute. - XXE:
XmlDocument/XmlReader/XmlTextReaderwithoutDtdProcessing=Prohibit(legacy default
resolves entities); XmlSerializer with a user-controlled type.
- XSS: Razor
@Html.Raw(...),MvcHtmlString, WebForms<%= %>with unencoded input;
Response.Write.
- Other: path traversal via
Path.Combine(root, input),LdapConnectionfilter injection,
reflection (Type.GetType/Activator.CreateInstance) on input, insecure ViewState (no MAC).
Framework specifics
- ASP.NET Core: model binding over-posting/mass assignment (bind whole entity),
[AllowAnonymous]
on sensitive actions, disabled antiforgery on POST APIs, exposed dev endpoints, open redirect via Redirect(returnUrl) without Url.IsLocalUrl.
- WebForms: ViewState deserialization (machineKey), event-validation off.
Method
- Run
security-code-scan/CodeQL; treat as leads. rg 'BinaryFormatter|TypeNameHandling|FromSqlRaw|Html\.Raw|XmlDocument|Process\.Start'→ trace to input.- Check controller
[Authorize]/antiforgery coverage and model-binding scope. - Confirm with
web-deserialization,web-sqli,web-xxe,web-command-injection.
Gotchas
Json.NETis safe by default — the bug is an explicitTypeNameHandling.All/Auto.- EF Core parameterises LINQ;
FromSqlRaw/ExecuteSqlRawwith interpolation is where SQLi returns. - ViewState RCE needs the
machineKey(leaked/weak) — note the precondition.
References
OWASP .NET security cheat sheet; ysoserial.net gadget research; Microsoft secure-coding guidance.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/code-review/code-review-dotnet/SKILL.md
Popularity
- Repository stars
- 24
- Repository forks
- 7
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/noorqureshi/security-skills/code-review-dotnet)