GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Customers
  • Pricing
  • Contact Us
  • Log In
  • CodeRabbit Review
  • CodeRabbit Triage
  • CodeRabbit Explain
  • CodeRabbit Secure
  • CodeRabbit Engineer
  • Enterprise
  • Contact Sales
  • Blog
  • Docs
  • Changelog

This view

  • Original page
  • New address

GeezerVison is showing www.coderabbit.ai — CodeRabbit Security | AI Security Reviews & Deep Scans

SM
OverviewExample scan data
Repository postureHigh / critical · Medium · Verified
web-app
api
auth
workers
web-app
api
auth
workers
Security TrendScan findings by severity over time
+  Repository+  Finding typeAI Deep ScanDependency vulnerabilities
30d90d180d
MoreFewer
EarlierLater

CodeRabbit Secure

Find and fix security vulnerabilities before AI turns them into exploits

Secure your codebase from the PR to the repo. Start with a deep scan.

Book a DemoRun Free Deep Scan

Security is part of every engineer’s job

Legacy tools weren’t built for a world of AI-enabled hackers.

2018847days
2026<1day

Time to exploit after disclosure has reduced to <1 day.

50%more vulnerabilities in AI-written code.

AgentjackingMulti-LLM attacksRAG backdoorsIndirect prompt injection

Attack patterns keep changing.

Tools need to catch novel risks.

Fight AI with AI.

Security agents powered by semantic reasoning, not static rules

Agents that think like an attacker.

Traces exploitable paths across files, services, and trust boundaries to find a new class of vulnerabilities.

Continuous security monitoring.

Identifies and acts on security vulnerabilities in near-real time. On every repo and every PR.

Reduces noise by verifying.

Checks reachability, exploitability, and blast radius so only real risks end up in your queue.

Auto-repairs vulnerabilities.

Drafts fixes for the issues it finds. All you have to do is merge.

How it works

routes.tsauth.tsorders.tsdb.ts
3 rejected
1 confirmed
Pull request opened
apiwebworkers

Two ways to scan.

Continuous monitoring that keeps pace with every PR.

PR scans

Automatic reviews before merge, inline on your PR.

Deep scans

Agentic investigation across your whole codebase on demand or on a schedule.

Your attack surface, visualized and contextualized.

A security posture map with a real-time, at-a-glance view of your risk.

repository posture
high/criticalmediumverifiednot yet walked
core78/78
api42/42
auth12/14
workers9/9

Vulnerabilities only agentic tools surface

Agentic tools reason across your attack surface to find complex vulnerabilities.

api/invoices.tsIllustrative
1router.get('/invoices/:id', async (req, res) => {
2 const invoice = await db.invoices
3 .findById(req.params.id);
4 return res.json(invoice);
5});
6
7
8

Access control · High

No ownership check ties the session user to the invoice. Any signed-in user can read every invoice by iterating IDs.

IDOR

Object references checked across services, not just within one handler.

agents/support-bot.tsIllustrative
1const reply = await llm.complete(`
2 You are a support agent with tools.
3 Ticket: ${ticket.body}
4`, { tools: [refundTool, lookupTool] });
5
6
7
8

LLM security · Critical

Ticket text is interpolated into a tool-calling prompt. A crafted ticket can steer the agent into calling refundTool on another customer's order.

Prompt injection

Untrusted text flowing into prompts, tool calls, and agent decisions.

checkout/confirm.tsIllustrative
1const total = cart.lockTotal();
2await payments.charge(card, total);
3applyCoupon(order, req.body.coupon);
4await order.confirm();
5
6
7
8

Business logic · High

The coupon applies after the total is charged. Re-submitting the step refunds the discount against an already-captured payment.

Logic flaws

Abuse paths that only appear when you reason about what the code is meant to do.

search/query.tsIllustrative
1const sort = sanitizeHtml(req.query.sort);
2const rows = await db.raw(
3 `SELECT * FROM repos ORDER BY ${sort}`
4);
5
6
7
8

Data flow · Critical

Input is escaped for HTML, not SQL, one file upstream. The ORDER BY concatenation stays injectable.

Injection chains

Tainted input traced through helpers and layers to the query it finally reaches.

preview/image.tsIllustrative
1const { url } = req.body;
2const img = await fetch(url);
3res.type('png').send(await img.buffer());
4
5
6
7
8

Server side · High

A user-supplied URL is fetched server-side. Internal endpoints, including cloud metadata, become reachable.

SSRF

Request builders that let user input steer internal traffic.

wallet/withdraw.tsIllustrative
1const balance = await wallet.balance(user);
2if (balance >= amount) {
3 await wallet.debit(user, amount);
4}
5
6
7
8

Concurrency · High

Balance check and debit are not atomic. Two parallel withdrawals both pass the check and the account goes negative.

Race conditions

Check-then-act windows an attacker can win with parallel requests.

api/invoices.tsIllustrative
1router.get('/invoices/:id', async (req, res) => {
2 const invoice = await db.invoices
3 .findById(req.params.id);
4 return res.json(invoice);
5});
6
7
8

Access control · High

No ownership check ties the session user to the invoice. Any signed-in user can read every invoice by iterating IDs.

IDOR

Object references checked across services, not just within one handler.

agents/support-bot.tsIllustrative
1const reply = await llm.complete(`
2 You are a support agent with tools.
3 Ticket: ${ticket.body}
4`, { tools: [refundTool, lookupTool] });
5
6
7
8

LLM security · Critical

Ticket text is interpolated into a tool-calling prompt. A crafted ticket can steer the agent into calling refundTool on another customer's order.

Prompt injection

Untrusted text flowing into prompts, tool calls, and agent decisions.

checkout/confirm.tsIllustrative
1const total = cart.lockTotal();
2await payments.charge(card, total);
3applyCoupon(order, req.body.coupon);
4await order.confirm();
5
6
7
8

Business logic · High

The coupon applies after the total is charged. Re-submitting the step refunds the discount against an already-captured payment.

Logic flaws

Abuse paths that only appear when you reason about what the code is meant to do.

search/query.tsIllustrative
1const sort = sanitizeHtml(req.query.sort);
2const rows = await db.raw(
3 `SELECT * FROM repos ORDER BY ${sort}`
4);
5
6
7
8

Data flow · Critical

Input is escaped for HTML, not SQL, one file upstream. The ORDER BY concatenation stays injectable.

Injection chains

Tainted input traced through helpers and layers to the query it finally reaches.

preview/image.tsIllustrative
1const { url } = req.body;
2const img = await fetch(url);
3res.type('png').send(await img.buffer());
4
5
6
7
8

Server side · High

A user-supplied URL is fetched server-side. Internal endpoints, including cloud metadata, become reachable.

SSRF

Request builders that let user input steer internal traffic.

wallet/withdraw.tsIllustrative
1const balance = await wallet.balance(user);
2if (balance >= amount) {
3 await wallet.debit(user, amount);
4}
5
6
7
8

Concurrency · High

Balance check and debit are not atomic. Two parallel withdrawals both pass the check and the account goes negative.

Race conditions

Check-then-act windows an attacker can win with parallel requests.

api/invoices.tsIllustrative
1router.get('/invoices/:id', async (req, res) => {
2 const invoice = await db.invoices
3 .findById(req.params.id);
4 return res.json(invoice);
5});
6
7
8

Access control · High

No ownership check ties the session user to the invoice. Any signed-in user can read every invoice by iterating IDs.

IDOR

Object references checked across services, not just within one handler.

agents/support-bot.tsIllustrative
1const reply = await llm.complete(`
2 You are a support agent with tools.
3 Ticket: ${ticket.body}
4`, { tools: [refundTool, lookupTool] });
5
6
7
8

LLM security · Critical

Ticket text is interpolated into a tool-calling prompt. A crafted ticket can steer the agent into calling refundTool on another customer's order.

Prompt injection

Untrusted text flowing into prompts, tool calls, and agent decisions.

checkout/confirm.tsIllustrative
1const total = cart.lockTotal();
2await payments.charge(card, total);
3applyCoupon(order, req.body.coupon);
4await order.confirm();
5
6
7
8

Business logic · High

The coupon applies after the total is charged. Re-submitting the step refunds the discount against an already-captured payment.

Logic flaws

Abuse paths that only appear when you reason about what the code is meant to do.

search/query.tsIllustrative
1const sort = sanitizeHtml(req.query.sort);
2const rows = await db.raw(
3 `SELECT * FROM repos ORDER BY ${sort}`
4);
5
6
7
8

Data flow · Critical

Input is escaped for HTML, not SQL, one file upstream. The ORDER BY concatenation stays injectable.

Injection chains

Tainted input traced through helpers and layers to the query it finally reaches.

preview/image.tsIllustrative
1const { url } = req.body;
2const img = await fetch(url);
3res.type('png').send(await img.buffer());
4
5
6
7
8

Server side · High

A user-supplied URL is fetched server-side. Internal endpoints, including cloud metadata, become reachable.

SSRF

Request builders that let user input steer internal traffic.

wallet/withdraw.tsIllustrative
1const balance = await wallet.balance(user);
2if (balance >= amount) {
3 await wallet.debit(user, amount);
4}
5
6
7
8

Concurrency · High

Balance check and debit are not atomic. Two parallel withdrawals both pass the check and the account goes negative.

Race conditions

Check-then-act windows an attacker can win with parallel requests.

Real risk, not noise.

Three analyses run on every finding before it reaches you.

Reachability

Can anyone get there? Findings no attacker can reach are capped at low severity.

Exploitability

Is it even exploitable? A verification pass rejects findings that are extremely hard to exploit.

Blast radius

What does it touch? The agent maps the impact and severity of a successful exploit.

From the team trusted by 20k engineering teams worldwide.

  • CodeRabbit Secure analyzes your code and every change, so you understand your risks. PR Security Review, Blast Radius and Security Architecture Review work at the merge, and Deep Scan and the Attack Surface Map cover the code you already shipped.
  • Deep Scan now reads linked repositories, such as a shared login library. On GitHub Cloud and GitHub Enterprise Server, the CodeRabbit Security check is off by default. After you enable it and a GitHub repository administrator makes it required, open Security review comments at or above your chosen severity block the merge. The findings API lets your own tools list Deep Scan findings or export them as CSV or SARIF.
  • CodeRabbit Secure works alongside them. Most scanners check code against known flaws and risky patterns. CodeRabbit’s semantic analysis also works out what your code should enforce, such as who may open a record, and checks whether it does.
  • That isn’t an independent review. A coding agent works toward finishing its task, while CodeRabbit looks for evidence that the work is wrong.
  • For supported Deep Scan findings, Fix with AI drafts the fix in a pull request, and you can steer it as it runs. A person on your team reviews and merges each fix, and CodeRabbit never merges one on its own.
  • A Deep Scan checks your source code and infrastructure files for exploitable flaws and exposed secrets. That includes broken access control, injection, cross-site scripting, server-side request forgery, path traversal, business logic flaws, leaked sensitive data, weak encryption, prompt injection in AI features and insecure infrastructure settings.
  • CodeRabbit Secure works with GitHub, GitHub Enterprise Server, GitLab (including self-managed), Azure DevOps Services, Bitbucket Cloud and Bitbucket Data Center. Some features have narrower support.
  • CodeRabbit never trains models on your code and shares it with OpenAI, Anthropic or both only for reviews. Cached data for private repositories is encrypted and expires within seven days. It also keeps code indexes and Learnings from your team’s feedback. Deep Scan findings are stored in your organization’s account. For details on retained scan artifacts and backups, see the DPA. The trust center has the SOC 2 Type II report and security details.
  • PR Security Review, Blast Radius, Security Architecture Review and the Attack Surface Map come with Advanced and the current Enterprise plan. Customers on earlier Enterprise agreements should confirm eligibility or an upgrade with their account team. New organizations get a 14-day Advanced trial. Deep Scan is billed separately. You see an estimate before each scan you start manually. The final charge is based on the work the scan did. See pricing for details.
  • Run your first deep scan for free. First-time users of CodeRabbit Secure with 2+ subscription seats in their organization get up to $1,000 in credits towards their first Deep Scan. Run Free Deep Scan.

See it on your own code.

Run Free Deep Scan
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.