stellar/laboratory-backend · Archived

security-audit

Audit backend code for security vulnerabilities — DoS vectors, query performance, connection pool exhaustion, injection, missing rate limits, and resource exhaustion

First seen Jun 22, 2026

Installation

$ npx skills add stellar/laboratory-backend --skill security-audit

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 1
Default branch main
Open issues 8
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,108 B
  • docs SUMMARY.md 189 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Security Audit

Perform a security audit of the backend codebase, focusing on vulnerabilities that could be exploited by external attackers. Check every category below systematically.

Audit Categories

1. SQL & Query Performance (DoS via slow queries)

Scan all files in src/query-builders/ and any raw SQL in src/controllers/ or src/utils/.

For each query, check:

  • CTE materialization: Does any ORDER BY on a CTE wrapper force full materialization before LIMIT is applied? PostgreSQL must fully materialize and sort before it can limit, turning a lazy evaluation into a full scan.
  • Missing LIMIT: Are there queries that return unbounded results? An attacker who controls data volume (e.g., pushing keys to a Stellar contract) can force massive result sets.
  • Recursive CTEs without termination guards: Could a recursive query run indefinitely or for an attacker-controlled number of iterations?
  • Sequential scalar subqueries: Does the query pattern cause N+1-style execution where N is attacker-controlled?
  • Missing indexes: Are WHERE/ORDER BY clauses hitting columns without indexes? Check against the Prisma schema.

For each issue found, explain:

  • What the vulnerability is
  • How an attacker could exploit it (concrete steps)
  • The impact (connection pool exhaustion, CPU saturation, memory, etc.)
  • A suggested fix

2. Connection Pool Exhaustion

Check src/utils/connect.ts and database configuration:

  • Is the Prisma connection pool explicitly configured, or relying on defaults?
  • Is there a statement_timeout set on the database connection or individual queries?
  • Are there any long-running queries that could hold connections hostage?
  • Could concurrent requests to any endpoint exhaust the pool?

3. Rate Limiting Gaps

Check src/index.ts and all route files in src/routes/:

  • Is rate limiting applied globally? What are the limits?
  • Are expensive endpoints (queries that do full table scans, recursive CTEs, external API calls) protected with stricter per-route rate limits?
  • Can the rate limit be bypassed (e.g., via headers, missing trust proxy config)?

4. Input Validation & Injection

Check all controllers in src/controllers/ and route definitions:

  • Are user inputs validated before being used in queries?
  • Is Prisma.raw() used with user-controlled values? (This bypasses parameterization)
  • Are there any string concatenation patterns in SQL construction?
  • Are query parameters, path parameters, and body fields all validated?

5. Resource Exhaustion (non-SQL)

Check controllers and middleware:

  • Are response payloads bounded? Could an endpoint return gigabytes of data?
  • Are there any endpoints that make external API calls without timeouts?
  • Is server.requestTimeout appropriate for all endpoints?
  • Could an attacker trigger expensive computation (e.g., large JSON parsing, regex backtracking)?

6. Information Disclosure

Check error handling and responses:

  • Do error responses leak stack traces, internal paths, or database details?
  • Does the /health endpoint expose sensitive information in production?
  • Are there debug modes that could be enabled by an attacker?

Output Format

Present findings as a prioritized list:

## Findings

### [CRITICAL/HIGH/MEDIUM/LOW] Title
- **Location**: file:line
- **Vulnerability**: What's wrong
- **Exploit scenario**: How an attacker would use this
- **Impact**: What happens if exploited
- **Suggested fix**: How to fix it

If no issues are found in a category, briefly state that the category was checked and is clean.

Known Past Vulnerabilities (for reference)

  • March 2026: ORDER BY on recursive CTE wrapper in buildKeysQuery (src/query-builders/keys.ts) forced full materialization, enabling DoS via connection pool exhaustion. Fixed by removing the redundant ORDER BY.