<?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: Marcus Morris</title>
    <description>The latest articles on DEV Community by Marcus Morris (@ceaz).</description>
    <link>https://dev.to/ceaz</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3973303%2F5df49f90-96ea-48d3-a87c-13f8cf4774fc.png</url>
      <title>DEV Community: Marcus Morris</title>
      <link>https://dev.to/ceaz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ceaz"/>
    <language>en</language>
    <item>
      <title>Where does build integrity begin?</title>
      <dc:creator>Marcus Morris</dc:creator>
      <pubDate>Thu, 20 Aug 2026 00:00:42 +0000</pubDate>
      <link>https://dev.to/ceaz/where-does-build-integrity-begin-3mal</link>
      <guid>https://dev.to/ceaz/where-does-build-integrity-begin-3mal</guid>
      <description>&lt;p&gt;Software Product companies have to choose what materials to build their software with. Pypi, NuGet, Node, Crates, so many options abound.&lt;/p&gt;




&lt;p&gt;With each decision it is wise to integrate build integrity in the very beginning.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  What is build integrity?
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Build integrity is the assurance that the software assembled and delivered to production is the software the team intended to build.&lt;br&gt;
We do it everyday with physical products...&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When we go shopping for groceries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shopping for clothing online or in-person.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Decide on build materials such as paint, wood or pipe for a DIY project.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oftentimes due to familiarity and success with a product in the past we buy or use these materials without a second thought.&lt;/p&gt;

&lt;p&gt;Until....&lt;/p&gt;

&lt;p&gt;We are hit with a recall notice online or in the news about an item we purchased!!&lt;/p&gt;




&lt;p&gt;For Software Security this is just as important. Malware and vulnerabilities can drastically damage a company overnight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insightful Statistics on this issue:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;454,648 new malicious packages last year found.&lt;/li&gt;
&lt;li&gt;56% of recorded malicious packages were classified as “repository abuse”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Source: Sonatype SSSC Report&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answers to the following questions should be verified before a product is downloaded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where did this product come from?&lt;/li&gt;
&lt;li&gt;Has the source or repo established a reputation of quality products?&lt;/li&gt;
&lt;li&gt;What reasons do we have to trust the manufacture of this product?&lt;/li&gt;
&lt;li&gt;Can we cryptographically prove our reasons for trust?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenSSF Scorecard and manual repository research help answer these questions.&lt;/p&gt;

&lt;p&gt;The hackers are really not the biggest threat, it is the quality of the product that we build with that is the greatest threat vector.&lt;/p&gt;

&lt;p&gt;How does your team currently verify build integrity?&lt;/p&gt;

</description>
      <category>containers</category>
      <category>cybersecurity</category>
      <category>softwareengineering</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Go-go Gadget...OSV!</title>
      <dc:creator>Marcus Morris</dc:creator>
      <pubDate>Tue, 07 Jul 2026 15:46:23 +0000</pubDate>
      <link>https://dev.to/ceaz/go-go-gadget-2oc6</link>
      <guid>https://dev.to/ceaz/go-go-gadget-2oc6</guid>
      <description>&lt;p&gt;Are you looking for vulnerability intel that standard scanners skip?&lt;/p&gt;

&lt;p&gt;OSV-Scanner is an awesome SCA tool for unearthing vulnerabilities in open-source dependencies, offering you a unique lens on your supply chain.&lt;/p&gt;




&lt;p&gt;OSV-scanner has nice flexibility in how you consume the data:&lt;/p&gt;

&lt;p&gt;Served locally via port 8000: Clean view of data in a web UI interface&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;osv-scanner scan image &lt;span class="nt"&gt;--serve&lt;/span&gt; &amp;lt;image&amp;gt;/latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Standard terminal output: Great for a quick test or audit, can be piped into other tools/reports.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;osv-scanner scan image &amp;lt;image&amp;gt;/latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Either way, it's a welcomed addition to any supply chain security engineers tool-belt. &lt;/p&gt;

&lt;p&gt;Just say Go-go Gadget OSV! 🕵️&lt;/p&gt;

</description>
      <category>vulnerabilities</category>
      <category>cybersecurity</category>
      <category>supplychainsecurity</category>
      <category>containers</category>
    </item>
    <item>
      <title>A Simple Way to Reduce the Grype Noise</title>
      <dc:creator>Marcus Morris</dc:creator>
      <pubDate>Tue, 30 Jun 2026 18:56:02 +0000</pubDate>
      <link>https://dev.to/ceaz/a-simple-way-to-reduce-the-grype-noise-5gbm</link>
      <guid>https://dev.to/ceaz/a-simple-way-to-reduce-the-grype-noise-5gbm</guid>
      <description>&lt;p&gt;Security Team: “I have a major Grype...with what I Syfted out of your provided image."&lt;/p&gt;

&lt;p&gt;Developer: “Well your Grype is slowing me down...let’s tone it down a notch.”&lt;/p&gt;




&lt;p&gt;While deploying bookstack into my local environment, this issue surfaced. It is true for many organizations today deploying images and packages in their environment. &lt;/p&gt;

&lt;p&gt;How can this noise fatigue in the software supply chain be remedied?&lt;/p&gt;

&lt;p&gt;Add a .gype.yaml file to the root directory of your project. This will allow grype to ignore certain CVE's that do not execute or pose a threat in your environment.&lt;/p&gt;




&lt;p&gt;The yaml config can be as simple as below: Linux Environment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# grype.yaml&lt;/span&gt;
&lt;span class="na"&gt;ignore&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;vulnerability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CVE-2026-32631&lt;/span&gt;
  &lt;span class="na"&gt;reason&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Platform-specific&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;false&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;positive.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Git&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Windows&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;only;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;not&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;applicable&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;this&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Linux-based&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;image."&lt;/span&gt;

 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;vulnerability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CVE-2016-2781&lt;/span&gt;
  &lt;span class="na"&gt;reason&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Chroot&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;escape&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;via&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;ioctl.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Containers&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rely&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;on&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;namespaces/cgroups,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;not&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;chroot,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;so&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;this&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;path&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;isn't&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;exploitable&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;here."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# grype.yaml&lt;/span&gt;
&lt;span class="na"&gt;ignore&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;vulnerability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CVE-2026-32631&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;vulnerability&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CVE-2016-2781&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;This will help developers and security engineers get along better. 😃&lt;/p&gt;

&lt;p&gt;Grype config reference:&lt;br&gt;
&lt;a href="https://oss.anchore.com/docs/reference/grype/configuration/" rel="noopener noreferrer"&gt;https://oss.anchore.com/docs/reference/grype/configuration/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>cybersecurity</category>
      <category>grype</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Open source is like an amazing community swimming pool. 🏊‍♂️</title>
      <dc:creator>Marcus Morris</dc:creator>
      <pubDate>Tue, 30 Jun 2026 16:20:35 +0000</pubDate>
      <link>https://dev.to/ceaz/open-source-is-like-an-amazing-community-swimming-pool-2ogl</link>
      <guid>https://dev.to/ceaz/open-source-is-like-an-amazing-community-swimming-pool-2ogl</guid>
      <description>&lt;p&gt;It’s collaborative, it’s highly efficient, and everyone is having a great time building incredible things together.&lt;/p&gt;

&lt;p&gt;Until someone whizzes in the water.&lt;/p&gt;

&lt;p&gt;We’ve all seen or heard of the childhood "indicator dye" that turns bright blue the exact moment someone contaminates the pool. In the real world of software engineering, public registries (like npm or PyPI) don't have that dye built-in. &lt;/p&gt;

&lt;p&gt;Malicious dependencies, typosquatting, and compromised upstream maintainers blend right into the clean water almost perfectly, undetected. If we treat a raw, unverified public registry like a trusted "community pool" environment, your production pipelines will be contaminated with background risk.&lt;/p&gt;

&lt;p&gt;How do we actually build a sterile "pool experience" in enterprise software supply chains? We add in our own indicator dye and filtration systems:&lt;/p&gt;

&lt;p&gt;The Indicator Dye (Visibility): Generating an granular Software Bill of Materials (SBOM) using tools like Syft, paired with continuous vulnerability scanning via Grype, acts as your indicator dye. It instantly exposes hidden, contaminated layers before they compromise your ecosystem. Vexctl (OpenVex) can help quiet the noise of CVE's that your company is not at risk to, reducing alert fatigue in the process.&lt;/p&gt;

&lt;p&gt;The Guest Log (Provenance &amp;amp; Attestation): Stop pulling anonymous binaries. Provenance tells you the exact cryptographic history of where and how the software was built. Attestations prove that it met your rigorous build-time security requirements before it ever left the assembly line.&lt;/p&gt;

&lt;p&gt;The Filtration System (Digital Signing &amp;amp; Policy): Cryptographic signing (via frameworks like Sigstore) ensures that if an artifact or container image isn't explicitly signed, verified, and matched against your governance policies, it never gets near your cluster.&lt;/p&gt;

&lt;p&gt;Open source is a beautiful ecosystem, but public registries are distribution mechanisms, not always safe places to swim.&lt;/p&gt;

&lt;p&gt;Do not swim blindly out there. Shift upstream to the binaries first, verify your provenance, and build a closed-loop system for your dependencies. Consider solutions like Chainguard and methods to secure images/artifacts at build.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>software</category>
      <category>cybersecurity</category>
      <category>cicd</category>
    </item>
  </channel>
</rss>
