**Level:** Intermediate **Description:** One leaked database password. Four hours later, full admin access. This workshop shows you how attackers chain exploits, and how to stop them. Using a real Go web application, you will go through the process of evaluating a real-world-like system, identifying, summarizing, and classifying the risks, vulnerabilities, and threats. Using an assumed breach scenario starting with a single stolen credential, you will then trace how one piece of vital information can pivot into broader data access and overall system compromise. Go applications in production environments have a large number of dependencies that increase their threat landscape when deployed, and as applications age, those dependencies and linkages only grow larger. You will also learn to create and analyze data flow diagrams, identify trust boundaries, and map out attack paths – then design practical mitigations that can be implemented in their own systems. The scenario will include external services not under the control of the developer’s team or company for a real-world application of threat modeling. This ensures that the training includes black-box threat modeling as part of the exercise and deployment/development of compensating controls. Throughout this exercise, we'll use the STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) framework for systematic threat identification, build attack trees to visualize exploit chains, and apply risk matrices to prioritize what to fix first. Whether you've never heard of threat modeling or done it informally for years, the goal of this workshop is to give you a framework for thinking about security in your own systems. **What You'll Learn** *Threat Modeling Fundamentals* * What threat modeling is and why developers should own it * Clear understanding of Vulnerability vs Threat vs Risk * Using the STRIDE framework to systematically identify threats * Creating and reading data flow diagrams (DFDs) * Identifying trust boundaries and attack surfaces * Mapping Identified Risks / Vulnerabilities and Weaknesses of MITRE *Attack Trees* * How attack trees complement STRIDE by mapping how threats are realized * Visualizing attack chains from initial compromise to objective * Identifying prerequisites and dependencies in attack paths *Credential Compromise Analysis* * Types of credentials and their “blast radius” * Mapping lateral movement paths from a single compromised credential * Understanding privilege escalation opportunities * Identifying sensitive data exposure risks *Prioritization & Mitigation* * Using risk matrices to prioritize threats * Implementing the principle of least privilege in practice * Secrets management and rotation strategies * Defense in depth for credential compromise **Prerequisites** * Basic understanding of three-tier web application architecture * Familiarity with various credential types, such as API keys, tokens, passwords, and connection strings * Comfort reading and understanding architecture diagrams **What You'll Need** * An IDE or Editor (VS Code Recommended) * Have a functioning[ ](https://golang.org/dl/)**[Go environment](https://golang.org/dl/)** installed with Go 1.24+ * **[Docker](https://docs.docker.com/get-docker/)** or Docker Desktop with Docker Compose support * A tool for diagramming (Notebooks and pens will be provided, but use what you’re most comfortable with) * A browser with developer console access (Firefox recommended) **Recommended Preparation** * Clone the example repository * Ensure you’re able to start, and stop, the docker-composed file in the root of the repository * Please **[email](mailto:benji@codepros.org)** the instructor, Benji Vesterby, for assistance.