Lessons from Running a Product Security-Focused Cybersecurity Clinic
This talk details the operational model and common security findings from a university-based product security clinic that provides penetration testing services to student-led startups. The presenters discuss recurring vulnerabilities identified in early-stage tech, including misconfigured Backend-as-a-Service (BaaS) platforms, insecure API authentication, and exposed cloud credentials. The session emphasizes the importance of proactive security assessments and threat modeling for startups that lack formal security resources. The speakers also share lessons learned from managing these engagements, such as the necessity of using staging environments and standardized intake processes.
Why Your Backend-as-a-Service Configuration Is Likely Leaking Data
TLDR: Developers are increasingly offloading complex backend logic to platforms like Firebase and Supabase, but they are failing to implement granular access controls. This creates a massive attack surface where client-side code can be manipulated to perform unauthorized database queries or administrative actions. Pentesters should prioritize auditing these BaaS configurations, as they often serve as the path of least resistance to full data exfiltration.
Modern application development has shifted away from monolithic architectures toward rapid, feature-focused builds. Startups are increasingly relying on Backend-as-a-Service (BaaS) platforms to handle authentication, database management, and API generation. While this velocity is great for shipping products, it is a disaster for security. The fundamental issue is that developers treat these platforms as "magic" black boxes that handle security automatically. They do not. When you expose your database directly to the client, you are essentially handing the keys to the kingdom to anyone with a browser and a proxy tool.
The BaaS Misconfiguration Trap
The most common vulnerability we see in these environments is the "client-as-admin" model. Platforms like Firebase and Supabase provide powerful SDKs that allow frontend applications to interact directly with the database. The security model relies entirely on the developer writing correct, restrictive access rules.
In practice, developers often default to overly permissive rules during the prototyping phase and never tighten them before production. If the rules are misconfigured, a user can simply modify their client-side requests to perform arbitrary queries. We have seen instances where an attacker can bypass simple client-side UI restrictions by manipulating the API calls directly. If the backend does not enforce Broken Access Control at the database level, the frontend is just a suggestion, not a security boundary.
Exploiting the X-Forwarded-For Header
One of the more egregious examples of "security through obscurity" involves the misuse of headers to gate administrative panels. We recently encountered a startup that attempted to restrict access to their admin dashboard by checking the user's IP address. They used a Django plugin that relied on the X-Forwarded-For header to determine the client's origin.
Because the application blindly trusted this header, we could bypass the restriction by simply injecting our own value:
GET /admin/dashboard HTTP/1.1
Host: target-app.com
X-Forwarded-For: 127.0.0.1
This is a classic Identification and Authentication Failure. By spoofing the header, we gained full access to the administrative interface. This highlights a critical lesson: never rely on network-level controls that can be easily spoofed by a client. If your security depends on an IP address, your security is broken.
The Danger of Exposed API Keys
Another recurring theme is the exposure of sensitive API keys in frontend code. We frequently find OpenAI or AWS keys hardcoded in JavaScript bundles. Attackers use these keys to spin up resources, mine cryptocurrency, or exfiltrate data, leaving the startup with a massive cloud bill and a compromised environment.
The impact of these exposures is immediate. In one case, we identified an exposed AWS key that allowed an attacker to spawn container clusters for crypto mining. The startup was unaware of the breach until they received a significant bill. For a pentester, the first step in any engagement should be a thorough scan of the client-side assets for any hardcoded secrets. If you find them, you have already achieved a high-impact finding.
Why Staging Environments Matter
A major operational failure we observe is the lack of separation between development and production environments. When we perform security testing, we often find that the "test" environment is just a copy of production with the same database and API keys. This is dangerous. If you are testing against production, you are one wrong payload away from deleting user data or triggering a system-wide outage.
Always insist on a dedicated staging environment that mirrors production but contains no real user data. If the client cannot provide this, your engagement scope must be strictly limited to prevent accidental damage.
Defensive Strategies for Developers
Defending against these issues requires a shift in mindset. First, assume the client is malicious. If you are using a BaaS, you must implement Row Level Security (RLS) to ensure that users can only access their own data. Do not rely on the frontend to filter results.
Second, treat your API keys as secrets, not configuration. Use environment variables and secret management services to inject keys at runtime. Never commit them to version control.
Finally, implement robust logging and alerting. If you do not know who is accessing your data or when your API keys are being used, you are flying blind. Set up alerts for unusual activity, such as a sudden spike in API usage or access from unexpected IP ranges.
Security is not a feature you add at the end of the development cycle. It is a fundamental requirement of the architecture. If you are building on top of modern BaaS platforms, take the time to understand the security model. Your users, and your cloud budget, will thank you.
Vulnerability Classes
Tools Used
Target Technologies
Up Next From This Conference
Similar Talks

Kill List: Hacking an Assassination Site on the Dark Web

Unmasking the Snitch Puck: The Creepy IoT Surveillance Tech in the School Bathroom




