<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Rahul Joshi</title>
    <description>The latest articles on Forem by Rahul Joshi (@17j).</description>
    <link>https://forem.com/17j</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1524770%2F09c3d179-30ac-4ff6-99ac-d78fbecdde6a.png</url>
      <title>Forem: Rahul Joshi</title>
      <link>https://forem.com/17j</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/17j"/>
    <language>en</language>
    <item>
      <title>Your Cloud Isn’t Secure — Until You Can Measure It: Building a Cloud Security Index Across AWS and Azure</title>
      <dc:creator>Rahul Joshi</dc:creator>
      <pubDate>Fri, 03 Apr 2026 12:17:11 +0000</pubDate>
      <link>https://forem.com/17j/your-cloud-isnt-secure-until-you-can-measure-it-building-a-cloud-security-index-across-aws-and-22o1</link>
      <guid>https://forem.com/17j/your-cloud-isnt-secure-until-you-can-measure-it-building-a-cloud-security-index-across-aws-and-22o1</guid>
      <description>&lt;p&gt;☁️ What is a Cloud Security Index (CSI)?&lt;/p&gt;

&lt;p&gt;Think of CSI as a &lt;strong&gt;security health score&lt;/strong&gt; for your cloud environment.&lt;/p&gt;

&lt;p&gt;It answers key questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How secure is your infrastructure right now?&lt;/li&gt;
&lt;li&gt;How many security controls are implemented?&lt;/li&gt;
&lt;li&gt;What vulnerabilities are still unresolved?&lt;/li&gt;
&lt;li&gt;How far are you from compliance?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In simple terms:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;CSI = A measurable view of your cloud security posture&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;🏗️ How Does It Work?&lt;/p&gt;

&lt;p&gt;At a high level, the process looks like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud resources → Scanning → Misconfiguration detection → Risk scoring → Final security score&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each issue is assigned a severity level. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public storage (e.g., S3 bucket) → High risk&lt;/li&gt;
&lt;li&gt;Missing MFA → Critical&lt;/li&gt;
&lt;li&gt;Unencrypted storage → Medium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are then aggregated into a &lt;strong&gt;single percentage score&lt;/strong&gt;, representing your overall security posture.&lt;/p&gt;




&lt;p&gt;📊 What Does CSI Typically Measure?&lt;/p&gt;

&lt;p&gt;A well-designed Cloud Security Index usually evaluates:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identity &amp;amp; Access Management (IAM)&lt;/strong&gt; risks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network exposure&lt;/strong&gt; (open ports, public endpoints)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encryption coverage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logging and monitoring status&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vulnerabilities in workloads and images&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance alignment&lt;/strong&gt; (SOC 2, ISO, PCI, etc.)&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;🛡️ Real-World Tools That Generate CSI-Like Scores&lt;/p&gt;

&lt;p&gt;In practice, you don’t build everything from scratch—cloud providers already give you powerful tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 AWS Security Hub
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Native AWS security posture management tool&lt;/li&gt;
&lt;li&gt;Maps against CIS benchmarks&lt;/li&gt;
&lt;li&gt;Provides a consolidated security score&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Microsoft Defender for Cloud
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Azure’s built-in posture management solution&lt;/li&gt;
&lt;li&gt;Offers a &lt;strong&gt;Secure Score&lt;/strong&gt; and compliance dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Cloud Security Alliance (CSA)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Provides the &lt;strong&gt;CSA STAR framework&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Helps measure cloud security maturity&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🚀 Why CSI Matters for DevSecOps (Real-World Usage)&lt;/p&gt;

&lt;p&gt;Now let’s bring this into a practical DevSecOps perspective 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  1️⃣ Continuous Monitoring
&lt;/h2&gt;

&lt;p&gt;Instead of relying on periodic checks, CSI enables &lt;strong&gt;continuous visibility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Teams can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track security scores daily or weekly&lt;/li&gt;
&lt;li&gt;Detect new misconfigurations quickly&lt;/li&gt;
&lt;li&gt;Identify infrastructure drift&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It answers a critical question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Is our security posture improving—or degrading?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2️⃣ Compliance Readiness Indicator
&lt;/h2&gt;

&lt;p&gt;Before going into audits (SOC 2, ISO 27001), CSI acts as a &lt;strong&gt;pre-check&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A high score (typically 90%+) indicates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Major gaps are already addressed&lt;/li&gt;
&lt;li&gt;You’re closer to audit readiness&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3️⃣ Risk-Based Prioritization
&lt;/h2&gt;

&lt;p&gt;Rather than fixing issues randomly, CSI helps prioritize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Critical IAM issues first&lt;/li&gt;
&lt;li&gt;Public exposure risks next&lt;/li&gt;
&lt;li&gt;Then medium/low findings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a &lt;strong&gt;structured remediation strategy&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ Executive-Level Reporting
&lt;/h2&gt;

&lt;p&gt;Leadership doesn’t want raw logs—they want clarity.&lt;/p&gt;

&lt;p&gt;Instead of technical noise, CSI provides a simple narrative:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Our cloud security posture improved from 72% to 88% this quarter.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s actionable and measurable.&lt;/p&gt;




&lt;p&gt;🧠 Example Scenario&lt;/p&gt;

&lt;p&gt;Let’s make this practical:&lt;/p&gt;

&lt;h3&gt;
  
  
  Initial State:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MFA disabled&lt;/li&gt;
&lt;li&gt;Public database access&lt;/li&gt;
&lt;li&gt;No encryption&lt;/li&gt;
&lt;li&gt;Logging disabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CSI Score: ~40%&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  After Improvements:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MFA enabled&lt;/li&gt;
&lt;li&gt;Database made private&lt;/li&gt;
&lt;li&gt;Encryption enforced&lt;/li&gt;
&lt;li&gt;Logging enabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CSI Score: ~85%&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;This is the real value of CSI—it turns security into something &lt;strong&gt;measurable and trackable&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;🎯 CSI vs Compliance — Key Difference&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cloud Security Index&lt;/th&gt;
&lt;th&gt;Compliance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Score-based&lt;/td&gt;
&lt;td&gt;Audit-based&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Continuous&lt;/td&gt;
&lt;td&gt;Periodic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical focus&lt;/td&gt;
&lt;td&gt;Governance + Process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal tracking&lt;/td&gt;
&lt;td&gt;External validation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;⚠️ Important Clarification&lt;/p&gt;

&lt;p&gt;A Cloud Security Index is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not a certification&lt;/li&gt;
&lt;li&gt;Not legally recognized&lt;/li&gt;
&lt;li&gt;Not a replacement for compliance frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, it is a &lt;strong&gt;powerful internal metric&lt;/strong&gt; for improving security maturity.&lt;/p&gt;




&lt;p&gt;🏆 Why CSI Truly Matters&lt;/p&gt;

&lt;p&gt;A well-implemented CSI helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand real-time security posture&lt;/li&gt;
&lt;li&gt;Detect misconfigurations early&lt;/li&gt;
&lt;li&gt;Stay audit-ready&lt;/li&gt;
&lt;li&gt;Communicate effectively with leadership&lt;/li&gt;
&lt;li&gt;Drive continuous improvement&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;☁️ Practical Implementation&lt;/p&gt;

&lt;p&gt;Let’s walk through how this works in real environments.&lt;/p&gt;




&lt;p&gt;🔹 AWS Implementation — Security Hub&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Enable AWS Config
&lt;/h3&gt;

&lt;p&gt;This is the foundation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Record all resources&lt;/li&gt;
&lt;li&gt;Store logs in S3&lt;/li&gt;
&lt;li&gt;Ensure continuous tracking&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 2: Enable Security Hub
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Activate Security Hub&lt;/li&gt;
&lt;li&gt;Default standards (CIS, AWS Best Practices) are enabled&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 3: Enable Security Standards
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AWS Foundational Security Best Practices&lt;/li&gt;
&lt;li&gt;CIS Benchmark&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These generate your compliance score.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Review Security Score
&lt;/h3&gt;

&lt;p&gt;Dashboard shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overall score&lt;/li&gt;
&lt;li&gt;Failed controls&lt;/li&gt;
&lt;li&gt;Critical findings&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 5: Remediate Issues
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable MFA → Score improves&lt;/li&gt;
&lt;li&gt;Restrict public access → Score improves&lt;/li&gt;
&lt;li&gt;Encrypt storage → Score improves&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Real DevSecOps Usage
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Weekly posture reviews&lt;/li&gt;
&lt;li&gt;Alerts via SNS&lt;/li&gt;
&lt;li&gt;Export findings to S3&lt;/li&gt;
&lt;li&gt;Automate fixes using Terraform&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🔹 Azure Implementation — Microsoft Defender for Cloud&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Enable Defender for Cloud
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Activate at subscription level&lt;/li&gt;
&lt;li&gt;Basic tier available for free&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 2: Review Secure Score
&lt;/h3&gt;

&lt;p&gt;Dashboard includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure Score (%)&lt;/li&gt;
&lt;li&gt;Recommendations&lt;/li&gt;
&lt;li&gt;Resource health&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 3: Apply Recommendations
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable disk encryption&lt;/li&gt;
&lt;li&gt;Enable MFA&lt;/li&gt;
&lt;li&gt;Restrict network access&lt;/li&gt;
&lt;li&gt;Enable logging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Score updates automatically after fixes.&lt;/p&gt;




&lt;p&gt;🔥 Cross-Cloud Example&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;AWS Score&lt;/th&gt;
&lt;th&gt;Azure Score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Initial&lt;/td&gt;
&lt;td&gt;52%&lt;/td&gt;
&lt;td&gt;60%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After Fixes&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;td&gt;88%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;This is your &lt;strong&gt;Cloud Security Index improvement story&lt;/strong&gt;—clear, measurable, and impactful.&lt;/p&gt;




&lt;p&gt;💰 Budget-Friendly Tips&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS&lt;/strong&gt;: Use free trial of Security Hub; limit scope to test environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure&lt;/strong&gt;: Basic Secure Score is free; advanced features are paid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For demos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable → Capture insights → Disable&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🧠 Day-to-Day DevSecOps Usage&lt;/p&gt;

&lt;p&gt;In real projects, teams should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor security posture weekly&lt;/li&gt;
&lt;li&gt;Prioritize high-severity issues&lt;/li&gt;
&lt;li&gt;Track score trends over time&lt;/li&gt;
&lt;li&gt;Integrate alerts (Slack, email, etc.)&lt;/li&gt;
&lt;li&gt;Map findings to compliance controls&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🎯 Final Takeaway&lt;/p&gt;

&lt;p&gt;Whether you’re using AWS or Azure, both provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuous security posture visibility&lt;/li&gt;
&lt;li&gt;Risk-based insights&lt;/li&gt;
&lt;li&gt;Compliance readiness indicators&lt;/li&gt;
&lt;li&gt;Executive-friendly reporting&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;👉 The bottom line:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you can’t measure your cloud security, you can’t improve it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that’s exactly where a &lt;strong&gt;Cloud Security Index&lt;/strong&gt; becomes essential.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>azure</category>
      <category>devsecops</category>
      <category>cloudsecurity</category>
    </item>
    <item>
      <title>Terraform Can Destroy Your Cloud in 5 Minutes — Here’s How I Secured Mine</title>
      <dc:creator>Rahul Joshi</dc:creator>
      <pubDate>Fri, 13 Feb 2026 07:12:07 +0000</pubDate>
      <link>https://forem.com/17j/terraform-can-destroy-your-cloud-in-5-minutes-heres-how-i-secured-mine-2h30</link>
      <guid>https://forem.com/17j/terraform-can-destroy-your-cloud-in-5-minutes-heres-how-i-secured-mine-2h30</guid>
      <description>&lt;h2&gt;
  
  
  🚨 Terraform Is Powerful. That’s Exactly Why It’s Dangerous.
&lt;/h2&gt;

&lt;p&gt;With a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I can provision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VPC&lt;/li&gt;
&lt;li&gt;EKS Cluster&lt;/li&gt;
&lt;li&gt;IAM Roles&lt;/li&gt;
&lt;li&gt;Security Groups&lt;/li&gt;
&lt;li&gt;Public Endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In minutes.&lt;/p&gt;

&lt;p&gt;Now look at this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="nx"&gt;cidr_blocks&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"0.0.0.0/0"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One line.&lt;/p&gt;

&lt;p&gt;That’s enough to expose your infrastructure to the entire internet.&lt;/p&gt;

&lt;p&gt;No attacker required.&lt;br&gt;
No zero-day exploit needed.&lt;br&gt;
Just misconfiguration.&lt;/p&gt;

&lt;p&gt;That’s when I realized:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Infrastructure as Code without security is just automated risk.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I decided to secure my Terraform AWS EKS project properly.&lt;/p&gt;

&lt;p&gt;Repo:&lt;br&gt;
👉 &lt;a href="https://github.com/17J/Terraform-AWS-EKS" rel="noopener noreferrer"&gt;https://github.com/17J/Terraform-AWS-EKS&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  🎯 The Goal
&lt;/h2&gt;

&lt;p&gt;I didn’t just want scanning.&lt;/p&gt;

&lt;p&gt;I wanted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Security before &lt;code&gt;terraform apply&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Pull Requests blocked if insecure&lt;/li&gt;
&lt;li&gt;✅ Fully automated DevSecOps workflow&lt;/li&gt;
&lt;li&gt;✅ No manual dependency&lt;/li&gt;
&lt;li&gt;✅ Layered security validation&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🛠 Step 1 — Break It on Purpose
&lt;/h2&gt;

&lt;p&gt;Before adding tools, I intentionally introduced insecure configurations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open security groups&lt;/li&gt;
&lt;li&gt;Public EKS endpoint&lt;/li&gt;
&lt;li&gt;Missing encryption&lt;/li&gt;
&lt;li&gt;No secrets encryption&lt;/li&gt;
&lt;li&gt;0.0.0.0/0 ingress rules&lt;/li&gt;
&lt;li&gt;No VPC flow logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If tools didn’t catch this, they weren’t worth using.&lt;/p&gt;

&lt;p&gt;Security tools must prove themselves.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔎 Step 2 — Checkov (The First Reality Check)
&lt;/h2&gt;

&lt;p&gt;After integrating Checkov into GitHub Actions, I ran the pipeline.&lt;/p&gt;

&lt;p&gt;Here’s what it detected:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftozxguxj0b0v75d5mq37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftozxguxj0b0v75d5mq37.png" alt=" Checkov output snapshot" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🔥 Critical Findings:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;CKV_AWS_38 — EKS public endpoint open to 0.0.0.0/0&lt;/li&gt;
&lt;li&gt;CKV_AWS_39 — EKS public endpoint not disabled&lt;/li&gt;
&lt;li&gt;CKV_AWS_58 — Secrets encryption not enabled&lt;/li&gt;
&lt;li&gt;CKV_AWS_382 — Unrestricted security group egress&lt;/li&gt;
&lt;li&gt;CKV_AWS_24 — Open SSH (port 22)&lt;/li&gt;
&lt;li&gt;CKV_AWS_25 — Open RDP (port 3389)&lt;/li&gt;
&lt;li&gt;CKV_AWS_260 — Open HTTP (port 80)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This wasn’t cosmetic.&lt;/p&gt;

&lt;p&gt;This was production-level exposure.&lt;/p&gt;

&lt;p&gt;Manual review would never consistently catch all of this.&lt;/p&gt;

&lt;p&gt;That’s when I understood:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Security scanning is not optional. It’s mandatory.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🔎 Step 3 — Terrascan (Different Engine, Different Perspective)
&lt;/h2&gt;

&lt;p&gt;Then I integrated Terrascan.&lt;/p&gt;

&lt;p&gt;Different policy engine.&lt;br&gt;
Different rules.&lt;br&gt;
Different detection logic.&lt;/p&gt;
&lt;h3&gt;
  
  
  Terrascan JSON Output Example:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmcl9y3whe2cyy5w94fe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmcl9y3whe2cyy5w94fe.png" alt="Terrascan JSON File Snap" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It flagged:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AC_AWS_0369 — VPC Flow Logs Not Enabled&lt;/li&gt;
&lt;li&gt;Logging and Monitoring gaps&lt;/li&gt;
&lt;li&gt;Multiple module-level misconfigurations&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Terrascan Summary Report:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3aes3oy578gc8vto9dni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3aes3oy578gc8vto9dni.png" alt="Terrascan Summary Report" width="743" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the report:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Policies Validated: 141&lt;/li&gt;
&lt;li&gt;Violated Policies: 3&lt;/li&gt;
&lt;li&gt;High: 2&lt;/li&gt;
&lt;li&gt;Low: 1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Terrascan caught issues that Checkov didn’t.&lt;/p&gt;

&lt;p&gt;That’s when I realized:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Security is layered.&lt;br&gt;
No single tool is enough.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🔎 Step 4 — Trivy (The Underrated Move)
&lt;/h2&gt;

&lt;p&gt;Most engineers use Trivy only for container scanning.&lt;/p&gt;

&lt;p&gt;But I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;trivy config &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s the result summary:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3kxpqwqdiif31k267699.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3kxpqwqdiif31k267699.png" alt="Trivy Report Snapshot" width="378" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trivy scanned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terraform code&lt;/li&gt;
&lt;li&gt;Module directories&lt;/li&gt;
&lt;li&gt;Multiple configuration layers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It identified:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;6 misconfigurations in EKS module&lt;/li&gt;
&lt;li&gt;2 misconfigurations in VPC module&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One command.&lt;/p&gt;

&lt;p&gt;Multiple IaC layers scanned.&lt;/p&gt;

&lt;p&gt;This is where the pipeline became powerful.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The Final Secure Workflow
&lt;/h2&gt;

&lt;p&gt;Here’s what my GitHub Actions pipeline now looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pull Request
   ↓
terraform fmt
   ↓
terraform init
   ↓
terraform validate
   ↓
Checkov Scan
   ↓
Terrascan Scan
   ↓
Trivy Config Scan
   ↓
terraform plan
   ↓
Manual Approval
   ↓
terraform apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If any security tool fails → PR fails.&lt;/p&gt;

&lt;p&gt;Infrastructure never gets deployed.&lt;/p&gt;

&lt;p&gt;That’s the difference between:&lt;/p&gt;

&lt;p&gt;DevOps → Automate infrastructure&lt;br&gt;
DevSecOps → Automate secure infrastructure&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What I Learned
&lt;/h2&gt;

&lt;p&gt;Security is not about adding tools.&lt;/p&gt;

&lt;p&gt;It’s about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blocking insecure infrastructure early&lt;/li&gt;
&lt;li&gt;Enforcing policy automatically&lt;/li&gt;
&lt;li&gt;Removing human dependency&lt;/li&gt;
&lt;li&gt;Making insecure code impossible to merge&lt;/li&gt;
&lt;li&gt;Layering security validation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Shift Left isn’t a buzzword.&lt;/p&gt;

&lt;p&gt;It’s survival.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 Final Thought
&lt;/h2&gt;

&lt;p&gt;Terraform can build your entire cloud in minutes.&lt;/p&gt;

&lt;p&gt;If your security isn’t just as fast,&lt;/p&gt;

&lt;p&gt;you’re not automating infrastructure.&lt;/p&gt;

&lt;p&gt;You’re automating your next breach.&lt;/p&gt;




&lt;p&gt;⚠️ Disclaimer&lt;/p&gt;

&lt;p&gt;This repository intentionally contains insecure configurations for the purpose of testing security scanners and demonstrating DevSecOps validation workflows.&lt;/p&gt;

&lt;p&gt;All misconfigurations were introduced in a controlled environment to validate policy enforcement and security automation.&lt;/p&gt;

&lt;p&gt;This project is not intended for production use.&lt;/p&gt;




</description>
      <category>terraform</category>
      <category>aws</category>
      <category>cloudsecurity</category>
      <category>devsecops</category>
    </item>
    <item>
      <title>Why DevOps Is No Longer Enough: The Rise of DevSecOps</title>
      <dc:creator>Rahul Joshi</dc:creator>
      <pubDate>Mon, 09 Feb 2026 14:25:28 +0000</pubDate>
      <link>https://forem.com/17j/why-devops-is-no-longer-enough-the-rise-of-devsecops-true-k5n</link>
      <guid>https://forem.com/17j/why-devops-is-no-longer-enough-the-rise-of-devsecops-true-k5n</guid>
      <description>&lt;p&gt;For a long time, DevOps helped teams move fast.&lt;br&gt;
CI/CD pipelines, infrastructure as code, automation everywhere — releases became frequent and reliable.&lt;br&gt;
But while we optimized &lt;strong&gt;speed&lt;/strong&gt;, we quietly ignored &lt;strong&gt;security&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Attackers didn’t.
&lt;/h2&gt;
&lt;h2&gt;
  
  
  The Problem with Traditional DevOps
&lt;/h2&gt;

&lt;p&gt;DevOps pipelines are great at answering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How fast can we build?&lt;/li&gt;
&lt;li&gt;How quickly can we deploy?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are terrible at answering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this safe to run in production?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In many traditional DevOps setups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security checks happen after deployment&lt;/li&gt;
&lt;li&gt;Vulnerabilities are reported, not enforced&lt;/li&gt;
&lt;li&gt;Secrets accidentally reach source control&lt;/li&gt;
&lt;li&gt;Vulnerable dependencies go unnoticed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Speed without security is just faster failure.&lt;/strong&gt;
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Why Security Couldn’t Stay at the End
&lt;/h2&gt;

&lt;p&gt;Modern applications are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built on open-source dependencies&lt;/li&gt;
&lt;li&gt;Containerized and deployed on Kubernetes&lt;/li&gt;
&lt;li&gt;Internet-facing by default&lt;/li&gt;
&lt;li&gt;One leaked API key.&lt;/li&gt;
&lt;li&gt;One vulnerable library.&lt;/li&gt;
&lt;li&gt;One insecure container image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s enough to cause a breach.&lt;/p&gt;
&lt;h2&gt;
  
  
  This is why &lt;strong&gt;DevSecOps became necessary&lt;/strong&gt;.
&lt;/h2&gt;
&lt;h2&gt;
  
  
  DevSecOps in One Line
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DevSecOps means embedding security directly into the CI/CD pipeline and enforcing it automatically — not auditing it later.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Security becomes a &lt;strong&gt;gate&lt;/strong&gt;, not a report.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Actually Changes with DevSecOps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;With DevOps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security happens late&lt;/li&gt;
&lt;li&gt;Vulnerabilities become incidents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;With DevSecOps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security happens continuously&lt;/li&gt;
&lt;li&gt;Vulnerabilities become build failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That mindset shift changes everything.&lt;/p&gt;


&lt;h2&gt;
  
  
  A Real DevSecOps Pipeline (QA / Pre-Production)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Scope:&lt;/strong&gt; QA / Pre-Production CI + GitOps Pipeline&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fe3e08ji29d3jlod20d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fe3e08ji29d3jlod20d.png" alt="QA / Pre-Production CI + GitOps Pipeline" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Pipeline Overview
&lt;/h3&gt;

&lt;p&gt;This pipeline demonstrates how &lt;strong&gt;security is enforced at every stage&lt;/strong&gt; — from code commit to runtime validation — before changes are promoted to production.&lt;/p&gt;
&lt;h3&gt;
  
  
  Flow Summary
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Code Commit
↓
Pre-Build Security
- Secrets Scanning (TruffleHog)
- Linting &amp;amp; Unit Tests
- SAST (SonarQube)
↓
Dependency &amp;amp; Artifact Security
- SCA (Snyk)
- OWASP Dependency Check
- Nexus Artifact Publish
↓
Container Security
- Docker Build
- Dockle Image Scan
- Secure Image Push
↓
GitOps Deployment (QA)
- ArgoCD Sync
- Kubernetes Deployment
↓
Runtime Security
- OWASP ZAP (DAST)
- Feedback via Slack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Without this pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secrets could reach GitHub&lt;/li&gt;
&lt;li&gt;Vulnerable libraries could reach production&lt;/li&gt;
&lt;li&gt;Insecure container images could be deployed&lt;/li&gt;
&lt;li&gt;Security becomes firefighting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With DevSecOps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issues are caught early&lt;/li&gt;
&lt;li&gt;Fixes are cheaper&lt;/li&gt;
&lt;li&gt;Releases are predictable&lt;/li&gt;
&lt;li&gt;Teams ship with confidence&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Security Without Slowing Teams
&lt;/h2&gt;

&lt;p&gt;DevSecOps is not about adding more tools.&lt;br&gt;
It’s about &lt;strong&gt;placing the right checks at the right time&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pre-build checks stop bad code early&lt;/li&gt;
&lt;li&gt;Dependency scans prevent known CVEs&lt;/li&gt;
&lt;li&gt;Image scanning secures runtime environments&lt;/li&gt;
&lt;li&gt;GitOps ensures traceability and rollback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automation makes security &lt;strong&gt;faster than manual reviews&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Common DevSecOps Myths
&lt;/h2&gt;

&lt;p&gt;❌ &lt;em&gt;“DevSecOps slows delivery”&lt;/em&gt;&lt;br&gt;
✅ Automated checks are faster than last-minute fixes&lt;/p&gt;

&lt;p&gt;❌ &lt;em&gt;“Security is only the security team’s job”&lt;/em&gt;&lt;br&gt;
✅ Security is a shared responsibility&lt;/p&gt;

&lt;p&gt;❌ &lt;em&gt;“Tools alone make us secure”&lt;/em&gt;&lt;br&gt;
✅ Culture + automation + ownership matter&lt;/p&gt;
&lt;h2&gt;
  
  
  DevOps Isn’t Dead — It Evolved
&lt;/h2&gt;

&lt;p&gt;DevOps taught us speed.&lt;br&gt;
DevSecOps teaches us responsibility.&lt;/p&gt;

&lt;p&gt;Today, shipping fast is not enough.&lt;br&gt;
Shipping &lt;strong&gt;securely&lt;/strong&gt; is the real standard.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Security is no longer optional — it’s a delivery requirement.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  GitHub Repository
&lt;/h2&gt;

&lt;p&gt;The complete CI/CD and GitOps implementation shown in this pipeline is available here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/17J/GitOps-Three-Tier-Todo-App-CI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This repository contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jenkins CI pipeline&lt;/li&gt;
&lt;li&gt;Security tooling integration&lt;/li&gt;
&lt;li&gt;GitOps deployment via ArgoCD&lt;/li&gt;
&lt;li&gt;QA / Pre-Production DevSecOps workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;DevSecOps is not about fear.&lt;br&gt;
It’s about confidence.&lt;/p&gt;

&lt;p&gt;Confidence that what you deploy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has been tested&lt;/li&gt;
&lt;li&gt;Has been scanned&lt;/li&gt;
&lt;li&gt;Is secure by design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And in today’s cloud-native world, that confidence is no longer optional.&lt;/p&gt;

</description>
      <category>devsecops</category>
      <category>devops</category>
      <category>gitops</category>
    </item>
    <item>
      <title>Why Great Code Still Gets Hacked: A Guide to SAST, DAST, and SCA</title>
      <dc:creator>Rahul Joshi</dc:creator>
      <pubDate>Mon, 02 Feb 2026 12:47:24 +0000</pubDate>
      <link>https://forem.com/17j/why-great-code-still-gets-hacked-a-guide-to-sast-dast-and-sca-2fig</link>
      <guid>https://forem.com/17j/why-great-code-still-gets-hacked-a-guide-to-sast-dast-and-sca-2fig</guid>
      <description>&lt;h2&gt;
  
  
  Introduction: The Security Paradox
&lt;/h2&gt;

&lt;p&gt;You've written clean code. Your functions are elegant. Your architecture is solid. Yet, your application still has vulnerabilities. Why?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The truth is&lt;/strong&gt;: Writing good code isn't enough. Modern applications have three attack surfaces that many developers overlook:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your own code&lt;/strong&gt; (logic flaws, injection vulnerabilities)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your running application&lt;/strong&gt; (configuration issues, authentication bypasses)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your dependencies&lt;/strong&gt; (vulnerable third-party libraries)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where &lt;strong&gt;SAST&lt;/strong&gt;, &lt;strong&gt;DAST&lt;/strong&gt;, and &lt;strong&gt;SCA&lt;/strong&gt; come in. Think of them as your security trinity—each guarding a different frontier.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Security Testing Trinity
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔍 SAST (Static Application Security Testing)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Analyzes your source code without executing it&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Tools&lt;/strong&gt;: SonarQube, Semgrep&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Analogy&lt;/strong&gt;: A code review expert who reads every line looking for security issues&lt;/p&gt;
&lt;h3&gt;
  
  
  🎯 DAST (Dynamic Application Security Testing)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Tests your running application like a hacker would&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Tools&lt;/strong&gt;: OWASP ZAP, Nuclei&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Analogy&lt;/strong&gt;: An ethical hacker who attacks your live application to find weaknesses&lt;/p&gt;
&lt;h3&gt;
  
  
  📦 SCA (Software Composition Analysis)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Scans your dependencies for known vulnerabilities&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Tools&lt;/strong&gt;: OWASP Dependency Check, Snyk&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Analogy&lt;/strong&gt;: A supply chain inspector checking if any of your imported components are defective&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 1: SAST with SonarQube
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Why Your Code Needs Static Analysis
&lt;/h3&gt;

&lt;p&gt;Even experienced developers write vulnerable code. Here's why:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// This looks innocent, but it's vulnerable to SQL injection&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="nf"&gt;getUser&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"SELECT * FROM users WHERE username = '"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"'"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;execute&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A static analyzer catches this immediately and suggests a fix.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting Up SonarQube: Step-by-Step
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Step 1: Install SonarQube Using Docker
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pull and run SonarQube&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; sonarqube &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 9000:9000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;SONAR_ES_BOOTSTRAP_CHECKS_DISABLE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  sonarqube:latest

&lt;span class="c"&gt;# Wait for SonarQube to start (check logs)&lt;/span&gt;
docker logs &lt;span class="nt"&gt;-f&lt;/span&gt; sonarqube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;: Navigate to &lt;code&gt;http://localhost:9000&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Default credentials&lt;/strong&gt;: admin/admin (change immediately!)&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 2: Create Your First Project
&lt;/h4&gt;

&lt;p&gt;Once SonarQube is running, you'll see the project creation interface:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click "Create Project" → "Manually"&lt;/li&gt;
&lt;li&gt;Set a project key (e.g., &lt;code&gt;my-secure-app&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Generate a token for authentication&lt;/li&gt;
&lt;li&gt;Choose your build system (Maven, Gradle, npm, etc.)&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  Step 3: Scan a Java Project
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# For Maven projects&lt;/span&gt;
mvn clean verify sonar:sonar &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-Dsonar&lt;/span&gt;.projectKey&lt;span class="o"&gt;=&lt;/span&gt;my-secure-app &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-Dsonar&lt;/span&gt;.host.url&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:9000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-Dsonar&lt;/span&gt;.login&lt;span class="o"&gt;=&lt;/span&gt;your-token-here

&lt;span class="c"&gt;# For Gradle projects&lt;/span&gt;
./gradlew sonar &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-Dsonar&lt;/span&gt;.projectKey&lt;span class="o"&gt;=&lt;/span&gt;my-secure-app &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-Dsonar&lt;/span&gt;.host.url&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:9000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-Dsonar&lt;/span&gt;.login&lt;span class="o"&gt;=&lt;/span&gt;your-token-here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 4: Analyze the Results
&lt;/h4&gt;

&lt;p&gt;SonarQube categorizes issues by severity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Blocker&lt;/strong&gt;: SQL Injection, Command Injection (Fix immediately!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Critical&lt;/strong&gt;: XSS vulnerabilities, Hard-coded credentials&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Major&lt;/strong&gt;: Weak cryptography, Insecure randomness&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minor&lt;/strong&gt;: Code smells that could lead to vulnerabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Real-World Example: Fixing a Vulnerability
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SonarQube finding&lt;/strong&gt;: "SQL Injection vulnerability detected"&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ Vulnerable code&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;deleteUser&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;userId&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;sql&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"DELETE FROM users WHERE id = "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;userId&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;execute&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// ✅ Fixed code&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;deleteUser&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;userId&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;sql&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"DELETE FROM users WHERE id = ?"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;jdbcTemplate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;update&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;userId&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Pro Tips for SonarQube
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integrate with CI/CD&lt;/strong&gt;: Fail builds if security issues exceed a threshold&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Quality Gates&lt;/strong&gt;: Define minimum security standards&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable Security Hotspots&lt;/strong&gt;: Review areas that need manual validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up branch analysis&lt;/strong&gt;: Scan feature branches before merging
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example: GitLab CI integration&lt;/span&gt;
&lt;span class="na"&gt;sonarqube-check&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;maven:3.8-openjdk-11&lt;/span&gt;
  &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;mvn verify sonar:sonar -Dsonar.projectKey=$CI_PROJECT_NAME&lt;/span&gt;
  &lt;span class="na"&gt;only&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;merge_requests&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Part 2: DAST with OWASP ZAP
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Why Running Apps Need Dynamic Testing
&lt;/h3&gt;

&lt;p&gt;Static analysis can't catch everything. Consider these scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Configuration issues&lt;/strong&gt;: Exposed admin panels, default passwords&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication bypasses&lt;/strong&gt;: Session management flaws&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server misconfigurations&lt;/strong&gt;: Missing security headers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business logic flaws&lt;/strong&gt;: Password reset vulnerabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DAST tests your application as an attacker would—from the outside.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting Up OWASP ZAP: Step-by-Step
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Step 1: Set Up a Test Target
&lt;/h4&gt;

&lt;p&gt;For demonstration purposes, we'll use OWASP Juice Shop (a deliberately vulnerable application):&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run Juice Shop as our test target&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; juiceshop &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 bkimminich/juice-shop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 2: Install and Run OWASP ZAP
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Using Docker (recommended)&lt;/span&gt;
docker pull zaproxy/zap-stable

&lt;span class="c"&gt;# Run ZAP in daemon mode (headless)&lt;/span&gt;
docker run &lt;span class="nt"&gt;-u&lt;/span&gt; zap &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="nt"&gt;-i&lt;/span&gt; zaproxy/zap-stable &lt;span class="se"&gt;\&lt;/span&gt;
  zap.sh &lt;span class="nt"&gt;-daemon&lt;/span&gt; &lt;span class="nt"&gt;-host&lt;/span&gt; 0.0.0.0 &lt;span class="nt"&gt;-port&lt;/span&gt; 8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-config&lt;/span&gt; api.addrs.addr.name&lt;span class="o"&gt;=&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-config&lt;/span&gt; api.addrs.addr.regex&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-config&lt;/span&gt; api.key&lt;span class="o"&gt;=&lt;/span&gt;your-api-key-here

&lt;span class="c"&gt;# Or download the desktop version from https://www.zaproxy.org/download/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 3: Run a Baseline Scan (Quickest Way to Start)
&lt;/h4&gt;

&lt;p&gt;Create a scan script to automate the process:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class="c"&gt;# Get local IP so Docker container can reach the target&lt;/span&gt;
&lt;span class="nv"&gt;TARGET_IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $1}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;TARGET_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://&lt;/span&gt;&lt;span class="nv"&gt;$TARGET_IP&lt;/span&gt;&lt;span class="s2"&gt;:3000"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Starting Security Scan on: &lt;/span&gt;&lt;span class="nv"&gt;$TARGET_URL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Create a folder for reports&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; zap-reports

&lt;span class="c"&gt;# Run ZAP Baseline Scan&lt;/span&gt;
docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/zap-reports:/zap/wrk/:rw &lt;span class="se"&gt;\&lt;/span&gt;
  ghcr.io/zaproxy/zaproxy:stable zap-baseline.py &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-t&lt;/span&gt; &lt;span class="nv"&gt;$TARGET_URL&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-r&lt;/span&gt; juice_shop_report.html

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Scan Complete. Report generated in zap-reports/juice_shop_report.html"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 4: Understanding ZAP Scan Results
&lt;/h4&gt;

&lt;p&gt;When you run the scan, you'll see output categorized as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PASS&lt;/strong&gt;: Checks that didn't find vulnerabilities (good!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WARN-NEW&lt;/strong&gt;: New warnings detected&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FAIL-NEW&lt;/strong&gt;: Critical failures that need immediate attention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Common findings include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deprecated Feature Policy Header Set&lt;/strong&gt; [10063]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timestamp Disclosure - Unix&lt;/strong&gt; [10096]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Domain Misconfiguration&lt;/strong&gt; [10098]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern Web Application&lt;/strong&gt; [10109]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dangerous JS Functions&lt;/strong&gt; [10110]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insufficient Site Isolation Against Spectre Vulnerability&lt;/strong&gt; [90004]&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Step 5: Advanced Scan with API (Automation)
&lt;/h4&gt;

&lt;p&gt;For more control, use the ZAP API:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set your API key&lt;/span&gt;
&lt;span class="nv"&gt;ZAP_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-api-key-here"&lt;/span&gt;
&lt;span class="nv"&gt;TARGET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:3000"&lt;/span&gt;

&lt;span class="c"&gt;# Start a spider scan&lt;/span&gt;
curl &lt;span class="s2"&gt;"http://localhost:8080/JSON/spider/action/scan/?url=&lt;/span&gt;&lt;span class="nv"&gt;$TARGET&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;apikey=&lt;/span&gt;&lt;span class="nv"&gt;$ZAP_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Wait for spider to complete (poll status)&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; : &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nv"&gt;PROGRESS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"http://localhost:8080/JSON/spider/view/status/?apikey=&lt;/span&gt;&lt;span class="nv"&gt;$ZAP_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.status'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
  &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Spider progress: &lt;/span&gt;&lt;span class="nv"&gt;$PROGRESS&lt;/span&gt;&lt;span class="s2"&gt;%"&lt;/span&gt;
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PROGRESS&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"100"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;break
  sleep &lt;/span&gt;5
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;# Start active scan&lt;/span&gt;
&lt;span class="nv"&gt;SCAN_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"http://localhost:8080/JSON/ascan/action/scan/?url=&lt;/span&gt;&lt;span class="nv"&gt;$TARGET&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;apikey=&lt;/span&gt;&lt;span class="nv"&gt;$ZAP_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.scan'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Wait for active scan to complete&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; : &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nv"&gt;STATUS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"http://localhost:8080/JSON/ascan/view/status/?scanId=&lt;/span&gt;&lt;span class="nv"&gt;$SCAN_ID&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;apikey=&lt;/span&gt;&lt;span class="nv"&gt;$ZAP_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.status'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
  &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Active scan progress: &lt;/span&gt;&lt;span class="nv"&gt;$STATUS&lt;/span&gt;&lt;span class="s2"&gt;%"&lt;/span&gt;
  &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$STATUS&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"100"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;break
  sleep &lt;/span&gt;10
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;# Generate HTML report&lt;/span&gt;
curl &lt;span class="s2"&gt;"http://localhost:8080/OTHER/core/other/htmlreport/?apikey=&lt;/span&gt;&lt;span class="nv"&gt;$ZAP_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; zap_report.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Pro Tips for OWASP ZAP
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use ZAP in CI/CD&lt;/strong&gt;: Automate scans on every deployment before production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure scan policies&lt;/strong&gt;: Disable checks that cause false positives&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up proxy mode&lt;/strong&gt;: Manually browse your app through ZAP to build a better sitemap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use ZAP scripts&lt;/strong&gt;: Extend functionality with custom scripts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start with baseline scans&lt;/strong&gt;: Quick feedback, then move to full active scans&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Part 3: SCA with OWASP Dependency Check
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Why Your Dependencies Are Your Weakest Link
&lt;/h3&gt;

&lt;p&gt;Consider this: The average application has &lt;strong&gt;200+ dependencies&lt;/strong&gt;. Each one is a potential vulnerability.&lt;/p&gt;

&lt;p&gt;Famous incidents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Equifax breach (2017)&lt;/strong&gt;: Unpatched Apache Struts vulnerability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log4Shell (2021)&lt;/strong&gt;: Log4j vulnerability affected millions of applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You didn't write the vulnerable code, but you're still responsible for it.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting Up OWASP Dependency Check: Step-by-Step
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Step 1: Install OWASP Dependency Check
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Download the latest release&lt;/span&gt;
wget https://github.com/jeremylong/DependencyCheck/releases/download/v9.0.9/dependency-check-9.0.9-release.zip

&lt;span class="c"&gt;# Unzip&lt;/span&gt;
unzip dependency-check-9.0.9-release.zip

&lt;span class="c"&gt;# Add to PATH (optional)&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/dependency-check/bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 2: Get NVD API Key
&lt;/h4&gt;

&lt;p&gt;The National Vulnerability Database (NVD) requires an API key for faster, reliable scanning.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://nvd.nist.gov/developers/request-an-api-key" rel="noopener noreferrer"&gt;https://nvd.nist.gov/developers/request-an-api-key&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Fill out the form with your email&lt;/li&gt;
&lt;li&gt;Check your email for the API key&lt;/li&gt;
&lt;li&gt;Store it securely&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why you need it&lt;/strong&gt;: Without an API key, scans are rate-limited and take 10x longer.&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 3: Run Your First Scan
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Basic scan&lt;/span&gt;
dependency-check.sh &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="s2"&gt;"My Demo project"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scan&lt;/span&gt; ./target &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--out&lt;/span&gt; ./report &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--format&lt;/span&gt; HTML &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--format&lt;/span&gt; JSON &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--format&lt;/span&gt; XML &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--nvdApiKey&lt;/span&gt; 5b2b7320-exxf-4b1e-95xx-bdxxxxxxxxxx &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--failOnCVSS&lt;/span&gt; 7 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enableExperimental&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Key parameters explained&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--project&lt;/code&gt;: Name of your project (appears in reports)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--scan&lt;/code&gt;: Directory to scan (e.g., &lt;code&gt;./target&lt;/code&gt;, &lt;code&gt;./node_modules&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--out&lt;/code&gt;: Where to save reports&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--format&lt;/code&gt;: Output format (HTML for viewing, JSON for CI/CD)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--nvdApiKey&lt;/code&gt;: Your NVD API key (critical for performance)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--failOnCVSS 7&lt;/code&gt;: Fail the build if vulnerabilities with CVSS score ≥ 7 are found&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--enableExperimental&lt;/code&gt;: Enable experimental analyzers for better coverage&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Step 4: Scan Different Project Types
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;For Java/Maven Projects:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dependency-check.sh &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="s2"&gt;"My Java App"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scan&lt;/span&gt; ./target &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--format&lt;/span&gt; HTML &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--nvdApiKey&lt;/span&gt; YOUR_NVD_API_KEY_HERE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;For Node.js Projects:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Scan node_modules directory&lt;/span&gt;
dependency-check.sh &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--project&lt;/span&gt; &lt;span class="s2"&gt;"My Node App"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scan&lt;/span&gt; ./node_modules &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--format&lt;/span&gt; HTML &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--nvdApiKey&lt;/span&gt; YOUR_NVD_API_KEY_HERE

&lt;span class="c"&gt;# Or use npm audit (built-in)&lt;/span&gt;
npm audit

&lt;span class="c"&gt;# Generate detailed report&lt;/span&gt;
npm audit &lt;span class="nt"&gt;--json&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; npm-audit-report.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 5: Analyze the Report
&lt;/h4&gt;

&lt;p&gt;The report shows vulnerabilities with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVE ID&lt;/strong&gt;: Unique identifier (e.g., CVE-2023-12345)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVSS Score&lt;/strong&gt;: Severity (0-10, where 7+ is critical)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: What the vulnerability does&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recommendation&lt;/strong&gt;: How to fix it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example vulnerability&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CVE-2023-12345 | CVSS: 9.8 (Critical)
Component: jackson-databind 2.9.8
Description: Deserialization vulnerability allows remote code execution
Recommendation: Update to version 2.15.0 or higher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Real-World Example: Fixing a Dependency Vulnerability
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Finding&lt;/strong&gt;: Log4j vulnerability (CVE-2021-44228)&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- ❌ Vulnerable dependency in pom.xml --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.logging.log4j&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;log4j-core&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;2.14.1&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;

&lt;span class="c"&gt;&amp;lt;!-- ✅ Fixed: Updated to patched version --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.logging.log4j&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;log4j-core&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;2.17.1&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For Node.js:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Find vulnerable packages&lt;/span&gt;
npm audit

&lt;span class="c"&gt;# Auto-fix (when possible)&lt;/span&gt;
npm audit fix

&lt;span class="c"&gt;# Force update breaking changes if necessary&lt;/span&gt;
npm audit fix &lt;span class="nt"&gt;--force&lt;/span&gt;

&lt;span class="c"&gt;# Or update specific package&lt;/span&gt;
npm update log4js@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Pro Tips for OWASP Dependency Check
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Always use the NVD API key&lt;/strong&gt;: Scans are 10x faster&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set a CVSS threshold&lt;/strong&gt;: Fail builds on critical vulnerabilities (7+)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suppress false positives&lt;/strong&gt;: Create a suppression file for known safe cases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule regular scans&lt;/strong&gt;: Run daily or with every build&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update regularly&lt;/strong&gt;: Keep the vulnerability database fresh&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use multiple formats&lt;/strong&gt;: HTML for viewing, JSON for automation&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  Common Pitfalls and How to Avoid Them
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Pitfall 1: "Too many false positives!"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure your tools properly&lt;/li&gt;
&lt;li&gt;Use suppression files for known safe cases&lt;/li&gt;
&lt;li&gt;Don't ignore everything - triage issues properly&lt;/li&gt;
&lt;li&gt;Start with high-severity issues first&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Pitfall 2: "Scans take too long!"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use incremental analysis (scan only changed code)&lt;/li&gt;
&lt;li&gt;Run full scans nightly, quick scans on every commit&lt;/li&gt;
&lt;li&gt;Use the NVD API key for dependency checks&lt;/li&gt;
&lt;li&gt;Cache dependency databases&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Pitfall 3: "Developers ignore security reports"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make security visible (dashboards, Slack notifications)&lt;/li&gt;
&lt;li&gt;Fail builds on critical issues&lt;/li&gt;
&lt;li&gt;Provide clear remediation guidance&lt;/li&gt;
&lt;li&gt;Train developers on common vulnerabilities&lt;/li&gt;
&lt;li&gt;Gamify security fixes (track improvements)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Pitfall 4: "We fixed the code but still got hacked"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use all three tools - they complement each other&lt;/li&gt;
&lt;li&gt;Test in production-like environments&lt;/li&gt;
&lt;li&gt;Consider manual penetration testing for critical apps&lt;/li&gt;
&lt;li&gt;Regularly update your tools and databases&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Conclusion: Security is a Journey, Not a Destination
&lt;/h2&gt;

&lt;p&gt;You can't prevent every breach, but you can make your application a much harder target. By implementing SAST, DAST, and SCA:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You catch &lt;strong&gt;94% of vulnerabilities&lt;/strong&gt; before production&lt;/li&gt;
&lt;li&gt;You reduce &lt;strong&gt;incident response time&lt;/strong&gt; from months to days&lt;/li&gt;
&lt;li&gt;You build a &lt;strong&gt;security-first culture&lt;/strong&gt; in your team&lt;/li&gt;
&lt;li&gt;You gain &lt;strong&gt;peace of mind&lt;/strong&gt; knowing your code is continuously monitored&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Remember&lt;/strong&gt;: The best time to start was yesterday. The second best time is now.&lt;/p&gt;


&lt;h2&gt;
  
  
  Additional Resources
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Official Documentation&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.sonarqube.org" rel="noopener noreferrer"&gt;SonarQube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zaproxy.org/docs" rel="noopener noreferrer"&gt;OWASP ZAP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jeremylong.github.io/DependencyCheck" rel="noopener noreferrer"&gt;Dependency Check&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nvd.nist.gov/developers" rel="noopener noreferrer"&gt;NVD API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practice Targets&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop" rel="noopener noreferrer"&gt;OWASP Juice Shop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/digininja/DVWA" rel="noopener noreferrer"&gt;DVWA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/WebGoat/WebGoat" rel="noopener noreferrer"&gt;WebGoat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/juice-shop" rel="noopener noreferrer"&gt;
        juice-shop
      &lt;/a&gt; / &lt;a href="https://github.com/juice-shop/juice-shop" rel="noopener noreferrer"&gt;
        juice-shop
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      OWASP Juice Shop: Probably the most modern and sophisticated insecure web application
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/juice-shop/juice-shop/master/frontend/src/assets/public/images/JuiceShop_Logo_100px.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fjuice-shop%2Fjuice-shop%2Fmaster%2Ffrontend%2Fsrc%2Fassets%2Fpublic%2Fimages%2FJuiceShop_Logo_100px.png" alt="Juice Shop Logo"&gt;&lt;/a&gt; OWASP Juice Shop&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://owasp.org/projects/#sec-flagships" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a4d9b6a13bd97dbe23c3f56d39423165de1f40fc3e850500be7e80e0e007e56b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6f776173702d666c61677368697025323070726f6a6563742d3438413634362e737667" alt="OWASP Flagship"&gt;&lt;/a&gt;
&lt;a href="https://github.com/juice-shop/juice-shop/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7426eabb0342adad0388a46003484973c3f0f96b0e66a5c94c0fae908368685d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6a756963652d73686f702f6a756963652d73686f702e737667" alt="GitHub release"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/owasp_juiceshop" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b130c82fc62abf6a1c9ac71134b91be1b9c73f409f2bceb10906170e260e7645/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6f776173705f6a7569636573686f702e7376673f7374796c653d736f6369616c266c6162656c3d466f6c6c6f77" alt="Twitter Follow"&gt;&lt;/a&gt;
&lt;a href="https://reddit.com/r/owasp_juiceshop" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c5542f15df742e62c98595f12a873acd890e285981d09e913702de138bd6e27e/68747470733a2f2f696d672e736869656c64732e696f2f7265646469742f7375627265646469742d73756273637269626572732f6f776173705f6a7569636573686f703f7374796c653d736f6369616c" alt="Subreddit subscribers"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/juice-shop/juice-shop/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/juice-shop/juice-shop/actions/workflows/ci.yml/badge.svg?branch=develop" alt="CI/CD Pipeline"&gt;&lt;/a&gt;
&lt;a href="https://github.com/juice-shop/juice-shop/actions/workflows/release.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/juice-shop/juice-shop/actions/workflows/release.yml/badge.svg" alt="Release Pipeline"&gt;&lt;/a&gt;
&lt;a href="https://coveralls.io/github/juice-shop/juice-shop?branch=develop" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/36ac52383034300173b784da90ac32ea7f845be0df822642e1053f222affe150/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6a756963652d73686f702f6a756963652d73686f702f62616467652e7376673f6272616e63683d646576656c6f70" alt="Coverage Status"&gt;&lt;/a&gt;
&lt;a href="https://dashboard.cypress.io/projects/3hrkhu/runs" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a7bee59aff087da48a860443c91b55b734a3665d5558f8be650a968dfa752d47/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f64617368626f6172642e637970726573732e696f2f62616467652f73696d706c652f3368726b68752f646576656c6f70267374796c653d666c6174266c6f676f3d63797072657373" alt="Cypress tests"&gt;&lt;/a&gt;
&lt;a href="https://www.bestpractices.dev/projects/223" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2e5de7e765300a9e24b31f30a4a96baafcd774633754cc66590671e27c6d81a3/68747470733a2f2f7777772e626573747072616374696365732e6465762f70726f6a656374732f3232332f6261646765" alt="OpenSSF Best Practices"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b0f34811772cbd89409a8331e0dadcfa17912d9e2e853c2a60d7a2be9fa04aaf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a756963652d73686f702f6a756963652d73686f702e7376673f6c6162656c3d476974487562253230254532253938253835267374796c653d666c6174"&gt;&lt;img src="https://camo.githubusercontent.com/b0f34811772cbd89409a8331e0dadcfa17912d9e2e853c2a60d7a2be9fa04aaf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a756963652d73686f702f6a756963652d73686f702e7376673f6c6162656c3d476974487562253230254532253938253835267374796c653d666c6174" alt="GitHub stars"&gt;&lt;/a&gt;
&lt;a href="https://github.com/juice-shop/juice-shop/CODE_OF_CONDUCT.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/da2f2650834e4fe0a66443c55f7a8162de97f14ca160a34eab7dba1139bc2372/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f574153502d436f64655f6f665f436f6e647563742d626c7565" alt="Static Badge"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/dschadow/status/706781693504589824" rel="nofollow noopener noreferrer"&gt;The most trustworthy online shop out there.&lt;/a&gt;
(&lt;a href="https://github.com/dschadow" rel="noopener noreferrer"&gt;@dschadow&lt;/a&gt;) —
&lt;a href="https://twitter.com/shehackspurple/status/907335357775085568" rel="nofollow noopener noreferrer"&gt;The best juice shop on the whole internet!&lt;/a&gt;
(&lt;a href="https://twitter.com/shehackspurple" rel="nofollow noopener noreferrer"&gt;@shehackspurple&lt;/a&gt;) —
&lt;a href="https://youtu.be/TXAztSpYpvE?t=26m35s" rel="nofollow noopener noreferrer"&gt;Actually the most bug-free vulnerable application in existence!&lt;/a&gt;
(&lt;a href="https://twitter.com/vanderaj" rel="nofollow noopener noreferrer"&gt;@vanderaj&lt;/a&gt;) —
&lt;a href="https://twitter.com/kramse/status/1073168529405472768" rel="nofollow noopener noreferrer"&gt;First you 😂😂then you 😢&lt;/a&gt;
(&lt;a href="https://twitter.com/kramse" rel="nofollow noopener noreferrer"&gt;@kramse&lt;/a&gt;) —
&lt;a href="https://twitter.com/coderPatros/status/1199268774626488320" rel="nofollow noopener noreferrer"&gt;But this doesn't have anything to do with juice.&lt;/a&gt;
(&lt;a href="https://twitter.com/coderPatros" rel="nofollow noopener noreferrer"&gt;@coderPatros' wife&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;OWASP Juice Shop is probably the most modern and sophisticated insecure web application! It can be used in security
trainings, awareness demos, CTFs and as a guinea pig for security tools! Juice Shop encompasses vulnerabilities from the
entire
&lt;a href="https://owasp.org/www-project-top-ten" rel="nofollow noopener noreferrer"&gt;OWASP Top Ten&lt;/a&gt; along with many other security flaws found in real-world
applications!&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/juice-shop/juice-shop/screenshots/slideshow.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fjuice-shop%2Fjuice-shop%2Fscreenshots%2Fslideshow.gif" alt="Juice Shop Screenshot Slideshow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For a detailed introduction, full list of features and architecture overview please visit the official project page
&lt;a href="https://owasp-juice.shop" rel="nofollow noopener noreferrer"&gt;https://owasp-juice.shop&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/juice-shop/juice-shop#setup" rel="noopener noreferrer"&gt;Setup&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#from-sources" rel="noopener noreferrer"&gt;From Sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#packaged-distributions" rel="noopener noreferrer"&gt;Packaged Distributions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#docker-container" rel="noopener noreferrer"&gt;Docker Container&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#vagrant" rel="noopener noreferrer"&gt;Vagrant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#demo" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/juice-shop/juice-shop#documentation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#nodejs-version-compatibility" rel="noopener noreferrer"&gt;Node.js version compatibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#troubleshooting" rel="noopener noreferrer"&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#official-companion-guide" rel="noopener noreferrer"&gt;Official companion guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juice-shop/juice-shop#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/juice-shop/juice-shop" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  Let's Build Secure Software Together
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;💬 &lt;strong&gt;What's your biggest security challenge?&lt;/strong&gt; Share in the comments below, and let's build more secure applications together.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Got questions about implementing these tools? Drop them in the comments—I'll respond to every single one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Found this helpful?&lt;/strong&gt; Share it with your team and help spread security awareness!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Connect with me:&lt;/em&gt;&lt;br&gt;&lt;br&gt;
📧 &lt;a href="mailto:17rahuljoshi@gmail.com"&gt;Email me&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>java</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
