State of (Absolute) AppSec
This panel discussion explores the current landscape of application security, focusing on the challenges of implementing 'secure by default' practices and the impact of AI-generated code on software security. The speakers analyze the persistent nature of common vulnerabilities like credential stuffing and the necessity of human-in-the-loop oversight for automated security tools. The discussion emphasizes the importance of building strong, collaborative relationships between security teams and developers to effectively prioritize and remediate risks.
Beyond the Hype: Why 'Secure by Default' is Failing in Production
TLDR: The industry-wide push for "secure by default" configurations is hitting a wall because it ignores the reality of modern development velocity and the rise of AI-generated code. While frameworks and automated tools catch low-hanging fruit, they fail to address the persistent, high-impact vulnerabilities like credential stuffing and broken access control. Security teams must shift from being gatekeepers to active partners who prioritize risk based on actual exploitability rather than just theoretical severity.
Security teams are currently obsessed with the "secure by default" narrative. It sounds perfect on a slide deck at a conference, but in the trenches of a real-world penetration test, the reality is far messier. We are seeing a massive disconnect between the security controls being baked into modern frameworks and the actual, exploitable vulnerabilities that continue to compromise production environments. The industry is effectively trying to pave roads with good intentions while the traffic is already driving off a cliff.
The Illusion of Automated Security
Frameworks and libraries are getting better at preventing common issues like reflected Cross-Site Scripting (XSS), but they are not a silver bullet. The fundamental problem is that developers are moving faster than ever, and they are increasingly relying on AI-assisted coding tools like GitHub Copilot to bridge the gap. This creates a dangerous feedback loop. An AI model trained on a massive corpus of code—much of which is legacy or insecure—will inevitably suggest patterns that look functional but carry significant security debt.
When we look at the OWASP Top 10, the most critical issues, such as Broken Access Control, are rarely solved by a framework's default settings. These are logic flaws. They require a human to understand the business context, the user roles, and the data flow. Automated tools, no matter how sophisticated, struggle to identify that a specific API endpoint allows a user to access another user's private data if the authorization logic is fundamentally flawed.
The Credential Stuffing Problem
Credential stuffing remains one of the most effective ways to bypass even the most "secure" application architectures. We see this constantly during red team engagements. An organization might have a perfectly hardened authentication flow, but if they haven't implemented robust rate limiting or behavioral analysis, an attacker can simply cycle through leaked credentials from other breaches.
The issue here is that security teams often focus on the "how" of the authentication (e.g., using a secure library) rather than the "what" of the threat. If you are not monitoring for Identification and Authentication Failures, you are leaving the front door wide open. A pentester doesn't need a zero-day exploit when they can simply use Burp Suite to automate a credential stuffing attack against an unprotected login endpoint.
The Human-in-the-Loop Necessity
There is a dangerous trend of treating security as a checkbox exercise that can be fully offloaded to automated scanners. This is a mistake. Automated scanners are excellent at finding known patterns, but they are blind to the nuances of a specific application's business logic. When we rely solely on tools like Dependabot to manage dependencies, we are only solving the "known vulnerability" problem. We are not solving the "insecure design" problem.
Security researchers and bug bounty hunters provide the most value when they look for the things that scanners miss. This means focusing on the gaps between the components. How does the authentication service talk to the database? What happens when a user modifies a parameter in a POST request? These are the areas where the most critical bugs live, and they require a deep, manual understanding of the application's architecture.
Bridging the Gap
The only way to actually move the needle is to stop treating security as an external audit function. If you are a pentester or a security engineer, your goal should be to get into the room where the architectural decisions are made. You need to understand the developer's workflow, the pressures they are under, and the tools they are using.
If you find a vulnerability, don't just file a ticket with a CVSS score. Explain the business impact. Show them how an attacker would actually chain that vulnerability to achieve a meaningful objective. When you provide that level of context, you stop being a "blocker" and start being a partner.
We need to stop chasing the shiny new AI tools and start focusing on the fundamentals. The most effective security programs are the ones that prioritize the risks that actually matter to the business. If you are spending all your time chasing low-risk findings from an automated scanner, you are missing the real threats. Start looking at the logic, start looking at the data flow, and start talking to the people who are actually building the code. The best way to secure an application is to understand it better than the people who wrote it.
Vulnerability Classes
Tools Used
Target Technologies
Attack Techniques
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




