<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software-Supply-Chain on Brian Faust</title><link>https://vacua.dev/tags/software-supply-chain/</link><description>Recent content in Software-Supply-Chain on Brian Faust</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://vacua.dev/tags/software-supply-chain/rss.xml" rel="self" type="application/rss+xml"/><item><title>A Short-Lived Token Can Still Have a Large Blast Radius</title><link>https://vacua.dev/a-short-lived-token-can-still-have-a-large-blast-radius/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://vacua.dev/a-short-lived-token-can-still-have-a-large-blast-radius/</guid><description>&lt;p&gt;The release job has no stored cloud key. It asks GitHub for an identity token,
exchanges that token for a five-minute production credential, deploys, and lets
the credential expire.&lt;/p&gt;
&lt;p&gt;A compromised dependency runs in the same job. It can use the same identity
request interface and deploy while the credential is live. Five minutes is
short for an attacker waiting outside the build. It is generous for code which
is already executing inside it.&lt;/p&gt;</description></item><item><title>A Lockfile Gives Repeatability, Not Provenance</title><link>https://vacua.dev/a-lockfile-gives-repeatability-not-provenance/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://vacua.dev/a-lockfile-gives-repeatability-not-provenance/</guid><description>&lt;p&gt;&lt;code&gt;composer install&lt;/code&gt; exits successfully. It selects the version in the committed
lockfile, downloads an archive whose checksum matches, generates the autoloader,
and produces the same output on a second clean install.&lt;/p&gt;
&lt;p&gt;The output is &lt;code&gt;EXFILTRATED&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Nothing about that result means Composer ignored the lock. The lockfile was
updated to select the malicious package and its correct checksum. Composer then
repeated that decision exactly.&lt;/p&gt;
&lt;p&gt;This is the useful boundary of a dependency lock. It records a resolution. It
can make later installations select the same versions, references, metadata,
and declared distribution bytes. It cannot prove who deserved to publish those
bytes, why the update was approved, what package code will do, whether new
advisories exist, or which artifact a consumer eventually executes.&lt;/p&gt;</description></item><item><title>Supply-Chain Security Begins with Who Can Change the Artifact</title><link>https://vacua.dev/supply-chain-security-begins-with-who-can-change-the-artifact/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://vacua.dev/supply-chain-security-begins-with-who-can-change-the-artifact/</guid><description>&lt;p&gt;&lt;code&gt;quote-tool.bin&lt;/code&gt; has a valid signature. Its provenance names the expected
source revision, dependency lock, workflow digest, and builder. The signature
verifies against the consumer&amp;rsquo;s trusted fixture key.&lt;/p&gt;
&lt;p&gt;The program is still malicious.&lt;/p&gt;
&lt;p&gt;In the &lt;a href="https://vacua.dev/reproductions/sec-01/"&gt;SEC-01 fixture&lt;/a&gt;
, the authorized builder changes the
artifact after the tests pass and signs the resulting digest. Signature
verification succeeds because the statement is authentic. Consumer policy
rejects the artifact because its digest does not match the independently
reproduced output.&lt;/p&gt;</description></item></channel></rss>