<?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>DEV Community: Kazuma Koga</title>
    <description>The latest articles on DEV Community by Kazuma Koga (@kazu11max17).</description>
    <link>https://dev.to/kazu11max17</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%2F3798705%2Ffe85a949-55ab-49f0-bcf8-1927102dc54e.png</url>
      <title>DEV Community: Kazuma Koga</title>
      <link>https://dev.to/kazu11max17</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kazu11max17"/>
    <language>en</language>
    <item>
      <title>Are You Still Checking Binary Hardening by Hand? I Built bincheck in Rust</title>
      <dc:creator>Kazuma Koga</dc:creator>
      <pubDate>Tue, 21 Apr 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/kazu11max17/are-you-still-checking-binary-hardening-by-hand-i-built-bincheck-in-rust-2lnn</link>
      <guid>https://dev.to/kazu11max17/are-you-still-checking-binary-hardening-by-hand-i-built-bincheck-in-rust-2lnn</guid>
      <description>&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;I've worked in embedded development and in security tooling. There was a gap where those two worlds met.&lt;/p&gt;

&lt;p&gt;Binary hardening checks — RELRO, PIE, stack protection — are things embedded developers naturally think about. But there's no tool to automate them in CI (at least none I could find). SCA tools check your source code and licenses, but they don't look at the hardening state of the binary you actually ship.&lt;/p&gt;

&lt;p&gt;I thought there was demand for something that filled that gap, so I built it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What are hardening flags?
&lt;/h2&gt;

&lt;p&gt;Hardening flags are security features applied by the compiler or linker at build time. The five main ones for ELF binaries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RELRO (Relocation Read-Only)&lt;/strong&gt;: Makes the GOT read-only. Full RELRO is ideal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack Canary&lt;/strong&gt;: A canary value placed on the stack to detect buffer overflows. If it's been tampered with before the function returns, the process terminates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NX (No eXecute)&lt;/strong&gt;: Marks the stack and heap as non-executable. Basic defense against shellcode injection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PIE (Position Independent Executable)&lt;/strong&gt;: Required for ASLR (address space layout randomization) to work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fortify Source&lt;/strong&gt;: When built with &lt;code&gt;_FORTIFY_SOURCE&lt;/code&gt;, dangerous functions like &lt;code&gt;strcpy&lt;/code&gt; are replaced with safer versions that detect buffer overflows at runtime. bincheck detects this by inspecting fortified symbols in the binary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For PE binaries (Windows EXE/DLL), the equivalent concepts are DEP, CFG, SafeSEH, and ASLR.&lt;/p&gt;

&lt;p&gt;Missing any of these doesn't automatically mean a vulnerability, but it lowers the bar for attackers. IoT devices and firmware tend to have long lifespans with infrequent updates — the cost of shipping without hardening is higher than in typical software.&lt;/p&gt;




&lt;h2&gt;
  
  
  What bincheck does
&lt;/h2&gt;

&lt;p&gt;bincheck is a CLI tool that checks hardening flags in ELF, PE, and Mach-O binaries. Written in Rust, using the goblin crate for binary parsing.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. SARIF output for GitHub Code Scanning
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bincheck firmware.elf &lt;span class="nt"&gt;--format&lt;/span&gt; sarif &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; results.sarif
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upload the SARIF output to GitHub Code Scanning and you get hardening results in the Security tab. You can track changes per PR.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;--strict&lt;/code&gt; as a CI gate
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bincheck firmware.elf &lt;span class="nt"&gt;--strict&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt;  &lt;span class="c"&gt;# returns 1 if any hardening flag is missing&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With &lt;code&gt;--strict&lt;/code&gt;, bincheck exits with code 1 if any flag is absent. Drop it into your CI pipeline as a gate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
cargo &lt;span class="nb"&gt;install &lt;/span&gt;bincheck

&lt;span class="c"&gt;# Check an ELF binary (table output)&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;bincheck ./firmware.elf

Binary: ./firmware.elf &lt;span class="o"&gt;(&lt;/span&gt;ELF, x86_64&lt;span class="o"&gt;)&lt;/span&gt;
┌─────────────────┬──────────┬───────────────────────────────────────┐
│ Check           │ Status   │ Detail                                │
├─────────────────┼──────────┼───────────────────────────────────────┤
│ RELRO           │ FULL     │                                       │
│ Stack Canary    │ ENABLED  │ found __stack_chk_fail &lt;span class="k"&gt;in&lt;/span&gt; .symtab     │
│ NX              │ ENABLED  │                                       │
│ PIE             │ ENABLED  │                                       │
│ Fortify Source  │ DISABLED │ no fortified symbols found            │
│ RPATH           │ NONE     │                                       │
│ RUNPATH         │ NONE     │                                       │
└─────────────────┴──────────┴───────────────────────────────────────┘

&lt;span class="c"&gt;# JSON output&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;bincheck ./firmware.elf &lt;span class="nt"&gt;--format&lt;/span&gt; json

&lt;span class="c"&gt;# SARIF output (for GitHub Code Scanning)&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;bincheck ./firmware.elf &lt;span class="nt"&gt;--format&lt;/span&gt; sarif &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; results.sarif

&lt;span class="c"&gt;# CI gate (exit 1 on missing hardening)&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;bincheck ./firmware.elf &lt;span class="nt"&gt;--strict&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"OK"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"FAILED"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  GitHub Actions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Check binary hardening&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kazu11max17/bincheck@v0.2.0&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;files&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;./build/firmware.elf&lt;/span&gt;
    &lt;span class="na"&gt;strict&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sarif&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Upload SARIF&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github/codeql-action/upload-sarif@v3&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;sarif_file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bincheck-results.sarif&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: the &lt;code&gt;upload-sarif&lt;/code&gt; step requires &lt;code&gt;permissions: security-events: write&lt;/code&gt; in your workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;bincheck is available here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;crates.io: &lt;a href="https://crates.io/crates/bincheck" rel="noopener noreferrer"&gt;https://crates.io/crates/bincheck&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/kazu11max17/bincheck" rel="noopener noreferrer"&gt;https://github.com/kazu11max17/bincheck&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're using it on embedded Linux, firmware, or anything cross-compiled — feedback and PRs are welcome.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>security</category>
      <category>appsec</category>
      <category>devops</category>
    </item>
    <item>
      <title>DevSecOps Without the Pain: The Missing Piece Most Teams Overlook</title>
      <dc:creator>Kazuma Koga</dc:creator>
      <pubDate>Thu, 12 Mar 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/kazu11max17/devsecops-without-the-pain-the-missing-piece-most-teams-overlook-12ec</link>
      <guid>https://dev.to/kazu11max17/devsecops-without-the-pain-the-missing-piece-most-teams-overlook-12ec</guid>
      <description>&lt;h1&gt;
  
  
  Introduction: Did Adding “Sec” to DevOps Actually Work?
&lt;/h1&gt;

&lt;p&gt;“Let’s integrate security into DevOps and call it DevSecOps.”&lt;br&gt;&lt;br&gt;
“Let’s shift security left and start checking earlier in development.”&lt;/p&gt;

&lt;p&gt;These ideas sound simple in theory. But in reality, what often happens inside organizations looks more like a &lt;strong&gt;cold war between development and security teams&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developers:&lt;/strong&gt; “Security checks slow down our releases. And half the findings are false positives.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security teams:&lt;/strong&gt; “Developers underestimate risks. Shipping software with vulnerabilities is unacceptable.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my career, I’ve supported many organizations transitioning to DevSecOps as a delivery engineer at a global security vendor.&lt;br&gt;&lt;br&gt;
I’ve worked with teams across a wide range of environments—from web services to embedded systems.&lt;/p&gt;

&lt;p&gt;One pattern I’ve consistently seen is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Teams adopt the tools and build the pipeline structure, but the &lt;strong&gt;culture needed to make DevSecOps work never catches up&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article, instead of explaining tool configurations, I’d like to share a &lt;strong&gt;practical, field-level perspective on what actually makes DevSecOps succeed&lt;/strong&gt;, based on real-world experience.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. Dev, Ops, and Sec: Different Goals, Same Pipeline
&lt;/h1&gt;

&lt;p&gt;DevSecOps is supposed to integrate traditionally separate roles.&lt;br&gt;&lt;br&gt;
But in practice, each team often still optimizes for completely different KPIs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dev (Development)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Wants to build features, change things, and release quickly.&lt;br&gt;&lt;br&gt;
&lt;em&gt;KPI: Release frequency, lead time&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ops (Operations)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Wants stability and predictability. Ideally nothing breaks at 2 AM.&lt;br&gt;&lt;br&gt;
&lt;em&gt;KPI: Uptime, MTTR&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sec (Security)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Wants to eliminate risk and verify everything before release.&lt;br&gt;&lt;br&gt;
&lt;em&gt;KPI: Vulnerability counts, compliance&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security teams historically acted as &lt;strong&gt;gatekeepers&lt;/strong&gt;, often blocking releases right before deployment.&lt;br&gt;&lt;br&gt;
When security becomes part of the development pipeline, it’s easy for them to be perceived as &lt;strong&gt;“the brake pedal.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you introduce CI/CD tools while this tension still exists, automation doesn’t solve the conflict—it simply &lt;strong&gt;accelerates it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Successful teams do something different first.&lt;br&gt;&lt;br&gt;
Before tools, they establish a &lt;strong&gt;shared language&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where should we balance &lt;strong&gt;speed of delivery&lt;/strong&gt; and &lt;strong&gt;acceptable risk&lt;/strong&gt; for our product?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Without that agreement, DevSecOps pipelines tend to become battlegrounds rather than collaboration systems.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Abandon the “One-Size-Fits-All” DevSecOps Model
&lt;/h1&gt;

&lt;p&gt;Many teams assume there’s a standard DevSecOps template they should follow.&lt;/p&gt;

&lt;p&gt;In reality, &lt;strong&gt;security priorities depend heavily on the nature of the product&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web / Cloud-Native Applications
&lt;/h2&gt;

&lt;p&gt;In web services, a large portion of the codebase often comes from open-source dependencies.&lt;/p&gt;

&lt;p&gt;Because of this, &lt;strong&gt;SCA (Software Composition Analysis)&lt;/strong&gt; tools are extremely valuable for detecting vulnerabilities in third-party libraries.&lt;/p&gt;

&lt;p&gt;Another important factor is that web services can usually be patched and redeployed quickly.&lt;br&gt;&lt;br&gt;
This makes a culture of &lt;strong&gt;“detect early and fix fast”&lt;/strong&gt; more practical than &lt;strong&gt;“block everything until it’s perfect.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SAST tools are still useful for catching issues like XSS or injection vulnerabilities, but many of these problems are also caught through code reviews.&lt;/p&gt;




&lt;h2&gt;
  
  
  Embedded Systems and IoT (C/C++)
&lt;/h2&gt;

&lt;p&gt;In contrast, the manufacturing environments I’ve worked with operate under very different constraints.&lt;/p&gt;

&lt;p&gt;Firmware written in C or C++ is much harder to update after release.&lt;br&gt;&lt;br&gt;
Even when OTA updates exist, they carry significant operational risks.&lt;/p&gt;

&lt;p&gt;Just think about automotive recalls.&lt;/p&gt;

&lt;p&gt;In these environments, &lt;strong&gt;building security into the product before release becomes critical&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Here, priorities often shift toward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SAST (Static Analysis)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Memory safety&lt;/li&gt;
&lt;li&gt;Preventing low-level vulnerabilities early in development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Speed matters less than &lt;strong&gt;engineering quality into the product upfront&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of copying the practices of companies like Google or Netflix, teams need to ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What level of risk is acceptable for &lt;em&gt;our&lt;/em&gt; product?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That said, creating completely custom internal rules can also be dangerous.&lt;br&gt;&lt;br&gt;
A good starting point is usually to &lt;strong&gt;adopt vendor or industry best practices first&lt;/strong&gt;, and then adapt them to your environment.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. The Missing Piece: The “Translator”
&lt;/h1&gt;

&lt;p&gt;Sometimes organizations already have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expensive security tools
&lt;/li&gt;
&lt;li&gt;Skilled engineers
&lt;/li&gt;
&lt;li&gt;Automated pipelines
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And yet DevSecOps still doesn’t work.&lt;/p&gt;

&lt;p&gt;One common reason is the absence of a &lt;strong&gt;translator&lt;/strong&gt; between security and development.&lt;/p&gt;

&lt;p&gt;Someone needs to translate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security reports filled with technical terminology
→ into &lt;strong&gt;actionable development tasks&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And also translate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Development’s release pressure and deadlines
→ into &lt;strong&gt;realistic security triage and prioritization&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This role requires engineers who can move beyond narrow specialization.&lt;/p&gt;

&lt;p&gt;When teams operate in silos—&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“I’m in security, I don’t know how to fix the code.”&lt;/li&gt;
&lt;li&gt;“I’m a developer, security isn’t my responsibility.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;—the DevSecOps pipeline eventually stalls.&lt;/p&gt;

&lt;p&gt;In recent years, developers are increasingly expected to understand security principles.&lt;br&gt;&lt;br&gt;
At the same time, security engineers are being asked to understand code and development workflows more deeply.&lt;/p&gt;

&lt;p&gt;What modern engineering teams need isn’t just deep specialization.&lt;/p&gt;

&lt;p&gt;They also need people willing to &lt;strong&gt;step into adjacent domains and help bridge the gaps.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes the most valuable skill is simply &lt;strong&gt;being curious—and a little bit nosy—about problems outside your official role.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  4. The Real Meaning of “Shift Left”
&lt;/h1&gt;

&lt;p&gt;“Shift Left” is often misunderstood.&lt;/p&gt;

&lt;p&gt;It does &lt;strong&gt;not&lt;/strong&gt; mean pushing security work onto developers.&lt;/p&gt;

&lt;p&gt;A better interpretation is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make security issues &lt;strong&gt;naturally visible earlier in the development process&lt;/strong&gt;, when fixing them is still cheap.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ul&gt;
&lt;li&gt;Seeing a potential buffer overflow while writing code in the IDE&lt;/li&gt;
&lt;li&gt;Discovering a license issue in a dependency the moment a pull request is opened&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If shift-left doesn’t happen, especially in manufacturing environments, the consequences can be severe.&lt;/p&gt;

&lt;p&gt;Production schedules are fixed.&lt;br&gt;&lt;br&gt;
Parts have already been procured.&lt;br&gt;&lt;br&gt;
Release dates are announced.&lt;/p&gt;

&lt;p&gt;Security evaluation then happens at the last minute.&lt;br&gt;&lt;br&gt;
If vulnerabilities are discovered, there’s often no time left to fix and retest.&lt;/p&gt;

&lt;p&gt;In those situations, it’s easy to imagine security being quietly deprioritized.&lt;/p&gt;

&lt;p&gt;Developers don’t need to become security experts.&lt;/p&gt;

&lt;p&gt;The real goal of DevSecOps is to create an environment where:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Security quality emerges naturally as part of the development workflow.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Closing Thoughts
&lt;/h1&gt;

&lt;p&gt;DevSecOps isn’t something you simply &lt;strong&gt;install&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It’s something you &lt;strong&gt;cultivate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Adopting new tools is valuable, but the more important step is having conversations inside your team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why is this security check necessary?&lt;/li&gt;
&lt;li&gt;Is it creating unnecessary friction for developers?&lt;/li&gt;
&lt;li&gt;What level of risk are we willing to accept?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DevSecOps starts not with pipelines, but with &lt;strong&gt;shared understanding&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>devsecops</category>
      <category>security</category>
      <category>devops</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
