How Cal.com Rebuilt AppSec After Going Closed Source
How Cal.com consolidated noisy security tooling into one continuous, context-aware pull request security program with Gecko.
Gecko Security

Most security teams find API vulnerability scanning tools generate thousands of alerts, most of which turn out to be false positives or low-priority findings you’ll never fix. The real problem isn’t the noise, though that’s painful enough. It’s that rules-based detection fundamentally can’t catch business logic flaws. Your scanner sees individual endpoints in isolation, not the call chains that span microservices or the authorization model that should apply consistently but doesn’t. It flags suspicious patterns while completely missing the logic bugs that actually threaten your system.
TLDR:
API scanning is the automated process of testing application programming interfaces for security vulnerabilities, from technical flaws like broken authentication to business logic issues that allow unauthorized access. Think of it as continuous security validation for the connective tissue of your applications.
The stakes have never been higher. Approximately 83% of internet traffic now flows through APIs, making them the primary attack surface for most organizations. Yet over 80% of surveyed organizations faced problems with API security, while only 10% have an API posture governance strategy in place.
This gap explains why API vulnerabilities keep appearing in breach reports. Your APIs are more than technical endpoints. They’re business-critical infrastructure that needs the same security rigor you’d apply to any public-facing system.
API scanning breaks down into three distinct approaches, each analyzing your APIs from different angles and stages of the development lifecycle.
SAST analyzes your source code, bytecode, or binaries without executing them. The scanner parses through your API codebase to identify security weaknesses like hardcoded credentials, SQL injection patterns, or insecure configurations before a single request gets sent. You catch problems during development, when fixes cost less and move faster.
DAST takes the opposite approach by testing your running API from the outside. It sends requests, manipulates parameters, and observes responses to find vulnerabilities an attacker could exploit. No source code required. This method excels at catching runtime issues, misconfigurations, and authentication problems that only surface when your API handles real traffic.
IAST plants instrumentation inside your running application to monitor behavior from within. It watches how your API processes requests in real time, tracking data flows and security checks with the precision of static analysis and the real-world context of runtime testing.
API scanners follow a systematic workflow to identify security weaknesses in your endpoints.
The process starts with discovery. Scanners crawl your API documentation, parse OpenAPI specifications, analyze GraphQL schemas, or inspect network traffic to build an inventory of available endpoints. They map out routes, parameters, authentication requirements, and data structures to understand your API’s attack surface.
Authentication comes next. The scanner needs valid credentials or tokens to test protected endpoints. It handles OAuth flows, API keys, JWT tokens, and session management to access authenticated functionality where most vulnerabilities hide.
Then comes the testing phase. Traditional scanners inject known attack patterns: SQL injection strings, XSS payloads, parameter manipulation attempts, fuzzing with malformed data. They match responses against vulnerability signatures, looking for error messages, unexpected data exposure, or authentication bypasses that fit predefined patterns.
This is where traditional and semantic approaches diverge. Pattern-based detection checks if responses match known vulnerability indicators. Semantic analysis reasons about whether your API behaves correctly, whether authorization logic works as intended, and whether business rules get enforced across request chains.
API scanners target vulnerabilities ranging from technical flaws to business logic violations that break security boundaries.
Broken Access Control tops the list. 3.73% of tested applications show related weaknesses, with Broken Object Level Authorization most common in APIs. Attackers manipulate object IDs or bypass ownership checks to reach unauthorized resources.
Broken Authentication exposes systems when tokens are weak, credential mechanisms fail, or password reset flows break down. Security Misconfigurations leave endpoints without authentication, leak stack traces containing sensitive information, or allow dangerous HTTP methods in production.
Injection attacks happen when APIs build database queries or system commands from untrusted input. Mass Assignment lets users modify properties that should stay read-only, while Excessive Data Exposure returns internal object structures or user details beyond what clients need.
Pattern-matching rules that catch injection struggle with access control. Authorization logic is specific to your business rules, making generic detection difficult.
| Vulnerability Type | Description | Common Attack Vectors | Detection Challenge |
|---|---|---|---|
| Broken Object Level Authorization (BOLA) | Attackers manipulate object IDs or bypass ownership checks to access unauthorized resources | Direct object reference manipulation, missing ownership validation, insecure API endpoints | Requires understanding business logic and authorization model across services |
| Broken Authentication | Weak tokens, failed credential mechanisms, or broken password reset flows that expose systems | Token theft, credential stuffing, session hijacking, authentication bypass | Pattern matching detects weak implementations but misses context-specific auth logic |
| Security Misconfiguration | Endpoints without authentication, leaked stack traces, or dangerous HTTP methods in production | Exposed admin panels, verbose error messages, unnecessary HTTP methods turned on | Configuration varies by environment; scanners may miss deployment-specific issues |
| Injection Attacks | APIs build database queries or system commands from untrusted input without validation | SQL injection, command injection, XPath injection, LDAP injection | Well-detected by pattern matching but requires understanding of all input vectors |
| Mass Assignment | Users modify object properties that should remain read-only through parameter manipulation | Adding admin flags, modifying prices, changing user roles through API parameters | Requires knowing which fields should be protected in business context |
| Excessive Data Exposure | APIs return internal object structures or user details beyond what clients need | Over-fetching in GraphQL, verbose JSON responses, unfiltered database objects | Determining what data is excessive depends on business requirements |
API scanning and web application scanning target fundamentally different attack surfaces. Web apps limit interaction through forms and UI elements that enforce sequencing and parameter limits. APIs expose business logic directly, accepting arbitrary JSON or XML requests without UI guardrails, which moves the entire security burden to authorization checks.
Authentication differs sharply. Web scanners handle session cookies and form logins. APIs require OAuth flows, JWT tokens, API keys, and mutual TLS, with token refresh logic and service-to-service patterns that cookie-based tools can’t process.
APIs are stateless, carrying all context in headers instead of server-side sessions. This changes how you chain requests and test multi-step business logic. You need parsers that manipulate nested JSON structures, recognize verbose responses that leak data, and understand GraphQL queries or Protocol Buffers, not HTML forms.
Traditional API scanners face a fundamental problem: they’re built to find broken syntax, not broken intent. Business logic vulnerabilities don’t inject malicious payloads or crash systems. They abuse intended functionality in ways that break security boundaries.
Consider authorization checks. A scanner can detect missing SQL parameterization because the vulnerability follows a pattern: user input flows to a database query. But can it detect when a curator endpoint lacks ownership checks? That requires knowing which parameters should be validated, understanding your permission model, and recognizing when similar endpoints implement checks that this one skips.
Pattern matching falls apart here. Each application defines its own access rules, workflow sequences, and trust boundaries. There’s no universal signature for “user can modify group they shouldn’t access” or ”privilege escalation via service-to-service call” because these violations are contextual. What’s valid behavior in one API is a critical flaw in another.
Broken Access Control tops OWASP vulnerabilities, affecting 100% of tested applications in some form, while injection attacks dropped to fifth place. Injection got solved through parameterized queries and framework defaults. Business logic bugs require understanding what your code should do, beyond what it shouldn’t execute.
Scan early and scan continuously. Integrate API security testing into your CI/CD pipeline so every commit triggers vulnerability checks before code reaches production. Waiting for quarterly pentests means vulnerabilities sit in your codebase for months.
Combine scanning approaches instead of relying on a single method. SAST catches issues during development, DAST tests running APIs from an attacker’s perspective, and IAST monitors runtime behavior. Each method sees different vulnerability types.
Maintain a complete API inventory. Shadow APIs and forgotten endpoints create security gaps that scanners can’t test if they don’t know those endpoints exist. Document every API, track deprecations, and map authentication requirements for each service.
Test with real credentials. Most vulnerabilities hide behind authentication, so scanners need valid tokens to reach protected functionality. Set up dedicated test accounts with varying permission levels to verify authorization logic at different privilege tiers.
Rank findings by exploitability and business impact, beyond severity scores alone. A critical SQL injection in a dormant endpoint matters less than an IDOR that exposes customer data in your most-used API.
False positives drain security teams. Pattern-based scanners flag thousands of potential issues, forcing analysts to spend hours separating real vulnerabilities from noise. Teams ignore up to 70% of SAST findings because the signal-to-noise ratio makes triage unsustainable.
Context blindness creates coverage gaps. Scanners see individual API endpoints but miss how your application actually works. They can’t tell if an authorization check is correct for your business rules or if a permission model applies consistently across services. Without understanding intent, they flag suspicious patterns while missing logic flaws that matter.
Authentication complexity breaks automated testing. OAuth token refresh, multi-factor flows, and service mesh authentication require manual configuration that fails when your architecture changes. Scanners struggle to maintain authenticated sessions across microservices where context changes between layers.
Microservice architectures amplify these problems. Tools analyze repositories in isolation, missing vulnerabilities that span service boundaries. A user validated at the gateway but not at the data service? Cross-service privilege escalation? These require tracing call chains across systems, which single-repository scanners can’t see.
The gap between automated scanning and manual pentesting remains wide. Skilled researchers find business logic flaws by understanding your application’s purpose and creatively testing how it could be abused. Rules-based tools can’t replicate that reasoning.
We built Gecko to close the gap between what traditional API scanners detect and what actually threatens your systems.
Instead of pattern matching, we use Language Server Protocol indexing to build a semantic understanding of your codebase. The same tech that powers IDE autocomplete now traces API call chains across microservices, tracking where authorization checks exist and where they’re missing.
Our engine performs threat modeling first, analyzing your application’s business logic to identify attack scenarios specific to your architecture. Then it validates each scenario by building proof-of-concept exploits, just like a pentester would.
This catches the vulnerabilities that matter: broken authentication sequences, authorization bypasses across service boundaries, IDOR chains that span repositories. We find business logic flaws in hours that would take manual testing weeks to uncover.
The result? Pentester-quality findings at automated speed, with 50% fewer false positives than rules-based tools.
Pattern-based API security scanning tools generate thousands of false positives while missing the business logic flaws that matter. Your security team deserves better than spending hours triaging noise instead of fixing real vulnerabilities. We built Gecko to find broken authorization and access control issues with pentester accuracy at automated speed.

Artemiy Malyshau
Co-founder & CTO
Artemiy served in an elite unit of the Austrian Cyber Forces, defending national infrastructure He was then the first employee at a government-backed cybersecurity research group, where he led security projects for Interpol and national governments. At Gecko he builds the platform trusted to sit inside Fortune 500 codebases, and holds it to the standard those governments taught him.
The latest news, technologies, and resources from our team.
How Cal.com consolidated noisy security tooling into one continuous, context-aware pull request security program with Gecko.
Gecko Security
Authorization bypass in n8n’s dynamic-credentials OAuth endpoints allows any authenticated user to operate on another user’s OAuth credential by supplying its ID, enabling unauthorized OAuth rebinding and revocation.
Artemiy Malyshau
An IDOR vulnerability in n8n’s public variables API allows authenticated users to read project variables outside their authorized scope, exposing secrets across project boundaries.
Artemiy Malyshau
A complete guide to automated pentest tools and best practices. Learn what works, what doesn’t, and how to implement continuous security testing.
Artemiy Malyshau
Compare the best AI-powered application security testing tools. Find which tools detect business logic flaws and broken access control.
Artemiy Malyshau
Compare the 14 best AI security tools. Features, pricing, and detailed comparisons to find vulnerabilities in code and secure AI systems.
Artemiy Malyshau
Occasional updates, new content, and insights. No spam; unsubscribe anytime.