<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ssdlc on Samarthya</title><link>https://samarthya.me/tags/ssdlc/</link><description>Recent content in Ssdlc on Samarthya</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© Samarthya 2018-2026. All rights reserved.</copyright><lastBuildDate>Wed, 04 Nov 2026 21:00:00 -0500</lastBuildDate><atom:link href="https://samarthya.me/tags/ssdlc/index.xml" rel="self" type="application/rss+xml"/><item><title>Learning OSV, part 5: I scanned my own blog, and the real problem wasn't in the report</title><link>https://samarthya.me/posts/osv-scanner-on-my-own-blog/</link><pubDate>Wed, 04 Nov 2026 21:00:00 -0500</pubDate><guid>https://samarthya.me/posts/osv-scanner-on-my-own-blog/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; A test project is a controlled experiment; your own repository is the one that talks back. I pointed OSV-Scanner at&#10;the source of this blog expecting a dull report. The report was indeed dull. The interesting part was what it could&#10;not see.&#10;&lt;/div&gt;&#10;&#10;&lt;figure&gt;&lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="low"&#10; alt="Anime-style illustration: an excited young experimenter in a lab coat, with goggles pushed up on the forehead, holds a glowing green flask high at a lab bench and says &amp;ldquo;Let&amp;rsquo;s try it!&amp;rdquo;"&#10; src="https://samarthya.me/posts/osv-scanner-on-my-own-blog/overview.svg"&#10; &gt;&lt;figcaption&gt;The mood of the evening. It lasted until the first command.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;In parts &lt;a href="https://samarthya.me/posts/learning-osv-2-scanning-with-osv-scanner/" &gt;2&lt;/a&gt; and&#10;&lt;a href="https://samarthya.me/posts/learning-osv-3-guided-remediation/" &gt;3&lt;/a&gt; I used a project built to be vulnerable. This time the&#10;target is &lt;a href="https://github.com/samarthya/blog.samarthya.me" target="_blank" rel="noreferrer"&gt;the repository behind this site&lt;/a&gt;: Hugo, the Blowfish theme&#10;as a git submodule, some Python helper scripts and two GitHub Actions workflows. All runs used OSV-Scanner v2.7.0.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://samarthya.me/posts/osv-scanner-on-my-own-blog/feature.png"/></item><item><title>Learning OSV, part 4: where it fits, and my recommendation</title><link>https://samarthya.me/posts/learning-osv-4-recommendation/</link><pubDate>Sat, 31 Oct 2026 07:45:00 -0400</pubDate><guid>https://samarthya.me/posts/learning-osv-4-recommendation/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; Three parts of trying things. This one is the verdict: what I would actually switch on, in what order, and what I&#10;would still look elsewhere for.&#10;&lt;/div&gt;&#10;&#10;&lt;figure&gt;&lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="low"&#10; alt="Diagram: a loop of pull request scan, scheduled rescan, in-place fix as a bot pull request, and human review, fed by OSV.dev in the centre; beside it a five-point recommendation checklist"&#10; src="https://samarthya.me/posts/learning-osv-4-recommendation/overview.svg"&#10; &gt;&lt;figcaption&gt;The loop I would run, and the verdict as a checklist.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;Quick recap of the proof of concept:&#10;&lt;a href="https://samarthya.me/posts/learning-osv-1-what-osv-dev-is/" &gt;part 1&lt;/a&gt; read the database,&#10;&lt;a href="https://samarthya.me/posts/learning-osv-2-scanning-with-osv-scanner/" &gt;part 2&lt;/a&gt; scanned a project (5 dependencies,&#10;68 packages, 49 vulnerabilities), and &lt;a href="https://samarthya.me/posts/learning-osv-3-guided-remediation/" &gt;part 3&lt;/a&gt; fixed&#10;it (7 of 50 safely, 50 of 50 with a major upgrade).&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://samarthya.me/posts/learning-osv-4-recommendation/feature.png"/></item><item><title>Learning OSV, part 3: guided remediation with osv-scanner fix</title><link>https://samarthya.me/posts/learning-osv-3-guided-remediation/</link><pubDate>Sat, 31 Oct 2026 07:30:00 -0400</pubDate><guid>https://samarthya.me/posts/learning-osv-3-guided-remediation/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; Finding 49 vulnerabilities is easy. Deciding which three lines to change so that most of them go away is the hard&#10;part. That is what &lt;code&gt;osv-scanner fix&lt;/code&gt; tries to do.&#10;&lt;/div&gt;&#10;&#10;&lt;figure&gt;&lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="low"&#10; alt="Diagram comparing two fix strategies. in-place edits only the lockfile, upgrades lodash and axios within range, and fixes 7 of 50. relax edits package.json and relocks, upgrading jsonwebtoken to a new major, axios across 0.x and minimist by a patch, and fixes 50 of 50"&#10; src="https://samarthya.me/posts/learning-osv-3-guided-remediation/overview.svg"&#10; &gt;&lt;figcaption&gt;in-place is the safe small win; relax fixes everything but chose a major upgrade.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;In &lt;a href="https://samarthya.me/posts/learning-osv-2-scanning-with-osv-scanner/" &gt;part 2&lt;/a&gt; the scanner found 49 known&#10;vulnerabilities in a small Node project. This part tries the &lt;strong&gt;guided remediation&lt;/strong&gt; command on it.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://samarthya.me/posts/learning-osv-3-guided-remediation/feature.png"/></item><item><title>Learning OSV, part 2: scanning a project with OSV-Scanner</title><link>https://samarthya.me/posts/learning-osv-2-scanning-with-osv-scanner/</link><pubDate>Sat, 31 Oct 2026 07:15:00 -0400</pubDate><guid>https://samarthya.me/posts/learning-osv-2-scanning-with-osv-scanner/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; I picked four dependencies. The scanner found problems in eleven packages. That gap is the whole reason to scan&#10;lockfiles and not just &lt;code&gt;package.json&lt;/code&gt;.&#10;&lt;/div&gt;&#10;&#10;&lt;figure&gt;&lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="low"&#10; alt="Diagram: my-app has five direct dependencies, all affected; Express brings six more affected packages pinned exactly; 57 other packages have no known issues. Totals: 5 chosen, 68 in the lockfile, 11 affected, 49 known vulnerabilities"&#10; src="https://samarthya.me/posts/learning-osv-2-scanning-with-osv-scanner/overview.svg"&#10; &gt;&lt;figcaption&gt;Five dependencies I chose became 68 packages; 11 are affected, six of them only because Express pins them.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;&lt;a href="https://samarthya.me/posts/learning-osv-1-what-osv-dev-is/" &gt;Part 1&lt;/a&gt; was about the OSV database. This part runs the&#10;scanner against a small project and reads the result.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://samarthya.me/posts/learning-osv-2-scanning-with-osv-scanner/feature.png"/></item><item><title>Learning OSV, part 1: what osv.dev is and how to read a record</title><link>https://samarthya.me/posts/learning-osv-1-what-osv-dev-is/</link><pubDate>Sat, 31 Oct 2026 07:00:00 -0400</pubDate><guid>https://samarthya.me/posts/learning-osv-1-what-osv-dev-is/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; A CVE tells you &lt;em&gt;that&lt;/em&gt; something is broken. It rarely tells you, in a way a machine can use, &lt;em&gt;which package&lt;/em&gt;&#10;and &lt;em&gt;which versions&lt;/em&gt;. OSV exists to answer exactly that.&#10;&lt;/div&gt;&#10;&#10;&lt;figure&gt;&lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="low"&#10; alt="Diagram: advisories from GitHub, PyPA, Go, RustSec and malware reports flow into OSV.dev, which publishes a record for GHSA-xvch-5gv4-984h showing npm/minimist affected from 1.0.0 (introduced) to 1.2.6 (fixed), with version 1.2.5 inside the vulnerable range"&#10; src="https://samarthya.me/posts/learning-osv-1-what-osv-dev-is/overview.svg"&#10; &gt;&lt;figcaption&gt;One record, read as data: the affected range runs from introduced 1.0.0 to fixed 1.2.6, so 1.2.5 is vulnerable and the upgrade target is 1.2.6.&lt;/figcaption&gt;&lt;/figure&gt;&#10;&lt;p&gt;I am learning which free tools can carry real weight in a secure development life cycle. This short series is my&#10;proof of concept with &lt;strong&gt;OSV&lt;/strong&gt;: the database, the scanner and its fix command. I run everything for real and keep&#10;the output. This part is about the concept and the website.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://samarthya.me/posts/learning-osv-1-what-osv-dev-is/feature.png"/></item></channel></rss>