Podcast Episode 21

Episode 021 59 min

Sergej Dechand, Co-Founder and CEO of Code Intelligence, on Fuzzing the Future

with Sergej Dechand · Code Intelligence

0:00 / 59:00

Also on Spotify, Apple Podcasts, YouTube, Podbean, Player FM

Episode 21 of The Security Podcast of Silicon Valley, published September 9, 2022. Host Jon McLachlan talks with Sergej Dechand, co-founder and CEO of Code Intelligence, which builds fuzz testing tools for developers. Sergej describes usable security research at the University of Bonn that turned into a company by accident, an industry that sells certifications while software stays insecure and users take the blame, and a consulting job where a pen test report held 20 findings and only two real issues, while code review found a smart card login that accepted any valid certificate and a command injection in a background job. No one had measured code coverage. They cover coverage-guided fuzzing, developers who got defensive until the tools fit their workflow and fixes arrived as pull requests, managers who pen tested every six months while releasing up to 20 times a day, letting developers decide gray-area findings, a best day at an automotive hackathon that lost four hours to a corporate proxy, a worst day when COVID froze purchasing, open source fuzzers for Java and JavaScript, enterprise features, an interview question about the future, and software people can trust.

Episode notes

Sergej Dechand shares his security journey from usable security research to Co-Founding Code Intelligence, where he is CEO. Code Intelligence delivers open-source static analysis-guided fuzz testing that enables developers to simplify software security testing without modifying their code.

In this episode of a YSecurity.io production, we dive into the compelling world of software security with Sergej Dechand, Co-Founder and CEO of Code Intelligence. Sergej takes us through his fascinating journey from conducting usable security research to leading a company that's revolutionizing the way developers approach software security testing through open-source static analysis-guided fuzz testing.

Sergej explains how Code Intelligence is making sophisticated security testing accessible and efficient for developers, enabling them to detect vulnerabilities without the need to modify their existing code. By leveraging the power of fuzz testing, Code Intelligence empowers developers to build safer applications, highlighting Sergej's commitment to improving software security from the ground up.

Throughout the conversation, Sergej shares insights into the challenges and opportunities in the field of software security, emphasizing the importance of making security tools both powerful and user-friendly. He discusses the inspiration behind Code Intelligence, the impact of open-source contributions, and the future of security testing in an increasingly digital world.

Listeners will gain a deeper understanding of the critical role of security testing in software development and the innovative approaches being developed to tackle these challenges. Sergej's journey from a researcher to a tech entrepreneur provides a unique perspective on the intersection of usability and security, showcasing the potential for technology to create safer digital environments.

Join us on this YSecurity.io production for an enlightening conversation with Sergej Dechand. Whether you're a developer, a security professional, or someone interested in the evolving landscape of software development and security, this episode offers valuable insights into the cutting-edge of security testing technology. Tune in as we explore how Code Intelligence is simplifying and strengthening software security, one fuzz test at a time.

Hosted by Jon McLachlan — co-founder of YSecurity.

The deep dive

What the pen test never touched

Sergej Dechand, co-founder and CEO of Code Intelligence: usable security research in Bonn, certified software that still wasn't secure, a pen test with 18 false findings that missed two real bugs, coverage-guided fuzzing, defensive developers, pen tests every six months against releases every day, a hackathon for an automotive RFP, COVID, open source fuzzers for Java and JavaScript, and an interview question about the future.

Episode 21 of The Security Podcast of Silicon Valley came out on September 9, 2022, with Jon McLachlan hosting. The guest was Sergej Dechand, co-founder and CEO of Code Intelligence, which builds fuzz testing tools for developers (Podbean, Apple Podcasts, Spotify, LinkedIn, GitHub). The episode is called “Sergej Dechand, Co-Founder and CEO of Code Intelligence, on Fuzzing the Future.”

Most of the talk is about testing. Why certified software can still be insecure, what a pen test misses, and how coverage-guided fuzzing reaches the code a pen test never runs. The rest is about the company: a best day, a worst day, open source, money and hiring.

This page follows the conversation in order: a section for each part of it, fifteen figures, nineteen clips from the tape, the full transcript, and five tools: a quiz, a scorecard for how much of your code your security tests reach, a calculator for releases between pen tests, a timeline, and a to-do list. The decodes of this tape disagree more often than most. Where they disagree on a word, the transcript puts its best guess in brackets, and the page doesn’t quote or retell those words.

Out of a PhD program

Jon opened with the background. Vulnerability scanning, security consulting and usable security research. Freelance application security consulting for enterprises. Research at Fraunhofer, the University of Bonn and the National Institute of Informatics. Then Code Intelligence, co-founded with research partner Khaled Yakdan and their professor, Matthew Smith.

LinkedIn adds the dates. A research assistant at the National Institute of Informatics from June to September 2012. A researcher at the University of Bonn from December 2013 to January 2019, with a PhD there in information technology. A project manager at Fraunhofer FKIE from January 2016 to August 2017. Then Code Intelligence from November 2017, as CEO and co-founder (LinkedIn, LinkedIn education). The Fraunhofer Society is a German organization for applied research with 74 institutes and research units (Wikipedia).

Usable security brings human factors into security. In this research group, the humans weren’t typical end users. They were IT administrators and developers. Matthew Smith supervised the group, and the two future co-founders were PhD students. Near the end of their studies, they were working with industry partners.

“we kind of accidentally founded a company.”

Sergej Dechand, at 2:26

The plan had been a product. The three of them ended up with a company to build it.

The same research group comes up on episode 30, in July 2023. Dominik Schürmann of heylogin co-wrote a USENIX Security study of key fingerprints, with Sergej as first author.

Listen · Sergej Dechand on episode 21, from 2:12
About 30 seconds: Sergej on how a research project turned into a company. The clip stops on its own. Read the full transcript.
Five cards in two rows. TU Braunschweig: a master's degree in information technology, 2007 to 2013. National Institute of Informatics: research assistant, June to September 2012. University of Bonn: researcher, December 2013 to January 2019, and a PhD in information technology. Fraunhofer FKIE: project manager, January 2016 to August 2017. Filled, Code Intelligence, from November 2017: CEO and co-founder, with Khaled Yakdan and Matthew Smith, fuzz testing for developers. Below: usable security brings human factors into security, and in this research group, the humans were IT administrators and developers. Then: "we kind of accidentally founded a company." Sergej, at 2:26
Sergej's path from research to Code Intelligence. Sources: the episode and LinkedIn.

Certified, and still not secure

Jon asked for a truth most people miss. The inspiration came later, Sergej said, from consulting projects during the university years.

Sergej described the industry with some admitted exaggeration. As more of life moved online, IT security and AppSec grew, and so did crime. The business drifted toward selling certifications, certified policies, audits, assessments and compliance automation. It served managers who need check marks, which is also the right thing to do for legal reasons.

From the engineer’s seat, it created friction. Managers chased check marks. Security people hunted for more issues and told developers how to improve the software. Developers, criticized on all sides and pushed to release faster, got defensive. In the end, the software and the networks stayed insecure, because audits look from high up and don’t dig into the technical details.

“and we blame the end users.”

Sergej Dechand, at 8:58

Sergej’s example is the ransomware headline that ends with a reason: someone opened a PDF, and everything was infected. In Sergej’s view, the cause is a security issue or a misconfiguration, and the person who clicked takes the blame.

The way out is to start with the engineers:

“the people who know best what the software does because they are engineering it.”

Sergej Dechand, at 9:33

The certification results stay about the same, and the products end up secure. Sergej wants that as a user too.

“I want my phone to be secure.”

Sergej Dechand, at 9:59

That insight became Code Intelligence, built for developers and engineers, the people who can fix the software.

Listen · Sergej Dechand on episode 21, from 8:28
About 30 seconds: Sergej on the ransomware headline and who gets the blame. The clip stops on its own. Read the full transcript.
Three cards. Managers: compliance, audits and certifications, check marks, and the legal side covered. Security people: hunt for more issues, and tell developers what to fix. Dashed, developers: criticized from all sides, pushed to release faster, they turn defensive. Below: the result, certified software and networks that stay insecure, because audits look from high up. The headline: a PDF got opened, and the person who clicked takes the blame. Filled: Sergej's way out, involve the engineers who write the software, and fix it there. Then: "and we blame the end users." Sergej, at 8:58
Three groups pulling in three directions, as Sergej described it. Source: the episode.

Checkbox security

Jon had seen the same tendency in Silicon Valley: blame the user. Jon has yet to meet a user who didn’t care about security and did something unreasonable.

“part of our job as security professionals is to make this stuff usable”

Jon McLachlan, at 10:50

That means a real solution that adds no friction and is easy to understand. Too often the focus stays on the technical grit, and the human experience becomes something to deal with.

“I call that checkbox security.”

Jon McLachlan, at 11:26

Jon separates checkbox security, done for legal and compliance reasons, from actual security, the kind that keeps a company out of the news. The two overlap, and companies tend to think in one way or the other.

Listen · Jon McLachlan on episode 21, from 10:49
About 40 seconds: Jon on usable security and checkbox security. The clip stops on its own. Read the full transcript.

Dynamic analysis for developers

Jon asked why nobody else had solved it.

“I wouldn’t say no one else solved it yet.”

Sergej Dechand, at 12:04

A movement had already started, Sergej said. Sergej compared three kinds of tools: static analysis, dynamic analysis and software component analysis. Companies built for developers mostly come from static analysis and software component analysis. Dynamic analysis executes the software, and developers don’t use it yet. That’s the gap Code Intelligence set out to close, by bringing dynamic analysis to the developer.

Wikipedia draws the same line. Static analysis looks at a program without running it, and dynamic analysis runs it (Wikipedia). Static application security testing reads source code during development. Dynamic application security testing crawls and analyzes running websites. Interactive application security testing works from inside the application with instrumentation (Wikipedia).

Listen · Sergej Dechand on episode 21, from 12:04
About 35 seconds: Sergej on where developer security tools stop. The clip stops on its own. Read the full transcript.
Three cards. Static analysis: reads the program without running it, gives feedback in the IDE as you type, and developer tools start here. Software component analysis: checks the components the software is built from, and developer tools start here too. Dashed, dynamic analysis: runs the software and attacks it, and developers don't use it yet, in Sergej's account. Below, filled, Code Intelligence's aim: dynamic analysis in developers' hands. Then: "I wouldn't say no one else solved it yet." Sergej, at 12:04
Three kinds of security testing, and which ones developers use, in Sergej's account. Sources: the episode and Wikipedia.

Eighteen of twenty findings were noise

Jon asked what experience showed Sergej the gap. Sergej had an answer from business and one from research.

The business one came from consulting. Sergej was the engineer on a product going through a certification. Sergej filled out a lot of check boxes and talked with the security people throughout. The enterprise pen test firm delivered a report, and the manager got the check box for ISO and other certifications.

Static analysis came first. It produced a lot of false positives, and the team ruled them out. It was annoying, but not too much.

Then came the pen test. The report had 20 findings.

“only two issues were actual issues”

Sergej Dechand, at 15:05

As Sergej remembered it, the other 18 were the same thing. A query to the REST API returned an error 500, because the username held special characters like a question mark. Some other exception was thrown inside, and there was no SQL injection.

On episode 67, in April 2025, Gadi Bashvitz of Bright Security described the same sorting problem: 120 static findings narrowed to the 11 a developer should fix right now.

Listen · Sergej Dechand on episode 21, from 14:47
About 30 seconds: Sergej on a pen test report with 20 findings. The clip stops on its own. Read the full transcript.
A grid of 20 squares in two rows of ten. Two are filled, 18 are dashed. Below, filled: 2 actual issues. Outlined: 18 of the same thing, an error 500 from the REST API, caused by special characters like a question mark in the username, another exception was raised inside, and no SQL injection happened. Then: "only two issues were actual issues" Sergej, at 15:05
The 20 findings in the pen test report, as Sergej remembered them. Source: the episode.

Two bugs the pen test never reached

While the pen test ran, Sergej was reviewing the code and found two serious bugs.

The first was an SSL certificate issue. With a username and password, only the server authenticated to the client. With a smart card, the client software didn’t check everything.

“So you could issue any valid certificate”

Sergej Dechand, at 16:07

The domain name went unchecked, so any valid certificate got you in. The pen test didn’t cover smart card logins.

The second was a command injection. A request for too many results triggered a background job, and the exec in that job got input the attacker controlled. You could run anything you wanted. It only happened when a request asked for thousands of files.

The pen testers had a week, and worked from all directions. Nobody measured code coverage.

“So basically, you didn’t know what was going on.”

Sergej Dechand, at 17:24

Coverage would have shown both paths: the job that runs past thousands of files, and the login that only happens with a smart card. That’s where Sergej started building white box tests, which measure what a test didn’t reach. Without that, Sergej said, a pen test is worthless.

“Because if the attacker does just one little thing better than the other one, the attacker wins.”

Sergej Dechand, at 17:58

Companies hold an advantage over attackers.

“They know what’s going on, they have the source code.”

Sergej Dechand, at 18:08

Jon summed up two gaps. The first is false positives, in static analysis and in dynamic analysis. The second is graver. Pen test contractors get a time box, and they use intuition and creativity to break in.

“who knows what sort of coverage you’re getting?”

Jon McLachlan, at 19:09

Code coverage is the share of a program’s source code that runs when a test suite runs (Wikipedia).

Listen · Sergej Dechand on episode 21, from 17:13
About 25 seconds: Sergej on the week-long pen test that never measured coverage. The clip stops on its own. Read the full transcript.
Two cards. Smart card login: the client software skipped the domain name check, and accepted any valid certificate, and smart card logins weren't part of the pen test. A background job: a request for too many results started a job, and its exec got input the attacker controlled, and it ran only past thousands of files. Below, filled, what coverage would have shown: both paths, a login that only happens with a smart card, and a job that only runs on big requests. Then: "So basically, you didn't know what was going on." Sergej, at 17:24
The two bugs, and what coverage would have shown. Source: the episode.

Coverage-guided fuzzing

Jon asked about the philosophy behind Code Intelligence. It started in research at the University of Bonn, working with German enterprises on more effective and more efficient software testing. Static analysis was already in use and wasn’t bad. It gives feedback in the IDE as you type. Something was still missing, and Sergej started to look there.

Around 2016 and 2017, gray box and coverage-guided fuzzing were a big thing in research, and Google led the work in open source. The idea was to instrument the source code. The instrumentation reports which paths an input took and what got compared, and feeds that back to the engine. Fuzzing began as random input. With feedback, genetic algorithms and similar methods predict what might happen, and the coverage measurement leads to more and more discoveries.

Wikipedia tells the longer story. The term “fuzz” comes from a 1988 class project taught by Barton Miller at the University of Wisconsin, published in 1990. Fuzzing feeds a program invalid, unexpected or random data and watches for crashes, failing assertions and memory leaks. AFL and libFuzzer use lightweight instrumentation to trace what an input does. In coverage-guided fuzzing, inputs that reach new behavior stay in the corpus and get mutated further. In December 2016, Google announced OSS-Fuzz for continuous fuzzing of security-critical open source projects (Wikipedia).

The researchers started with open source before company code. Parsers were the first targets.

“And it always took two hours to set up everything”

Sergej Dechand, at 21:44

Then it took ten minutes to pick the JSON parse method as the target. The first findings followed, and the researchers celebrated, as researchers do.

Listen · Sergej Dechand on episode 21, from 20:29
About 20 seconds: Sergej on coverage-guided fuzzing in research. The clip stops on its own. Read the full transcript.
Four boxes joined by arrows. Instrument: the source code. Run: an input. Measure: the paths it took. Filled, keep and mutate: inputs with new paths. A dashed line returns from the last box to the first. Below: fuzzing started with random input, and feeding coverage back lets genetic algorithms and similar methods steer the next inputs. Wikipedia: AFL and libFuzzer use lightweight instrumentation, and Google announced OSS-Fuzz in December 2016. Filled: the first targets were open source parsers, setup took two hours, and a test for a JSON parser took ten minutes. Then: "And it always took two hours to set up everything" Sergej, at 21:44
How coverage-guided fuzzing feeds coverage back into the next inputs. Sources: the episode and Wikipedia.

Defensive developers

When the researchers took their findings to development teams, the teams got defensive.

“They didn’t want to use the tools. They found excuses not to use it.”

Sergej Dechand, at 22:16

The cause was cultural. The researchers were in a mood of celebrating that developers make mistakes.

Listen · Sergej Dechand on episode 21, from 22:08
About 20 seconds: Sergej on why development teams pushed back. The clip stops on its own. Read the full transcript.

Fit the tools, fix it in a pull request

So the group did what usable security does: interviews and studies. Why don’t you use it? What is important to you?

Developers wanted tools that fit what they already use. Specific IDEs, GitHub, and pipelines like Jenkins. A tool has to be compatible with the whole development process and the development stack.

The second change was in how findings arrived. When the researchers found issues, they took the time to fix them on their side. They made pull requests that fixed the issues silently, and the pull requests got accepted. Friction with the developers dropped. Later they presented the issues, with a way to find more on their own.

Jon summed it up: now they were heroes, making the developers’ baby even more beautiful.

Two types of developers remained. Some said a new tool was a distraction from their own problem. The others got curious.

On episode 91, in March 2026, Neatsun Ziv of OX Security argued for the same move: bring developers the details they need with the finding.

Listen · Sergej Dechand on episode 21, from 23:21
About 30 seconds: Sergej on silent pull requests and less friction. The clip stops on its own. Read the full transcript.
A numbered list. 1, before: the researchers celebrated each finding, and development teams found excuses not to use the tools. 2, interviews and studies: why don't you use it, and what is important to you? 3, change one: fit the tools developers already use, specific IDEs, GitHub, and pipelines like Jenkins. 4, change two: fix the issues in pull requests, then show the team how to find more on its own. 5, after: less friction, some developers stayed focused on their own problems, and others got curious. Then: "They didn't want to use the tools. They found excuses not to use it." Sergej, at 22:16
From defensive developers to less friction, in two changes. Source: the episode.

Every six months, twenty times a day

Things got more interesting when the researchers talked to the managers of those developers.

“we pen test every six months”

Sergej Dechand, at 24:28

The same product was moving to releases up to 20 times a day, and nobody can run 20 pen tests a day. A lot can happen in six months. Compliance already covered the legal obligations. Many of the managers were former techies, and they felt it.

“had a bad conscience there.”

Sergej Dechand, at 24:58

“We need to involve the developers.”

Sergej Dechand, at 25:04

Put together, the two sets of interviews pointed one way. The technique matters less than the people.

“but it’s much more about how to get the people involved.”

Sergej Dechand, at 25:31

Jon called it a cultural problem more than a technical one. Sergej added the product side. That problem was the reason to found Code Intelligence.

Jon walked through the feedback loop. A pen test is great feedback, but you can’t run one 20 times a day. A shorter loop cuts costs: an engineer’s time, the impact on customers, and the risk while a bug is out. The longer a bug lives, the more places the software ends up.

“It’s much easier to fix something in a pull request that’s sitting on a separate branch.”

Jon McLachlan, at 27:07

That beats fixing it after a release to 100,000 users. And to change a piece of software, Jon said,

“you need an engineer’s help.”

Jon McLachlan, at 27:33

At 20 releases a day and one pen test every six months, about 3,650 releases ship between two tests, at 365 days a year. The calculator runs your own numbers. On episode 82, in November 2025, Rejah Rehim of Beagle Security described the same gap, with weekly releases and quarterly tests.

Listen · Sergej Dechand on episode 21, from 24:11
About 25 seconds: Sergej on managers who pen test every six months. The clip stops on its own. Read the full transcript.
Three numbers. 6 months: between pen tests, as the managers described it. 20 a day: releases of the same product, at the most. 3,650: releases between two pen tests at that pace, counting 365 days a year. Below: twenty pen tests a day can't happen, and a lot can happen in six months. Jon's point: the cheapest fix is the one made before the code is merged and shipped. Filled: the managers' conclusion, involve the developers. Then: "we pen test every six months" Sergej, at 24:28. And: "We need to involve the developers." Sergej, at 25:04
Two pen tests a year against releases every day, with the numbers from the tape. Source: the episode.

Developers know their own interfaces

Code Intelligence kept working with the University of Bonn. Research there suggests that developers know best what interfaces they produced and whether an issue is real.

“they know best what kind of interfaces they have produced”

Sergej Dechand, at 27:55

Jon asked if they know instantly. Not always, Sergej said, and they still get defensive.

“So obviously, every developer admits if it’s a clear hack.”

Sergej Dechand, at 28:14

A buffer overflow or a command line injection you can exploit right away gets admitted. The friction is in between. Is a denial of service important enough or not?

Those calls belong to the developer. If a developer doesn’t want to see a finding again, it shows up on a dashboard for managers, who will talk to the team. The tool doesn’t demand a fix.

One case is different. Some denials of service crash the software under test.

“because the fuzzer is always crashing the entire software”

Sergej Dechand, at 29:14

Then testing can’t continue, and that bug has to be fixed first.

“we haven’t found a good way around that yet”

Sergej Dechand, at 29:24

Jon liked the approach. Teams decide what to fix first and what can wait, and tie it back to the business.

Listen · Sergej Dechand on episode 21, from 27:51
About 35 seconds: Sergej on what developers admit and where the friction starts. The clip stops on its own. Read the full transcript.
Three cards. A clear hack: like an exploitable buffer overflow, and developers admit it. Dashed, the gray area: does denial of service matter enough here? The developer decides, and ignored findings appear on a managers' dashboard. Filled, a crash that stops the fuzzer: the software keeps crashing, so testing can't continue, and it gets fixed first. Then: "So obviously, every developer admits if it's a clear hack." Sergej, at 28:14. And: "because the fuzzer is always crashing the entire software" Sergej, at 29:14
Three kinds of findings and who decides on each, as Sergej described them. Source: the episode.

A hackathon for an automotive RFP

Jon asked for a best day.

“and this is the engineer inside of me being very proud.”

Sergej Dechand, at 30:36

In the early days, an automotive enterprise ran an RFP for security testing tools, and Code Intelligence applied.

“they invited tool vendors for a hackathon.”

Sergej Dechand, at 30:58

One day on site, with their computers and their software, attacking the automotive controller. By the time Code Intelligence started, the other tools hadn’t found anything yet.

It started at eight in the morning. The product was early stage and had no air gap installer. Its Docker dependencies had to come through the corporate proxy. Jon knew those proxies, which stop inbound traffic hard and fast.

Getting around the corporate proxy took four hours, and testing still hadn’t started.

“But we got everything running.”

Sergej Dechand, at 32:30

Then the findings came one after another. The client had planted some issues on purpose, and others were there by accident. For a young company with no idea how to do the business, the deal came from producing good results. Jon put it as the merit of the results, and of the product that produced them.

“Maybe we were cheaper than the others, but it doesn’t matter.”

Sergej Dechand, at 33:34

Listen · Sergej Dechand on episode 21, from 32:15
About 15 seconds: Sergej on four hours lost to a corporate proxy. The clip stops on its own. Read the full transcript.
A timeline. Before, the RFP: an automotive enterprise wants security testing tools, and invites vendors to a hackathon. 8 a.m., the start: on site, with the client's computers and software, and the other tools haven't found anything yet. Plus 4 hours, the proxy: no air gap installer, so the Docker dependencies have to come through the corporate proxy. Then, running: everything works, then the findings come, some planted on purpose and some there by accident. After, the business: earned on the merit of the results, and of the product that produced them. Then: "they invited tool vendors for a hackathon." Sergej, at 30:58
The hackathon day, in the order Sergej told it. Source: the episode.

When COVID hit

Then the flip side.

“So there was one point at Code Intelligence when we really got scared.”

Sergej Dechand, at 33:49

Code Intelligence was helping enterprises with software testing, on-premise only, and still validating the product. Then COVID hit, and two or three weeks after the lockdown:

“all our purchasing processes delayed.”

Sergej Dechand, at 34:23

No cash flow came in, and the company was in the middle of a financing. There was a lot of uncertainty, and they sat together to work out how to adjust.

A few weeks later, things were better than expected. Companies switched to remote work and brought in more cloud services, which opened the door to SaaS. SaaS had been a deal breaker before. Now customers could work with a deployment in their own AWS.

“This is where things started flowing again.”

Sergej Dechand, at 35:27

For listeners without the video, Jon described a poster behind Sergej. Its message: if things aren’t failing, you aren’t innovating enough. Leading is easy when everyone is happy and the money is flowing. The hard part is digging deep when things get tough. That’s where, Jon said,

“leadership sort of shines.”

Jon McLachlan, at 36:03

Looking back, Sergej said, you wonder why you worried so much. In the moment, with a team you’re responsible for, the question is what to do next. It was Sergej’s first company, so everything was a first, and super exciting. Jon would worry if it weren’t a roller coaster. The team was 12 people when COVID hit.

Listen · Sergej Dechand on episode 21, from 34:05
About 25 seconds: Sergej on the weeks after the lockdown. The clip stops on its own. Read the full transcript.
Four boxes joined by arrows. Dashed, COVID: on-premise only. Dashed, purchasing: delayed, no cash. Financing: already under way. Filled, cloud and SaaS: weeks later. Below: soon after the lockdown, purchasing at customers stalled, and the company was mid-financing. Weeks later, companies moved to remote work and cloud services. SaaS had been a deal breaker, and now it worked, as did deploying in a customer's own AWS. Filled: the team was 12 people. Then: "all our purchasing processes delayed." Sergej, at 34:23. And: "This is where things started flowing again." Sergej, at 35:27
The worst day and the recovery, in order. Source: the episode.

Coverage-guided testing as the standard

Jon asked what success would look like for Code Intelligence. Sergej’s answer was a standard security testing platform, built on coverage-guided testing. At runtime, it combines information from the source code and from instrumentation. Sergej added that

“this is not implemented in most of the cases.”

Sergej Dechand, at 37:36

Open source projects, many written in C, already use it.

“But if you look at the business, it’s still missing.”

Sergej Dechand, at 37:48

Sergej compared it to static analysis about 20 years earlier, a new technology for white box testing, and pointed to Gartner and interactive application security testing. Wikipedia describes that as testing from within the application with instrumentation, combining the strengths of static and dynamic testing (Wikipedia).

Fuzzers for memory-safe languages

Jon asked why Code Intelligence open sources so much, including its fuzzer for the Java virtual machine. It gives easier access to new testing tools. Most of the academic world focused on C and on binaries, testing without the source.

“no one actually focused on Java or the, let’s say, memory-safe languages.”

Sergej Dechand, at 39:06

“So they were neglected.”

Sergej Dechand, at 39:12

Sergej pointed to how much software is written in JavaScript today. Most Java and JavaScript services are something like REST APIs or gRPC. So the team took techniques that worked in C and applied them to what the business needs. Even a memory-safe language had remote code execution, like Log4j, and XML attacks. Code Intelligence onboarded Log4j.

Wikipedia dates the Log4j bug. Log4Shell, CVE-2021-44228, was reported in November 2021 in Log4j, a popular Java logging framework. It allowed arbitrary code execution, had gone unnoticed since 2013, and got a CVSS score of 10, the highest (Wikipedia).

“And now we are collaborating with Google to onboard more and more open source projects”

Sergej Dechand, at 40:18

“So we found a lot of security issues already.”

Sergej Dechand, at 40:38

The newest project was a JavaScript fuzzer, for the back end more than the front end, and mainly for Node.js. Sergej sees JavaScript with Node.js as one of the fastest growing languages. The fuzzer looks for remote code execution, XML external entities and the kind of command line injection from the consulting story.

On episode 67, Gadi Bashvitz described the AI-driven fuzzer NeuraLegion built in 2018, for a market that wasn’t ready yet.

Listen · Sergej Dechand on episode 21, from 38:55
About 20 seconds: Sergej on the languages fuzzing research left out. The clip stops on its own. Read the full transcript.
Three cards. Filled, Jazzer: the JVM fuzzer, any JVM language can be fuzzed, based on libFuzzer, per its README. CI Fuzz: a command line tool that streamlines running the fuzzers. Jazzer.js: for JavaScript, mostly Node.js back-end code. Below: why, fuzzing research stayed with C and with binaries, and memory-safe languages were left out. Log4j showed Java can still have remote code execution, and Code Intelligence onboarded Log4j and worked with Google on more open source projects. Then: "So they were neglected." Sergej, at 39:12
Code Intelligence's three open source projects, as Sergej named them. Sources: the episode and GitHub.

What enterprises pay for

Jon asked how Code Intelligence earns money with so much in open source.

“We are basically focusing on enterprise features.”

Sergej Dechand, at 42:37

An open source project has Jenkins or a GitHub pipeline and knows how to build. An enterprise has large teams collaborating, and it wants specific reports.

“No open source project will ask you for compliance reports or something like that.”

Sergej Dechand, at 43:09

Enterprises ask about their Azure cloud, a customized Jenkins, and exporting findings to Jira.

The second difference is the code itself.

“in open source, you usually provide libraries.”

Sergej Dechand, at 43:41

A library parses JSON, for example. Enterprise apps run whole web applications with web APIs based on REST. The closed source product covers those use cases, with the same white box approach. Open source projects use everything for free.

Jon asked about deployment, for a company that’s security conscious without being paranoid. SaaS is the focus. The ideal customer is on GitHub, with a CI/CD pipeline that tests before production. Code Intelligence is one more step there. Large enterprises get on-premise, which doesn’t mean old hardware.

“what we call on-premise is we are deploying it inside the companies’ Azure or AWS or Google.”

Sergej Dechand, at 46:05

So there’s no list of operating systems to support. Jon noted that running on-prem is itself a security question, with operational overhead on both sides.

Listen · Sergej Dechand on episode 21, from 42:52
About 25 seconds: Sergej on what enterprises ask for. The clip stops on its own. Read the full transcript.
Two cards. Open source: mostly libraries, like a JSON parser, a Jenkins or GitHub pipeline, a team that knows how to build, and free to use. Filled, enterprise: whole web applications with REST APIs, specific reports for compliance, Azure, a customized Jenkins, and findings sent to Jira. Below: deployment, SaaS first, for customers on GitHub with a CI/CD pipeline, and large enterprises get on-premise, inside their own Azure, AWS or Google cloud. Then: "No open source project will ask you for compliance reports or something like that." Sergej, at 43:09
Open source and enterprise use cases side by side. Source: the episode.

Ask about the future, hear the past

Jon asked about interviews. Sergej doesn’t use an interview question as such. Sergej describes a scenario set in the future and asks the candidate about it.

“what are you afraid of? Or what would you do?”

Sergej Dechand, at 47:55

Or what could go wrong. Candidates answer from their past. They open up more than they would if asked directly, and they’re more detached from the situation. Some describe a mistake, analyze it, and know exactly what they’d do now.

Jon asked about risk takers. It depends on the role, Sergej said. For the legal team, probably not the most risk-taking person. In other areas, it’s a good trait.

“But what I’m looking for is the analytical process.”

Sergej Dechand, at 49:31

“Hey, I made a mistake.”

Sergej Dechand, at 49:35

“Did I adjust my processes?”

Sergej Dechand, at 49:39

Do I blame others, or myself? Jon added the third option, taking ownership of the problem. Sergej said it’s hard beyond startups, and Jon added that it holds at any size.

“it’s a human problem.”

Jon McLachlan, at 50:09

Jon had never heard of the trick. Candidates bring up their past on their own, Sergej said. Jon added that most people want that: a door open to be themselves, and a fit where their experiences count.

Listen · Sergej Dechand on episode 21, from 47:43
About 25 seconds: Sergej on the future-scenario interview question. The clip stops on its own. Read the full transcript.
Four boxes joined by arrows. Describe: a future scenario. Ask: what scares you. Listen: for their past. Filled, look for: the analysis. Below: candidates answer from experience, open up more than they would if asked directly, and stand further from the story. Risk taking depends on the role, and legal probably wants less of it. Filled: the signal, a mistake, analyzed, with processes adjusted, and no blaming others. Then: "what are you afraid of? Or what would you do?" Sergej, at 47:55. And: "But what I'm looking for is the analytical process." Sergej, at 49:31
The future-scenario interview, step by step. Source: the episode.

One search for every channel

Jon asked for a tool that someone else should build.

“I haven’t found a good tool, basically streamlining a lot of different channels.”

Sergej Dechand, at 51:39

A startup grows into Slack with customers, email, Confluence, Jira or Notion, and meeting notes. Later, you want to know where an issue or a decision lives, and you don’t remember. Sergej had tried a few tools and wasn’t happy yet.

Jon had no answer either. One tool for all internal communication makes it easier to know where to look. It breaks for anyone in an external role, like sales. Jon asked any founder who builds or knows of a fix to get in touch.

Listen · Sergej Dechand on episode 21, from 51:40
About 35 seconds: Sergej on the search tool a startup needs. The clip stops on its own. Read the full transcript.

Products you can rely on

Jon asked about the vision. Sergej looked back first.

“there were huge advancements in the IT security.”

Sergej Dechand, at 54:25

“not everything can be hacked”

Sergej Dechand, at 54:37

The goal isn’t reached yet, though experts on Linux and specific systems have it worked out. Code Intelligence’s part is products people can trust.

“rely on products you use every day, because they received a lot of testing”

Sergej Dechand, at 55:14

And more than checkbox security. Right now, the focus is applications. Other companies might take on operations, like access rights. Code Intelligence’s mission is to help developers build secure products, and others can work on the other parts of security in people’s lives.

Listen · Sergej Dechand on episode 21, from 54:22
About 20 seconds: Sergej on how far security has come. The clip stops on its own. Read the full transcript.

Jazzer, CI Fuzz and Jazzer.js

Jon asked for final words. Customers ask Sergej what Code Intelligence wants to achieve for them. The answer is a short-term goal.

“you don’t release any software where there is a bug”

Sergej Dechand, at 56:37

At least not a bug that testing could have found.

Jon asked where to start. Search GitHub for Code Intelligence Testing, Sergej said, and you find three open source projects. Jazzer for the Java virtual machine, so every language compiled to the JVM can be fuzzed.

“It’s the Java virtual machine fuzzer.”

Sergej Dechand, at 57:04

A command line tool, CI Fuzz, to streamline running it. And Jazzer.js for JavaScript. Enterprise use cases get a product tour on the company site.

The episode also carries a short update from Sergej. The JavaScript fuzzer had been open sourced about two weeks before, for Node.js back ends. An open source interface for command lines and IDEs was coming the next week, to make this kind of testing feel like unit testing. Developers would keep working the way they know from unit testing. The tool runs the regressions and shows the security issues, if any come up.

Listen · Sergej Dechand on episode 21, from 56:35
About 30 seconds: Sergej on the goal for customers and where to start. The clip stops on its own. Read the full transcript.

What happened after the tape

Chief Evangelist since 2024. On September 5, 2024, Sergej posted that after more than 7 years leading Code Intelligence, it was time to step down as CEO. The new role was Chief Evangelist, staying on as co-founder, with Eric Brueggemann as CEO (LinkedIn).

Jazzer back in open source. On December 5, 2024, Sergej posted that “Jazzer is back to open source,” with thanks to Google’s Open Source Security team (LinkedIn). The repository describes Jazzer as a coverage-guided, in-process fuzzer for the JVM, based on libFuzzer, with an integration for JUnit 5 (GitHub). Jazzer.js has its own repository (GitHub).

A German AI Award. On January 14, 2025, Sergej posted that Code Intelligence had won the German AI Award. The reshared post says a jury of industry representatives and investors gave it at de:hub Pitch Night (LinkedIn).

Research, then a professorship. LinkedIn lists Sergej as a senior researcher at the Max Planck Institute for Security and Privacy since June 2025, and as Professor of Application Security at Bonn-Rhein-Sieg University of Applied Sciences since April 2026 (LinkedIn). The Max Planck institute is a computer science research institute founded in May 2019 (Wikipedia). On May 27, 2026, Sergej posted about the professorship. The post describes a career spent making software more secure, “mostly by breaking it on purpose,” and one goal: software that is hard to break in the first place.

Sergej on becoming Professor of Application Security at Bonn-Rhein-Sieg University of Applied Sciences.

Sergej Dechand · May 27, 2026
Sergej's post on the professorship, with the link to it. View on LinkedIn.

Shift left has a name and a date. Testing earlier in the lifecycle is called shift-left testing, a term Larry Smith coined in 2001 (Wikipedia). Sergej’s idea of putting dynamic analysis in developers’ hands is one version of it.

A timeline. September 9, 2022, episode 21: Sergej on coverage, pen tests and fuzzing for developers. September 5, 2024, Chief Evangelist: Sergej steps down as CEO after more than 7 years, and stays co-founder. December 5, 2024, Jazzer: back to open source, with thanks to Google's Open Source Security team. January 14, 2025, an award: Code Intelligence wins the German AI Award. June 2025, Max Planck: senior researcher at the Max Planck Institute for Security and Privacy. April 2026, a professorship: Professor of Application Security at Bonn-Rhein-Sieg University of Applied Sciences.
After the tape: a new role, Jazzer back in open source, an award and a professorship. Sources: LinkedIn, GitHub and Wikipedia.

Did you catch it? A seven-question quiz

Seven questions from the episode. Each answer links the moment in the transcript or its section.

Quiz · seven questions

Did you catch it?

Pick an answer to see whether you caught it.

  1. Of the 20 findings in the pen test report, how many were actual issues?

    b. "only two issues were actual issues" Transcript, 15:05.

  2. What did the client software skip when you logged in with a smart card?

    c. The client accepted any valid certificate without checking the domain name. See Two bugs the pen test never reached.

  3. What did no one measure during the week-long pen test?

    a. Nobody measured it, so nobody knew what the test reached. See Two bugs the pen test never reached.

  4. What helped developers stop pushing back on the findings?

    b. Friction dropped once the fixes arrived as pull requests. See Fit the tools, fix it in a pull request.

  5. How often did the managers say they ran a pen test?

    c. "we pen test every six months" Transcript, 24:28.

  6. How long did the corporate proxy cost the team at the hackathon?

    a. Four hours. The product had no air gap installer, so its Docker dependencies had to come through the proxy. See A hackathon for an automotive RFP.

  7. Which languages did fuzzing research leave out, in Sergej's view?

    b. "no one actually focused on Java or the, let's say, memory-safe languages." Transcript, 39:06.

How much of your code do your security tests reach?

Eight questions on how your company tests its software, built from the episode. Each tip links the section behind it.

Scorecard · eight questions

How much of your code do your security tests reach?

Answer for your software as you test it today. If two answers fit, pick the lower one.

  1. Do you measure code coverage during security testing, pen tests included?

    • No
    • For unit tests only
    • Yes, and we look at what wasn't reached

    Coverage would have shown both bugs the pen test missed. See Two bugs the pen test never reached.

  2. Does your testing cover every way to log in, like passwords, smart cards and single sign-on?

    • Only the main one
    • Most of them
    • All of them, and we check

    The smart card login accepted any valid certificate. See Two bugs the pen test never reached.

  3. Who runs dynamic tests against your software?

    • Only outside testers, now and then
    • Our security team
    • Our developers, in CI on every change

    Dynamic analysis hadn't reached developers yet. See Dynamic analysis for developers.

  4. Of the findings in your last security test, how many were real issues?

    • We don't know
    • Fewer than half
    • Most of them

    Two of 20 were real in Sergej's story. See Eighteen of twenty findings were noise.

  5. How do findings reach the developers who wrote the code?

    • A PDF report
    • Tickets in their tracker
    • Fixes and context inside the tools they use

    Pull requests that fixed the issues cut the friction. See Fit the tools, fix it in a pull request.

  6. Who decides on a gray-area finding, like a denial of service?

    • Nobody, it sits in a queue
    • The security team alone
    • The developer, with ignored findings visible to managers

    Developers know their own interfaces. See Developers know their own interfaces.

  7. Do you fuzz the code that handles input from outside, like uploads, parsers and APIs?

    • No
    • Some of it
    • Yes, continuously

    Parsers were the researchers' first targets. See Coverage-guided fuzzing.

  8. How many releases ship between two of your pen tests?

    • Hundreds or more, untested in between
    • A few dozen
    • Security tests run with every release

    The calculator counts them. See Every six months, twenty times a day.

Checkbox testing

Tests happen for the report. Measure coverage on your next test, and cover every login path.

Partly covered

The pieces exist. Put dynamic tests in CI, and send findings to developers as fixes inside their tools.

Measured coverage

Keep the coverage numbers honest, fuzz every input from outside, and let developers decide the gray areas.

How many releases ship between pen tests?

Sergej’s managers ran a pen test every six months and released up to 20 times a day. This calculator counts the releases in between, and what a noisy report costs.

Calculator

How many releases ship between pen tests?

Four numbers: releases a day, months between pen tests, findings in a pen test report, and how many of them were real issues.

3,650releases between two pen tests
10% of findings that were real
36false findings to sort a year

At 20 releases a day and a pen test every 6 months, 3,650 releases ship between two tests. If 2 of 20 findings are real, 10% of each report is real, and you sort 36 false findings a year.

The calculator counts 365 days to a year and rounds to whole numbers. The defaults are the numbers on the tape: up to 20 releases a day, a pen test every six months, and a report with 20 findings, two of them actual issues. Change them to yours.

From Bonn to a professorship

Sergej’s path, the field around it, and this show. Filter by topic.

Timeline

From Bonn to a professorship

  1. "Fuzz" gets its name

    A class project taught by Barton Miller at the University of Wisconsin, published in 1990 (Wikipedia).

  2. Shift-left testing

    Larry Smith coins the term for testing earlier in the lifecycle (Wikipedia).

  3. TU Braunschweig

    A master's degree in information technology, until 2013 (LinkedIn).

  4. National Institute of Informatics

    Research assistant, until September 2012 (LinkedIn).

  5. University of Bonn

    Researcher, until January 2019, and a PhD in information technology (LinkedIn, education, on this page).

  6. Heartbleed disclosed

    A buffer over-read in OpenSSL's TLS heartbeat extension (Wikipedia).

  7. AFL and Heartbleed

    Hanno Böck shows the fuzzer AFL could have found Heartbleed (Wikipedia).

  8. Fraunhofer FKIE

    Project manager, until August 2017 (LinkedIn).

  9. Key fingerprints at USENIX

    Sergej is first author of a study of textual key fingerprints with 1,047 participants (episode 30).

  10. OSS-Fuzz

    Google announces continuous fuzzing for security-critical open source projects (Wikipedia).

  11. Code Intelligence

    CEO and co-founder (LinkedIn, on this page).

  12. Log4Shell

    Remote code execution in Log4j, CVE-2021-44228, unnoticed since 2013 (Wikipedia).

  13. Episode 21

    Sergej on the show (Podbean, transcript).

  14. Episode 30

    Dominik Schürmann of heylogin, a co-author of the key fingerprint study (episode page).

  15. Chief Evangelist

    Sergej steps down as CEO and stays on as co-founder (LinkedIn).

  16. Jazzer back in open source

    With thanks to Google's Open Source Security team (LinkedIn).

  17. German AI Award

    Code Intelligence wins it at de:hub Pitch Night (LinkedIn).

  18. Episode 67

    Gadi Bashvitz on the AI-driven fuzzer NeuraLegion built in 2018 (episode page).

  19. Max Planck Institute

    Senior researcher at the Max Planck Institute for Security and Privacy (LinkedIn).

  20. Episode 82

    Rejah Rehim on weekly releases and quarterly tests (episode page).

  21. Professor of Application Security

    At Bonn-Rhein-Sieg University of Applied Sciences (LinkedIn, on this page).

What to do this week

Five things, in the order of the episode.

  1. Measure your next test’s coverage. Turn on code coverage for your next pen test or security test run, and read the list of paths nothing touched, as in Two bugs the pen test never reached.
  2. List every way to log in. Passwords, smart cards, single sign-on and API keys. Check that each one gets tested. The scorecard shows where else to look.
  3. Count your real findings. Take your last report and count the real issues, as in Eighteen of twenty findings were noise. The calculator shows what the noise costs a year.
  4. Fuzz one input from outside. Pick a parser or an upload handler and fuzz it in CI. Jazzer covers the JVM and Jazzer.js covers Node.js (GitHub).
  5. Get help with it. Our Product Security team embeds with your engineers to ship SSO, audit logs, customer-managed keys and end-to-end encryption. Penetration Testing produces the report an enterprise buyer’s security team accepts, and vCISO Services give you a vCISO with a full security team behind them. If you want to talk it through, book 15 minutes with us.

Key takeaways

  1. Certified isn't the same as secure

    Sergej saw an industry built around certifications, audits and check marks. The software and networks stayed insecure, and the blame landed on the user who opened a PDF.

  2. Begin with the engineers

    The people who write the software know best what it does. Sergej's way out is to start there, and the certification results come out about the same.

  3. Pen test reports can be mostly noise

    In Sergej's consulting story, 18 of 20 findings were the same error 500 from special characters in a username. Only two were actual issues.

  4. Measure what a pen test reaches

    The pen test missed a smart card login that accepted any valid certificate, and a command injection in a background job. Nobody measured code coverage, so nobody knew what was tested.

  5. Coverage-guided fuzzing learns from each input

    Instrument the source code, feed coverage back to the engine, and keep the inputs that reach new paths. Fuzzing moved past random input this way.

  6. Developers adopt what fits their workflow

    Teams pushed back on findings until the tools fit their IDEs, GitHub and pipelines, and the researchers sent fixes as pull requests.

  7. You can't pen test 20 times a day

    Managers pen tested every six months while releasing up to 20 times a day. A shorter feedback loop costs less, and the cheapest fix is in a pull request.

  8. Let developers decide the gray areas

    Clear hacks get admitted. For gray areas like denial of service, the developer decides, and ignored findings show up for managers. Crashes that stop the fuzzer get fixed first.

  9. Memory-safe languages still need fuzzing

    Research focused on C and binaries, and left Java and JavaScript behind. Java still had remote code execution, like Log4j.

Chapters

Tap a chapter to play from there.

Pull quotes

“we kind of accidentally founded a company.”

Sergej Dechand ·

“and we blame the end users.”

Sergej Dechand ·

“the people who know best what the software does because they are engineering it”

Sergej Dechand ·

“I call that checkbox security.”

Jon McLachlan ·

“I wouldn't say no one else solved it yet.”

Sergej Dechand ·

“only two issues were actual issues”

Sergej Dechand ·

“So you could issue any valid certificate”

Sergej Dechand ·

“Because if the attacker does just one little thing better than the other one, the attacker wins.”

Sergej Dechand ·

“They know what's going on, they have the source code.”

Sergej Dechand ·

“who knows what sort of coverage you're getting?”

Jon McLachlan ·

“They didn't want to use the tools. They found excuses not to use it.”

Sergej Dechand ·

“we pen test every six months”

Sergej Dechand ·

“We need to involve the developers.”

Sergej Dechand ·

“It's much easier to fix something in a pull request that's sitting on a separate branch”

Jon McLachlan ·

“So obviously, every developer admits if it's a clear hack.”

Sergej Dechand ·

“they invited tool vendors for a hackathon.”

Sergej Dechand ·

“all our purchasing processes delayed.”

Sergej Dechand ·

“no one actually focused on Java or the, let's say, memory-safe languages.”

Sergej Dechand ·

“No open source project will ask you for compliance reports or something like that.”

Sergej Dechand ·

“But what I'm looking for is the analytical process.”

Sergej Dechand ·

About the guest

Sergej Dechand, Co-Founder and Chief Evangelist, Code Intelligence

Sergej Dechand co-founded Code Intelligence in November 2017 and was its CEO until September 2024, then became its Chief Evangelist, according to Sergej's LinkedIn. Since June 2025, Sergej has been a senior researcher at the Max Planck Institute for Security and Privacy, and since April 2026, Professor of Application Security at Bonn-Rhein-Sieg University of Applied Sciences. Before Code Intelligence came usable security research at the University of Bonn, a PhD in information technology there, and project management at Fraunhofer FKIE. On this episode, Sergej tells of a pen test that missed two serious bugs because nobody measured code coverage, and of building fuzz testing that developers will use.

About the host

Jon McLachlan is co-founder of YSecurity, the on-demand cybersecurity team for startups, and of Cyberbase.ai. The Security Podcast of Silicon Valley is hosted by Jon McLachlan and Sasha Sinkevich. Jon McLachlan on LinkedIn ↗

Context and sources

  • Episode 21 on Podbean: Sergej Dechand, Co-Founder and CEO of Code Intelligence, on Fuzzing the Future. Source ↗
  • Sergej Dechand on LinkedIn: Code Intelligence CEO and co-founder from November 2017 to September 2024 and Chief Evangelist since, senior researcher at the Max Planck Institute for Security and Privacy since June 2025, Professor of Application Security at Bonn-Rhein-Sieg University of Applied Sciences since April 2026, researcher at the University of Bonn, project manager at Fraunhofer FKIE, and research assistant at the National Institute of Informatics. Source ↗
  • Sergej Dechand on LinkedIn, education: a PhD in information technology from the University of Bonn and a master's degree from TU Braunschweig. Source ↗
  • Sergej Dechand on LinkedIn, September 5, 2024: stepping down as CEO of Code Intelligence after more than 7 years to become Chief Evangelist. Source ↗
  • Sergej Dechand on LinkedIn, December 5, 2024: Jazzer is back to open source, with thanks to Google's Open Source Security team. Source ↗
  • Sergej Dechand on LinkedIn, January 14, 2025: Code Intelligence wins the German AI Award. Source ↗
  • Sergej Dechand on LinkedIn, May 27, 2026: Professor of Application Security at Bonn-Rhein-Sieg University of Applied Sciences. Source ↗
  • Code Intelligence on GitHub: the organization behind Jazzer, Jazzer.js and CI Fuzz. Source ↗
  • Jazzer on GitHub: a coverage-guided, in-process fuzzer for the JVM platform, based on libFuzzer, with a JUnit 5 integration. Source ↗
  • Jazzer.js on GitHub: Code Intelligence's fuzzer for JavaScript and Node.js. Source ↗
  • Episode 30 of this show: Dominik Schürmann of heylogin, and the USENIX Security 2016 study of textual key fingerprints with Sergej Dechand as first author. Source ↗
  • Wikipedia, Fuzzing: invalid, unexpected or random inputs, a name from a 1988 class project, AFL and libFuzzer instrumentation, coverage-guided fuzzing and Google's OSS-Fuzz announcement in December 2016. Source ↗
  • Wikipedia, American Fuzzy Lop: a free software fuzzer that uses genetic algorithms to increase code coverage. Source ↗
  • Wikipedia, Code coverage: the share of a program's source code that runs when a test suite runs. Source ↗
  • Wikipedia, Static program analysis: analysis of programs without executing them, in contrast with dynamic analysis. Source ↗
  • Wikipedia, Application security: static, dynamic and interactive application security testing. Source ↗
  • Wikipedia, Penetration test: an authorized simulated cyberattack on a computer system. Source ↗
  • Wikipedia, Code injection: a program interprets external data, such as user input, as commands. Source ↗
  • Wikipedia, Shift-left testing: testing earlier in the lifecycle, a term coined by Larry Smith in 2001. Source ↗
  • Wikipedia, Log4Shell: CVE-2021-44228 in Log4j, reported in November 2021, with a CVSS score of 10. Source ↗
  • Wikipedia, Heartbleed: an OpenSSL bug in the TLS heartbeat extension, publicly disclosed in April 2014. Source ↗
  • Wikipedia, Fraunhofer Society: a German organization for applied research with 74 institutes and research units. Source ↗
  • Wikipedia, Max Planck Institute for Security and Privacy: a computer science research institute founded in May 2019. Source ↗
  • Wikipedia, National Institute of Informatics: a Japanese research institute established in April 2000. Source ↗

Transcript

Automatic transcription. Jon McLachlan hosts this episode with Sergej Dechand, co-founder and CEO of Code Intelligence. There is no diarization on the tape, so speaker labels were assigned from the content and checked against reference recordings of each voice from this episode, and a few short lines may sit with the wrong speaker. Names and terms were normalized where the recognizer misheard them (Jon McLachlan, Sergej Dechand, Khaled Yakdan, Code Intelligence, fuzz testing, Jazzer, Jazzer.js, CI Fuzz, Log4j). Words in [brackets] are best guesses where the audio is unclear, and [...] marks words no decode made out. Speech is transcribed as spoken, though many repeated words and false starts are left out, and so are short backchannels such as "yeah" where they overlap the other speaker.

Read the full transcript 8,996 words

Jon McLachlan

Hello, everyone, and welcome to another episode of the Security Podcast in Silicon Valley. Sergej has years of experience in vulnerability scanning, security consulting, as well as usable security research. So far, he has worked as a freelancer in application security consulting and advised enterprises. He's also worked as a researcher at Fraunhofer, University of Bonn in Germany and the National Institute of Informatics in Tokyo. In the last few years, he co-founded Code Intelligence with his research partners Khaled Yakdan and their professor Matthew Smith. As the CEO, Sergej leads Code Intelligence to enable companies to simplify their application security testing with a goal of making Code Intelligence usable for developers. Welcome to the show, Sergej.

Sergej Dechand

Thank you, Jon. So, most of my research was coming actually from the University of Bonn. This is where, straight from the PhD program, we founded Code Intelligence.

Jon McLachlan

And so you were doing security research, or you were doing research and fuzz testing, and this is where all of the sort of the intellectual grit, the meat for Code Intelligence sort of bubble up, became inspired?

Sergej Dechand

Yes, exactly. So we were doing research that, technically, in usable security. And in usable security, you try to [involve] the human factors into the security. And at our research group, our humans, or our users, were not the typical end users, but we were looking on how helping IT administrators, developers, who are also [human], how to support them to make things more secure. And yeah, the research group was led by Matthew Smith, who was our supervisor, and [Khaled] and I, the co-founders, were PhD students. And then, at the end of our graduate, we were thinking about what we do next. And at that time, we were collaborating with some industry partners, and this is where we tried [fuzz testing first] analysis there. And based on the research ideas, we kind of accidentally founded a company. Initially, we wanted to build a product and somehow ended up with, [oh], now we founded a company, the three of us, and wanted to build the product.

Jon McLachlan

Amazing. So it's the passion and the drive and the focus on getting that difficult problem of usable security. So, if we unwind a little bit, I always love to ask folks about those formative years back in the day. So, if you think back to your childhood, do you have any stories that really helped shape who you are today and where you got that passion for usable security?

Sergej Dechand

Yeah, maybe [less] for the usability part. But let's say I started pretty early with computers. So my father had a computer and used it mostly for gaming. And then, around the age of 11, 12, or something like that, I was reading some novels. And one is The Cuckoo's Egg. It's a book written by [Clifford Stoll] and has seen that someone was stealing resources on the network, and kind of started to dig deeper and thought there is a software bug, but in the end, someone else was using the resources. And this was like my first introduction into hacking and stuff like that. There is also another book which is unknown in the US, but it's 23. So there was a famous hacker in Germany, [Karl] Koch, and he was a little bit into the conspiracies, but also in the hackers scene, and it was a biography about this guy. And based on the two books, I found it really fascinating as a child. And then, at some point, I had some computer games and I needed to give the games back, and I wanted to play them even though I didn't have [a CD-ROM]. And this was my first experience doing, this very first time doing it myself, basically, [bypassing] their copy protection. And then I realized this, [bypassing] as a child is more fun than the games itself. And yeah, this is how I got accidentally a little bit into programming. So I started with books, something like Delphi for kids. I started to learn Perl and PHP and got to [C] at some point.

Jon McLachlan

We must be part of the same generation because I have had very similar experiences in good times. Those are good times. Did you, as you were going through those years and you started to develop a strong sense of self, was there anything that jumped out at you in the world that you regarded as true that most people in this world totally miss or regard as false?

Sergej Dechand

[An inspiration, this came] years later. Seriously, it wasn't in the childhood. It was later when I was [still] at the university and I was doing some consulting projects. I slipped into the IT security industry, and this is where I found the inspiration. And being beginning of 20 years old, maybe a little bit later, so something like 25, and I would exaggerate a little bit. So what I have seen in the IT sec and AppSec business, because those were the years where IT security got really important because more and more things were transferred to the internet, the iPhone came out, [everyone] was connected already, and the business started to thrive, but with that, also like the criminality, and based on that, the IT sec. And if I exaggerate a little bit, the IT sec and AppSec business accidentally got in the direction where they started to sell certifications, certified policies, audits, assessments, compliance automation, and I don't know, certified enterprise [contests] and stuff like that. Basically, focusing on the regulations. So it was really focusing on the managers, and those have a lot of check marks. And this is basically also the right thing to do from that perspective, because to be legal, or to be legally on the safe side, they have to comply with all the [laws], kind of stuff. But at the same time, me working as an engineer, I have seen that it creates a lot of friction. The managers try to focus on compliance and filling in all those kinds of check marks. Then you have the security people, and the security people were, hey, let's find more security issues. And they had the [fun hacking] the software and telling the developers how to improve it. And then, [yeah, the] developers [got] defensive because, in the end, everyone was criticizing their work. From the management, they got to release faster, but at the same time, fulfill all the check marks. And there is one truth we all know, and it's [that], basically, all those [kinds] of assessments happen, but in the end, the software and the networks [were] still insecure because a lot of parts of [those] certifications and audits just do it from a very high-level perspective and don't dig into the technical details. So in the end, you got the certified software, but it wasn't really secure. And from the perspective of the end user, if we are reading any headline which is [ending up in] the newspapers, you read something, company [XYZ] got some ransomware and they were hacked. And then there is something like a reason. Someone opened a PDF, and based on the PDF, everything was infected. And it looks all of a sudden like the person clicking on that email did something wrong. But in the end, it's because there was a security issue, there was a misconfiguration, and we blame the end users. But if I receive a [CV] from someone, I want to open that PDF without thinking. [So], yeah, this is basically at what stage we are at. What really inspires [me], if we dig deeper into the companies, and stop doing this certification [or security process] top-down, but instead start with the engineers who are writing the software. Start with the people who know best what the software does because they are engineering it. And somehow, based on their processes and their [tooling], try to do the other way round. You get similar results with the certification. You still can achieve everything [to be legally safe], but you get your products actually secure from an user perspective. I want my phone to be secure. I want every software I use to be secure. So in the end, [based on] this inspiration or this insight, we [founded] Code Intelligence and said we have to focus on the developers and the engineers because they are the ones who can fix the software.

Jon McLachlan

I love it. No, the story resonates with everything that I've seen in my career here in Silicon Valley as a security professional, or there is often a tendency, let me say, to blame the user for security mishaps. And I don't, I have yet to meet a user that is, yep, I don't care about security, I'm just doing this thing, and has actually, you know, done something unreasonable. And to step back and to accept that part of our job as security professionals is to make this stuff usable, and to make it to be the sort of security professional where you step into a problem space and you present a real solution that doesn't introduce new friction, that's easy to use and to understand. You know, I think a lot of times we just, there's a tendency to focus on only the technical grit and to regard the human experience as like the stuff that you just have to do or to deal with. And that, that security that you were talking about, you were alluding to, of the certifications and everything, I call that checkbox security. And I make a distinction between checkbox security and actual security. There's some overlap there, but there's definitely, there's two ways to think about security, and those are the two sort of general, large ways that I've noticed companies do tend to think about security. The checkbox security, of course, because it's some legal and compliance reasons. But at the end of the day, what really matters, what keeps you out of the news for the wrong reasons, is definitely the real security. So I'd love that you have noticed this and have been inspired. So why didn't anyone else solve this?

Sergej Dechand

I wouldn't say no one else solved it yet. There is an entire movement already starting with [developer-first] security. So now, if you look on the different tools, and there is static analysis, dynamic analysis, and software component analysis, you see that a lot of [developer-first] companies come from the static analysis and software component analysis, but having more a look at the dynamic part, where you actually execute the software, [attack it from outside], it's still not there yet that developers use it. So if you're looking like at the most common [pen] tester tools, those are all dynamic analysis tools, but [they're used by pen] testers and [not by] developers. And this is where we come in, and we say that we plan to create the dynamic analysis to the developer.

Jon McLachlan

Amazing. So, may I ask, was it the experiences that you've had, perhaps in your childhood, that led you to bridge that gap between the static and the dynamic analysis, bringing it back to the, or what experiences led you to see that gap?

Sergej Dechand

Yep, that's a good question. Basically, I can think of [two] experiences leading to that. [One] inside the business and one inside the research. And in a business, I was a consultant, basically working as an engineer on a product. And this product was going through a certification and [pen testing, et cetera]. And I was the engineer, filled out a lot of checkbox and was talking to the security people during this entire assessment. And we were using static analysis, and [they paid], and they had this label, we do enterprise pen tests, where they basically gave you a report, and then the manager had the checkbox for ISO [27001] and some other certifications which were there. And I was digging because I was already interested in IT security and was already looking out for a lot of [methods]. So I knew what's going on and already found a few little issues myself. And basically, during the static code analysis part, we got a lot of false positives. We basically ruled them out. It was a little bit annoying, but not too much, so to filter out some of those issues. And [then, at some] point, the actual pen test happened. So we [rolled] everything out, and then they [attacked] the application from outside. At the end, they gave a report with 20 findings. And you would expect, if someone is [pen testing], you wouldn't have false [positives], because there is a human involved. And 18 out of the 20, if I remember correctly, so [that's in] my head right now, like that, only two issues were actual issues, and 18 were, hey, we ran this specific query on your REST API, and then it returned an error of 500. Because we did something in the username which had [a semicolon], a question mark and stuff like that, there [is an SQL] injection happening. But in the end, some other exception was thrown internally, so there was no SQL injection happening. This was basically the experience. But at the same time, I was doing code reviews and seeing what goes well and what doesn't go well. And what I found is that there was an SSL certificate issue. So basically, if you, instead of logging in via username and password, they only use the server authentication to the client. But if you use the smart card to [authenticate] the server, and the client software basically didn't check everything correctly. So you could issue any valid certificate, but they didn't check for the domain name. So this was the one issue. So you just present any valid certificate. Yeah, hello, welcome, welcome, sir. Exactly. But this only happened if you do the client authentication. So what they didn't do in the pen test is if you are authenticating [by a] smart card. So they did the test with authenticated via username password, but [they] didn't authenticate via smart card. This was the reason why they [didn't find it]. And there was this second part, which I don't remember correctly. I think it was, oh, it was a command line injection. And the command line injection was, if you were requesting too, too many results, there was a background job [started] with an [exec]. And basically, this background job triggered, but the exec got something from what the attacker was controlling. And basically, you could exec anything you want. So basically, this was also a very serious issue, which wasn't [found] by the static analysis and the pen test. And from the point of view from the pen test, so they [wrap] the pen test, they have a week, they [attack] the application from all directions, but no one measured code coverage. So basically, you didn't know what was going on. If you would have measured the code coverage, you would see, oh, there is an [exec] going on. It's only happening if you request more than whatever thousands of files. And there is an authentication going on with SSL, but it only happens if you authenticate via smart card. This wasn't detected. So, and this is where I started to build white box [testing], you have to measure what you didn't get. Otherwise, the pen test is worthless. Because if the attacker does just one little thing better than the other one, the attacker wins. And this is basically what a lot of companies have as an advantage. They know what's going on, they have the source code. So why not play out that advantage?

Jon McLachlan

No, I love it. So your real-world experience gave you the insight into identifying these two gaps. So let me try to summarize these two gaps. So you notice two huge gaps. One is that there were false positives. There were things that were being flagged in both static analysis and in dynamic analysis that were not actually issues. And then the other thing that it sounds like you're pointing out, which sounds like a much more grave gap, if I could use that word, is much less to do with the static analysis, but with the dynamic analysis, when you have pen testing teams, who knows what it is exactly that they're testing? You give them, you know, everyone that does a pen test, you sort of give your pen test contractors a time box, a time window, and they go off and they use their intuition and their creativity to poke and prod at your product. And at the end of the day, they're looking for ways to break in, but who knows what sort of coverage you're getting?

Sergej Dechand

Exactly.

Jon McLachlan

If they're not testing your smart card login component on your client, they will miss that bug that you had just mentioned, which was, it sounds like a very serious bug, if you just present any certificate and you're in. So this is perhaps a great segue into the product and perhaps some of your research that you've, led you to build the Code Intelligence. So maybe you would like to share with our listeners exactly what is the philosophy behind Code Intelligence, and how does the product help fill that gap?

Sergej Dechand

Yeah, so as I said in the beginning, it started on the research at the University of Bonn, and we were working with some enterprises in Germany, basically, who were doing software development, and they were collaborating with the university in finding new ways how to do software testing more effective and more efficient. We were trying out to introduce static [code] analysis, which they already used, and it wasn't bad. So in the end, it's really cool, [when] you type in the first parts into your IDE, and some static analysis gives you already the feedback inside the IDE. So which is great. But in the end, it's kind of missing the [pen test]. And I started to look there. And back then, so this was around 2016, 2017, gray box fuzz testing, or coverage-guided fuzz testing, feedback-based [fuzzing], [so those are] the names, were a big thing inside the research community, and also led in the open source community by Google. And the idea there was, hey, how about you instrument the source code, and based on the instrumentation, [you get] feedback from what kind of path [has been] taken inside the application, what kind of things were compared, to basically getting the entire feedback back to the [fuzzing] engine. And this way, not only just do the random testing, how fuzz testing started at the beginning, just [produce] random inputs, but get AI running on top of that. So genetic algorithms and stuff like that, basically, predict what might happen. And based on the coverage measurement, you get more and more things discovered. And it was really interesting, because there were a lot of open source projects. Using that, [in] the first phase, before even getting to the company's source code, we started with the open source parts, and we had some parsers, [JSON] parsers, [YAML] parsers and whatnot. And it always took two hours to set up everything, that it's running within the installation, and then 10 minutes to say, hey, just use the JSON parse method. And then to get to there, and then we got our first [CVEs]. So from all its perspectives, we were doing exactly [what] every researcher is doing, celebrating, we [find CVEs], we [find] issues and stuff like that. And then we started to talk to the development teams, and we have [experiences], they got really defensive. They didn't want to use the tools. They found excuses not to use it. [And] it was culturally, because we were in that mood, like celebrating that they make mistakes. [Yes, like], you're breaking their babies. Yeah, exactly. And this is where we started to talk to the management as well. So we started with the interviews. Usable security is a lot of interviews, [theory], studies and stuff like that. And then we started with the [interviews, hey], why don't you use it? Why? What is important to you? From what we have seen from the developer's point of view, for them it's important, they are using a specific set of tools, specific IDEs. They are using GitHub and maybe some [CI/CD] pipelines, like Jenkins, and stuff like that. And for them, it's really important that the tools what we have are compatible with their entire development process and the development stack, on the one hand. But on the other hand, when we started to [find] issues, it took some time to fix the issues, but on our side, and we started just to make a pull request, like fixing the issues silently, basically making a pull request, and then [it] was accepted. And then all of the sudden there was less friction with the developers, and we presented at some later point, by the way, we [found these] issues, but they are [fixed]. You don't have to care about anything. This is how you can find it later. And all of a sudden, we got less resistance.

Jon McLachlan

Now you're heroes. You're helping make their baby even more beautiful, right?

Sergej Dechand

Yeah, something like that, but still. So there were two types of developers. I mean, the one say, you're introducing something new, I want to focus on my problem. And the other ones raised the curiosity. Things got more interesting, though, when we started to talk to the management, so to the managers of those developers, what they see. And they had in their [head], look, we are moving now from, we pen test every six months, to, we are releasing to 20 times per day that specific product. So for us, we cannot do 20 pen tests. And between the six months, a lot of things can happen. And what they focus on is [complying]. So basically, they were already fulfilling the legal obligations. But what we have seen is also the managers, because those were former techies who [joined] the management, had a bad conscience there. They said, hey, this needs to be part of the process. We need to involve the developers. They already have friction. And yeah, based on those two experiences, the managers have to deal with regulation, no matter what you do, the developers need assistance, how to fix a [bug], we need all the process support, [tooling] support. We said, okay, in the end, it's not that much the technique you're using to [fight] issues, but it's much more about how to get the people involved.

Jon McLachlan

Yeah, that's a cultural problem now that you're facing, not a technical problem.

Sergej Dechand

It's a cultural and product problem, [indeed]. Like, this is what motivated us to found Code Intelligence.

Jon McLachlan

And you put a strong emphasis on making this a seamless, easy-to-use service that really provides strong value to the customer, which perhaps, like, the, you know, it's just the engineer building software. And there's always a desire to build the best software possible, right? Given the amount of time and resources that we have. And it sounds like what's happening with Code Intelligence in your product is that instead of having these really long feedback cycles from a dynamic pen test, where, you know, it's great feedback to have someone poke and prod at your software, but that, you can't do that 20 times a day. If you're going to release 20 times a day, you just can't do that 20 times a day. And so anything out there on the market that can help shorten that feedback loop, it's going to reduce the amount of overhead and reduce the cost, essentially. [The cost] being an engineer's time, cost being the impact on the customer, you know, the cost being sort of the risk exposure that business has if there's a bug that is released and then it's caught later. There's a feedback loop between when a bug is introduced and when a bug is noticed. And the further, the greater that distance in terms of time, the more expensive it is to fix, because the more places that software ends up. It's much easier to fix something in a pull request that's sitting on a separate branch, it's not even in the main branch yet, than it is to fix something after it's been released to 100,000 users.

Sergej Dechand

Yeah, exactly. It's just math.

Jon McLachlan

It's, so the product at Code Intelligence shortens, it sounds like, that opportunity for that feedback loop to come back to the engineer's view. [They're] always going to go back to an engineer. If you want to change a piece of software, you need an engineer's help. They're the ones who control what the software does at the end of the day.

Sergej Dechand

Exactly. Exactly. Exactly. And we are also collaborating with the University of Bonn, and there are some researchers, and there are some things basically suggesting that if you address the developers, then it's, they know best what kind of interfaces they have produced, and they know best if an issue comes up, whether it's a real issue or not. Oh, so they know.

Jon McLachlan

Oh, they know instantly.

Sergej Dechand

Yes. Not always, so they still get defensive. And I can understand that, because let's say something is in the gray area. So obviously, every developer admits if it's a clear hack. So, hey, there is a buffer overflow or command line injection, and you can exploit it right away. But most of the discussions and friction [we're] getting with our software is something in between. So, what [if] you get a denial of service, [is the] denial of service important enough or not? So those are smaller discussions, but we try to give the developer the opportunity to [triage the] bug themselves. And if they say, I don't want to see it again, for whatever reason, it will show up on a dashboard for some managers, that they know that it is ignored by the developers. In the end, they will talk to them. But it's not, hey, our software is [a force], and you'd fix that right away. Although there are limitations, some of the denial of services can [create]. So if you don't fix that bug, we cannot continue security testing because the fuzzer is always crashing the entire software, and you cannot continue to feed inputs. And those kind of issues have to be fixed. So there we haven't found a good way around that yet, but this is sort of what we are working on right now.

Jon McLachlan

Nice. No, I mean, this sounds, it sounds like the right approach to empower teams to make business decisions around what needs to be fixed first and what can be fixed later. And of course, you have to tie that, you always have to tie that back into a business need, because at the end of the day, like, our time is limited, our resources are limited, and businesses do have to build profitable businesses. Like, otherwise, if you're not doing that, I'm not sure what you're building, but maybe not a business. So I sympathize with the need to tie it into a business, a business direction and business push. So, but you've noticed this gap in the market. You've noticed that the opportunity you did, you poured your heart and your soul, your blood, sweat, and tears into solving this really difficult technical problem. And now you have a company almost by accident, it sounds like, and that's a different beast entirely. So maybe you could share with our listeners the best day that you've had on your journey so far in your company at Code Intelligence?

Sergej Dechand

Well, I can think of one situation, and this is the engineer inside of me being very proud. So there was an RFP in the early days of Code Intelligence happening for an automotive enterprise, and they wanted to introduce tools for security testing, and we applied for that RFP. And what they did in the RFP is that they invited tool vendors for a hackathon. So basically, for one day, come on their side, work with their computer, work with the software, and basically attack the automotive controller. And yeah, most of the, so, but this is what came out later. But basically, the thing is, so what we know is, hey, a lot of vendors [applied] there. And in the end, we [won] that specific RFP. So we were the ones which [are produced]. We know that most of the [fuzz testing] tools are focusing on [black box] testing and whatnot. And yeah, it was a really interesting experience, because we got so far, hey, it was like the other tools didn't find anything yet. What about you? And then we started with the [hackathon], and it was like eight in the morning. We started off, and our product was very early stage, and we didn't have an air gap installer back then. So basically, we had some dependencies in Docker which needed to be [pulled]. And in that corporate, you know, the proxies.

Jon McLachlan

Oh, yeah. They will stop that inbound traffic so hard and so fast.

Sergej Dechand

Yeah. And it didn't work with that proxy. So we were hacking a lot, and it took four hours to get around that corporate proxy. And then we started really to sweat. Hey, four hours left, and we didn't even start. But we got everything running. And my [co-founder Khaled] was really relaxed, [standing] in front of the keyboard, working with the [other] system. And then we started to [attack]. So there was IP network, there was [CAN bus], and [went out]. Then we started and found a [bug] here and there. And then it was just popping in. And this was a really good experience, because in the end, they put in some things accidentally, something on purpose, and wanted to find. And from what we found out, that it was like great performance. This is how [we got] into that company. And from the engineer's perspective, it was like really cool, because there were so many vendors out there, have our first [RFP] going on, we have no idea how to do the business, and got it just by producing good results.

Jon McLachlan

On the merit of the results and the product that produced those results.

Sergej Dechand

Yeah, it was a proud moment, but I don't know what the other side thinks. Maybe we were cheaper than the others, but it doesn't matter. Well, okay.

Jon McLachlan

So how about the flip side of that? Was, is there a worse day that you've had in Code Intelligence, [is] something that scared you, perhaps? It's always a journey, right?

Sergej Dechand

Yes. So there was one point at Code Intelligence when we really got scared. And imagine, from [spinning] out of the university, having the [contacts] in the enterprises, and basically helping the enterprises to deal with software testing, COVID hit. And basically, back then, it was like, we were just doing on-premise because enterprises, and we wanted to still validate our product, and then COVID hit. And in the beginning, it was like, okay, let's see how it goes. But two or three weeks later, after the lockdown, all our purchasing processes delayed. So there was no cash flow coming in anymore. Oh, no. The [process] companies had to adjust. And we were in the middle of a financing at the same time. So there was a lot of uncertainty, [you] know, like that moment, we sat together and we're thinking, how do we adjust in the end?

Jon McLachlan

So how did you adjust it in the end?

Sergej Dechand

Yeah, so we [made] the financing round, [despite] all that things happening. And from what we have seen, a few weeks later, things were better than expected, because the companies switched to a process now, working remotely, started to introduce more cloud services, which allowed SaaS. And even though SaaS was a deal breaker back then, it started to work out, hey, if you deploy [in our] Azure, in our AWS, we can work with that. This is where things started flowing again.

Jon McLachlan

Nice. For our listeners who do not get to see our video feed, there is a poster behind you. I just want to mention it. It says, if things are not failing, you are not innovating enough. And I just love that quote. So, you know, when you show resilience in the challenging moment, it's always easy to lead if things are going peachy and everyone is happy and things, and the money is flowing. But it's when things get tough and you have to dig deep and find that grit to get through those moments, that's where leadership sort of shines. And I think that your poster behind you also suggests and resonates with those ideas of challenging moments are the best moments.

Sergej Dechand

Yeah. So I mean, looking in the [hindsight], but like looking back, it's always, hey, I don't even know why I worry that much. But if you're in that situation and you already have a little team, and you have some kind of responsibility for the team, it's kind of what to do next. And everything I do inside that company, so it's my first company which I founded, and everything what I do is the very first time. So, like, I'm leveling to the next level, which is super exciting. But it's [on me], all this roller coaster [ride].

Jon McLachlan

Yeah. I mean, if it wasn't, I would be a little bit worried. So how big was your team when that happened? You mentioned your team, and you felt it.

Sergej Dechand

Yeah, we were already 12 people.

Jon McLachlan

12 people, yeah. And to build a business means to be able to provide for those folks, like, you know, so I understand completely and admire the resilience. If you look forward into the future and you see a very successful Code Intelligence, can you describe for us what that will look like?

Sergej Dechand

We will become the standard security testing platform. So what we are focusing is exactly on this coverage-guided testing. So during the runtime, based on the information, you get everything from source code and from instrumentation. And this is not implemented in most of the cases. So a lot of open source projects, especially written in C and [C++], are already experiencing it. But if you look at the business, it's still missing. And we see that we will drive that, hey, there is a new technology, like about 20 years back, when static analysis started to be this, for this kind of, let's say, white box testing, from the dynamic analysis part. In Gartner, they have also a [term], [IAST], for interactive application security testing. So basically, the [two-in-one] solution that we will become the [standard tool later].

Jon McLachlan

Amazing. So you've mentioned open source a couple of times, and the open source community, open source projects have pretty good traction here. And you guys open source a lot of your software as well, such as your fuzzing solution for the [JVM]-based languages. And so can you share with us what's the strategy behind your sharing so much of your technology and open sourcing it?

Sergej Dechand

Yeah, so it's basically giving an easier access to the new testing solutions which are out there. So while most of the academic world focused on C and [C++] or binary [fuzzers], so that basically means without having the source, still achieving all those results, no one actually focused on Java or the, let's say, memory-safe languages. So they were neglected. And if we see how much software is written right now, so JavaScript, the languages which are used [far more] than C and [C++]. And obviously, there you don't deal with [buffer overflows] and stuff like that, but rather most of the Java and JavaScript services are something like [web APIs], so REST APIs, [GraphQL] APIs, gRPC, and whatnot. And basically, this is where we started, okay, this in [C++] is working quite well. How about we apply the same techniques to what the business needs? And then you have also in Java, even though it's a memory-safe language, you had remote code execution like in Log4J, [...], the XML stuff that was there.

Jon McLachlan

Lots of it.

Sergej Dechand

Exactly. And we found [CVEs in] exactly a similar thing. So we even onboarded Log4J and showed that [Log4Shell could] have been found with the [fuzzer], with this way. And now we are collaborating with Google to onboard more and more open source projects using the [fuzzer]. But basically, in the first part, you focus on that the developers, the techies, the open source community is [using] all those techniques. So we found a lot of security issues already. There will be some advertisement going on soon where we publish some numbers and also publish how we [received] the participation. And just recently, we published a JavaScript fuzzer, basically the same thing, but [for the] JavaScript. [I want it], okay. Yeah. Focusing mainly on Node.js. So it's not for the front end. Some of the front-end stuff can be tested with it, but we are focusing [on the] back-end side, basically Node.js applications. Because what we experience is that in JavaScript, you often have more [junior] developers working with less experience. And this is where we see JavaScript, with Node.js, as one of the fastest growing languages there. So basically, this is what we open source. And we can find difficult [...] issues or remote code execution. So something similar to what [Log4J] or XML external entities or the command line injections I talked about in the beginning, which were happening in the enterprise, that we secure the open source landscape.

Jon McLachlan

So you get a lot of feedback from that open source community. And with a zero barrier to entry, open source projects, you're inviting folks to realize the value that you're offering instantly. And in exchange for that, it sounds like the strategy is the product-market fit. You get feedback loops from real engineers trying to solve real problems, and exactly what a company needs to actually bootstrap into a space. So even though there's all of this great feedback, that's super valuable, at some point you do have to earn money. And so what's the plan to earn money through Code Intelligence, even with all of this great open source community and the feedback loops and the projects that are out there?

Sergej Dechand

Yeah, that's a good question. We are basically focusing on enterprise features. So a lot of things, what you have in open source, hey, they have a Jenkins running or a GitHub pipeline. You basically know how to build the stuff, and everything works out well. If you look at the enterprise, though, you have large teams collaborating. So what are the main requested features from enterprise? Hey, [can you give us a Jira integration], stuff like that. With the enterprises, it's all about, hey, we want to get a specific report. No open source project will ask you for compliance reports or something like that. So this isn't happening. So basically, in the enterprise, hey, can you do it with our Azure cloud? Can you do it with our [CI] integration, with customized Jenkins? Can you export your things to some security [panel], to Jira, to whatever the [parts]? So this is the one part. And the second difference between open source and enterprise is, in open source, you usually provide libraries. You have a library to parse JSON. You have a library, [a web framework], where you really don't have the entire application, but basically a library where the developers are using a [framework], [a base for the API] that the libraries provide. The enterprise apps, like from [SaaS vendors], they have the web application running. So they have a web API based on REST, they have, let's say, [on] those kinds of interfaces. And what we don't open source, and what we close source, but in a similar white box testing manner, is basically those use cases which are less common in the open source, but for the enterprises. And basically, if you combine those two, you have a specific use case, how you open source projects use everything for free, at the same time focus on the enterprise issues, testing their software, using those kind of open source [tools] here, testing for free.

Jon McLachlan

Nice. So tease me a little bit about how the product is structured. If I'm an enterprise customer, do you have a SaaS service that is a multi-tenant SaaS, or is it like a single-tenant SaaS? Or do you have like on-[prem] deployment, where I have to stand up and run the entire technology stack in my own house and maintain it? Or how does that typically work, if I'm somewhat security conscious, but not like totally paranoid, like a large financial institution? What, how would you sell that to me?

Sergej Dechand

Yeah, so it's, SaaS is obviously our focus. So ideally, our customer has GitHub online, is using GitHub. They want to get additional deployments. So they have already [a running] pipeline. So it only makes sense for companies to already have a good CI/CD process running, where they have a testing process before something is deployed into production. We are just another step inside that part. Obviously, with the large enterprises, we have an on-premise solution, but on-premise sounds like, hey, you are giving hardware and everything is very old. But in the end, what we call on-premise is we are deploying it inside the companies' Azure or AWS or Google. So it's not like we have to support several operating systems or stuff like that, but basically focusing on, let's say, on-premise cloud or private [cloud]. So those are the two main parts, how we do it, with SaaS obviously being the focus.

Jon McLachlan

Yeah, no, I'm, appreciate the share. I'm just curious. It's always an interesting question. It's a security question too, whether to run things in the cloud, to run things on-prem. But then you have operational overhead if you go on-prem. But it sounds like you're taking care to make sure that the operational overhead is not, is not going to introduce too much friction, either on your side, you know, on the Code Intelligence side, on the support side, or on the customer side. So it goes back to that usable, the usability of software. And you've shared your passion for usable software, for easy solutions to these tough problems. So thank you. How about thinking about Code Intelligence? And as you grow, you have to bring on more and more team members. You have to bring on folks that are experts in areas that complement the existing team. Let's talk about interviews for a second. Do you have a favorite interview question, or what do you look for in an interview?

Sergej Dechand

So what I like to do, so it's not an interview question per se, so basically, not an interview question that I ask the specific question. But how I often ask is, if I take some potential case which is happening in the future, and I tell the scenario, and then I ask for the participants, say, what are you afraid of? Or what would you do? What could go wrong? And stuff like that. So what I experienced is that people are telling from their past instead of the future. So basically, they make the future, and then they transfer it [to] what they experienced so far. And sometimes, if you would ask directly, you would never get that honest or that [unfiltered] feedback. They [start] opening up there. And for whatever reason, more than if you ask about the past, and are more detached from the situation and try to analyze this. And this is interesting to see the thought [processes] of a lot of candidates. And there, you really see that some people make mistakes in the past and analyze it and know exactly what they would do. Things are completely different. And for me, it's really interesting to see that thought process.

Jon McLachlan

Amazing. So what do you look for when you see this? The thought process. Do you look for risk takers? Do you look for people that are more cautious or more analytical? Or what's the sweet spot for you?

Sergej Dechand

The sweet spot [to be is], so it depends on the position. So if you take someone for the legal team, probably it shouldn't be a [for risk taker, your legal]. Yeah, yeah. So it always depends on where folks [you, a person]. I mean, it's probably, it shouldn't be probably the most risk-taking person, but in other areas, it's a good trait. So it really depends. But what I'm looking for is the analytical process. Hey, I made a mistake. How I deal with that? Did I adjust my processes? So basically, how I interact with people and basically how I evaluate what happens. Do I blame others, or I blame myself?

Jon McLachlan

Or basically take ownership of the problems yourself.

Sergej Dechand

Yeah, exactly. And this is something I would say it's not only difficult for startups, but it is really always challenging.

Jon McLachlan

Regardless of the size of your company or the maturity of your, you know, your operations, it's a, it's a human problem. And, and anywhere that we go, that you're going to find people. You're going to have to interact with them and work well together at the end of the day.

Sergej Dechand

Exactly. So, but this is like a little assessment, and it's not too hard, but it's fascinating to see how people reflect on that. And yeah, I, so those kind of questions focusing on the future, but in reality, hearing the candidates' past, is cool to see.

Jon McLachlan

That's awesome. I've never heard of that trick before, to ask about the future, but then read it in the take of, you know, we're using our experiences to filter and to color how we see the future.

Sergej Dechand

The people, so the candidates even say, hey, I have this experience in the past, so they already bring it up.

Jon McLachlan

That's what you mean by opening up.

Sergej Dechand

Yeah, yeah. It's not [how] I am tricking into something. It's more, you see them opening up themselves.

Jon McLachlan

And that's exactly, I think, what everyone wants. I think we want to feel like the door is open to be ourselves and to be our authentic self and to share that and to find a, a good fit where those experiences can be valuable. So if we fast forward into the future, again, is there any service or tool or challenge that you wish someone would just go off and solve already that has maybe nothing to do with Code Intelligence?

Sergej Dechand

I haven't found a good tool, basically streamlining a lot of different channels. So a startup grows organically at a rate, and then you start using something like Slack with some customers, [Teams]. You have emails, you have Confluence, you have Jira or Notion, whatever the type of software it is that your company uses, or if you have meeting notes. And at some point, if you want to know, oh, we had this issue, or we decided to solve this, and then you don't remember, was it an email thread? Was it a Slack, Teams, and whatnot? And basically, to search through that information, this is something where it would be great to see some tools. I have tried a few. I wasn't happy with that yet, but this would be something where I think there's an opportunity.

Jon McLachlan

So you hear that, all of those, so there's a lot of founders listening for that next big idea. If you're listening and you want to go off and build something that has a real market, you could build this, and Sergej will go off and use it.

Sergej Dechand

Yeah, most likely. Or maybe there is something out there and I just haven't discovered it yet. I am grateful for all the tips. Maybe, Jon, you knew something.

Jon McLachlan

I have no particular solution for this problem, and I bumped into the exactly the same problem myself. Oftentimes, this is where a rigid culture in a company will pay [off]. As much as I don't like rigidity or I don't like dogmatic views about how to operate or how to communicate, if you are in a company and everyone is using one tool to communicate, it actually becomes pretty straightforward where to go look for things. But then that assumes that you're only communicating internally. And then you bump into the same problem if you're a salesperson or external, if you have any external facing role. Oh, how did I communicate with that person? You know, what was that email? Was that an external Slack thing? Was that something else? You know, so I sympathize. I'm also part of this market. So if someone goes off and builds something great, or knows of something, and you would like to ping me or Sergej or both of us, we would both be most grateful for any solutions here. But I love looking into the future. And one of the great things about being a founder is that there's no limit in the imagination or the creativity. And so I always love to ask co-founders and founders of companies, like, what is your vision for the future? What about that vision gets you the most excited?

Sergej Dechand

Yeah, so with the vision, I think that there were huge advancements in the IT security. Just looking on the past 20 years, how much more protected everything became, and how much better everything is. Like, not everything can be hacked, so things already improved a lot. But we are still not there yet, that, hey, I can just [use, open a PDF] file and be kind of secure from an [everyday] user perspective. Obviously, if you are using Linux and specific systems, or an expert, things already work out. But for the [laypeople], it would be more difficult. So if I'm looking at the future vision of Code Intelligence, I see that we are supporting that part, where you can trust your products, rely on products you use every day, because they received a lot of testing, and not just checkbox security. You call it as a real security here. But getting all of the security. And it's also, right now, we are focusing just on applications. But from the vision, where I see the future, where other companies might come in, is also, hey, there is also operations, how you could clear the access rights. And maybe application security and this operation security will get [tied] together at some point. But, but for now, I see the mission for Code Intelligence is basically, hey, we will [improve] the products which are shipped, so we'll help the developers build the secure products, and others can contribute on the other aspects of security in our lives.

Jon McLachlan

Thank you so much, Sergej. This has been an absolute pleasure. I think I speak for all of the listeners when I express gratitude for your sharing a small piece of your very long journey that has ended you up inside Code Intelligence, building a company from the ground up with all of your great insights. Would you like to leave any of our listeners with any words of wisdom?

Sergej Dechand

Yeah, the final thoughts, where I got asked, what is the thing what we want to achieve with them as customers? And I always say, hey, you don't release any software where there is a bug which could have been found by [fuzz testing]. So this is something like the short term, what we will definitely achieve.

Jon McLachlan

Can we go to the GitHub site on Code Intelligence? Just Google it and try out your product?

Sergej Dechand

Oh, sure. So if you search for Code Intelligence Testing, you find three open source projects. There is Jazzer. It's the Java virtual machine fuzzer. So basically, every language compiled to the JVM, libraries there can be fuzzed. You can download the CLI. It's basically, hey, I want to streamline the process and run it. So it's called CI Fuzz. And the third project is Jazzer.js. It's the JavaScript [fuzzer]. So, and from there, if you are interested in the more enterprise use cases, just take a product tour on code-intelligence.com. About two weeks ago, we open sourced [Jazzer.js], the first effective JavaScript engine, allowing companies to use the recent advancements of [fuzz testing] we just talked about for their Node.js back ends. JavaScript is super important since it is placed in more and more back ends nowadays. And next week, we are going to present [a CI Fuzz]. It's an open source interface for command lines and IDEs, which allows to make [fuzz testing] as easy as unit testing. So it's basically integrating all the language we support into one solution, at all the IDEs, so that the developers are continuing to use it like they know from unit testing. So they just [play, click on play] in their IDEs, and then it will do all the regressions and show the security issues, if any come up.

Jon McLachlan

I'll definitely be using it. Sergej, thank you again. Thank you to all of our listeners for tuning into the Security Podcast of Silicon Valley, and stay tuned for another episode. Thanks, everyone.

Sergej Dechand

Thank you, Jon, for the invitation. And thank you for listening.

FAQ

Questions this episode answers

What does Code Intelligence do?
Code Intelligence builds fuzz testing tools for developers, with open source fuzzers for the Java virtual machine and JavaScript and enterprise features on top. Sergej Dechand co-founded it and was its CEO at the time of the episode.
Why did the pen test miss two serious bugs?
It never logged in with a smart card, where the client accepted any valid certificate, and it never triggered a background job whose exec took attacker input. No one measured code coverage, so nobody knew what the test reached.
How many findings in the pen test report were real?
As Sergej remembered it, two of 20. The other 18 were an error 500 caused by special characters in a username, and there was no SQL injection.
What is coverage-guided fuzzing?
A fuzzer that instruments the code, measures which paths each input takes, and feeds that back so genetic algorithms and similar methods can steer the next inputs toward new code.
Why did developers resist security tools at first?
The researchers celebrated each finding, and developers got defensive. Friction dropped when the tools fit their IDEs, GitHub and pipelines, and fixes arrived as pull requests.
Why focus on Java and JavaScript?
Sergej said fuzzing research focused on C and binaries and neglected memory-safe languages, though Java still had remote code execution like Log4j. Code Intelligence open sourced Jazzer for the JVM and Jazzer.js for Node.js.
How does Code Intelligence make money?
Enterprise features: specific reports for compliance, Azure, customized Jenkins and Jira, and testing for whole web applications. Open source projects use the fuzzers for free.
What is Sergej Dechand's favorite interview approach?
Describe a scenario set in the future and ask what the candidate fears or would do. Candidates answer from their past, and Sergej looks for the analytical process after a mistake.
New episodes every other Tuesday

Got a story like this one?

We're always looking for practitioners who've been in the room when it mattered.