Skip to content

feat(skills): add NestJS security testing module#348

Merged
0xallam merged 2 commits intousestrix:mainfrom
ms6rb:feat/nestjs-skill
Mar 8, 2026
Merged

feat(skills): add NestJS security testing module#348
0xallam merged 2 commits intousestrix:mainfrom
ms6rb:feat/nestjs-skill

Conversation

@ms6rb
Copy link
Contributor

@ms6rb ms6rb commented Mar 8, 2026

Summary

  • Adds a NestJS security testing skill (strix/skills/frameworks/nestjs.md)
  • Covers guard bypass, validation pipe exploits, module boundary leaks, cross-transport auth, JWT/Passport misuse, serialization leaks, ORM injection, and rate limiting bypass
  • Includes practical testing methodology and validation requirements

Test plan

  • Verify skill loads correctly via get_available_skills()
  • Verify YAML frontmatter is parsed (name + description)
  • Test against a NestJS target to validate coverage

Security testing playbook for NestJS applications covering guard bypass,
validation pipe exploits, module boundary leaks, cross-transport auth
inconsistencies, passport/JWT misuse, serialization leaks, ORM injection,
CRUD generator gaps, and rate limiting bypass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 8, 2026

Greptile Summary

This PR adds a new NestJS security testing skill (strix/skills/frameworks/nestjs.md) that fits cleanly into the existing strix/skills/frameworks/ category alongside fastapi.md and nextjs.md. The file follows the required YAML frontmatter format (name + description), will be correctly discovered by get_available_skills() via the file stem, and its frontmatter will be stripped by _FRONTMATTER_PATTERN when loaded into agent context.

The content is comprehensive and well-organized, covering NestJS-specific attack surfaces (decorator pipeline, module system, multi-transport auth, ORM layer) with practical testing methodology matching the depth and structure of existing skills.

Issues found:

  • The "Bypass Techniques" section contains a technically inaccurate claim that a permissive guard placed after a restrictive one can override its decision. NestJS guard chains use AND logic (all guards must return true); the actual bypass is metadata-driven (@Public() / Reflector) — which is already correctly described earlier in the skill.
  • The "Validation Requirements" section is incomplete: it lacks explicit evidence criteria for ORM injection and cache poisoning findings, both of which have dedicated vulnerability sub-sections. Other framework skills (fastapi.md) map every major vulnerability class to a validation requirement.

Confidence Score: 4/5

  • Safe to merge after correcting the technically inaccurate guard-ordering bypass claim; no functional code is changed.
  • This is a documentation/skill file with no functional code changes. The file is structurally correct and will load without issues. The main concern is a misleading statement in "Bypass Techniques" that could cause an agent to misunderstand NestJS guard evaluation semantics and miss real bypass vectors, plus some gaps in validation requirements.
  • strix/skills/frameworks/nestjs.md — review the guard-ordering bypass technique and expand validation requirements.

Important Files Changed

Filename Overview
strix/skills/frameworks/nestjs.md New NestJS security testing skill; well-structured and consistent with existing framework skills. One technically inaccurate bypass technique (guard ordering) and missing validation requirements for ORM injection and cache poisoning.

Last reviewed commit: a897bc4

- Fix guard ordering claim: NestJS uses AND logic, bypass is
  metadata-driven via @public()/@SetMetadata, not order-driven
- Add missing validation requirements for ORM injection and
  cache poisoning

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@0xallam 0xallam merged commit 672a668 into usestrix:main Mar 8, 2026
@ms6rb ms6rb deleted the feat/nestjs-skill branch March 8, 2026 16:49
ms6rb added a commit to ms6rb/strix that referenced this pull request Mar 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants