<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Incident Response on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/incident-response/</link>
        <description>Recent content in Incident Response on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 08 Sep 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/incident-response/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Incident response nel mondo DevSecOps</title>
        <link>https://www.matteobianchi.eu/p/incident-response-devsecops/</link>
        <pubDate>Tue, 08 Sep 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/incident-response-devsecops/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/incident-response-devsecops/cover.png" alt="Featured image of post Incident response nel mondo DevSecOps" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;La &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/logging-detection-pipeline/&#34; &gt;detection&lt;/a&gt; scatta. E adesso? Un&amp;rsquo;allerta senza
una risposta preparata è panico in tempo reale: decisioni improvvisate, prove distrutte per sbaglio,
tempi lunghi. La &lt;strong&gt;incident response (IR)&lt;/strong&gt; è il piano che trasforma il caos in procedura. E in un
mondo DevSecOps — infrastruttura immutabile, tutto automatizzato, artefatti verificabili — la risposta
cambia forma rispetto all&amp;rsquo;IR tradizionale: si sfruttano proprio le proprietà che abbiamo costruito nei
capitoli precedenti.&lt;/p&gt;
&lt;h2 id=&#34;le-fasi-in-breve&#34;&gt;Le fasi, in breve
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    PREP[Preparazione&amp;lt;br/&amp;gt;runbook, ruoli,&amp;lt;br/&amp;gt;accessi] --&amp;gt; DET[Rilevamento&amp;lt;br/&amp;gt;+ analisi]
    DET --&amp;gt; CONT[Contenimento&amp;lt;br/&amp;gt;isola]
    CONT --&amp;gt; ERAD[Eradicazione&amp;lt;br/&amp;gt;rimpiazza]
    ERAD --&amp;gt; REC[Recupero]
    REC --&amp;gt; LESS[Lezioni apprese&amp;lt;br/&amp;gt;postmortem]
    LESS -.migliora.-&amp;gt; PREP
    style CONT fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;Il modello NIST è un ciclo: ci si &lt;em&gt;prepara&lt;/em&gt; prima, si &lt;em&gt;rileva e analizza&lt;/em&gt;, si &lt;em&gt;contiene&lt;/em&gt;, si &lt;em&gt;eradica&lt;/em&gt;,
si &lt;em&gt;recupera&lt;/em&gt;, e si imparano le &lt;em&gt;lezioni&lt;/em&gt; che migliorano la preparazione. La differenza DevSecOps sta
in come si eseguono contenimento ed eradicazione.&lt;/p&gt;
&lt;h2 id=&#34;isola-e-rimpiazza-non-riparare&#34;&gt;Isola e rimpiazza, non riparare
&lt;/h2&gt;&lt;p&gt;Nell&amp;rsquo;IR classico si &amp;ldquo;ripuliva&amp;rdquo; un server compromesso. In un&amp;rsquo;infrastruttura &lt;strong&gt;immutabile&lt;/strong&gt; è un errore:
non sai cosa l&amp;rsquo;attaccante ha toccato, quindi non puoi fidarti di nessuna pulizia. Il modello
cloud-native è diverso:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Contenimento:  isola il pod/nodo compromesso (network policy, cordon)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               → preservalo per la forense, NON spegnerlo subito
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Eradicazione:  rimpiazza con un&amp;#39;istanza NUOVA da un artefatto PULITO e firmato
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               → non riparare il compromesso, sostituiscilo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Il contenimento sfrutta la &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/microsegmentazione-nello-zero-trust/&#34; &gt;microsegmentazione&lt;/a&gt;:
una network policy che taglia il pod dal resto del cluster lo ferma senza distruggere le prove.
L&amp;rsquo;eradicazione sfrutta gli artefatti &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/firma-artefatti-sigstore/&#34; &gt;firmati&lt;/a&gt; e
immutabili: si ridistribuisce una versione pulita verificabile, con la certezza di cosa contiene.&lt;/p&gt;
&lt;h2 id=&#34;la-provenienza-come-bussola-forense&#34;&gt;La provenienza come bussola forense
&lt;/h2&gt;&lt;p&gt;Durante l&amp;rsquo;analisi, le proprietà costruite prima diventano strumenti d&amp;rsquo;indagine. La
&lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/sbom-trasparenza/&#34; &gt;SBOM&lt;/a&gt; dice esattamente cosa girava nell&amp;rsquo;immagine compromessa.
La &lt;strong&gt;provenienza&lt;/strong&gt; SLSA dice da quale commit e quale build proveniva. Gli
&lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/logging-detection-pipeline/&#34; &gt;audit log&lt;/a&gt; a prova di manomissione danno la
timeline. La domanda &amp;ldquo;cosa è stato toccato?&amp;rdquo; — che senza questi dati richiede settimane — diventa una
serie di query.&lt;/p&gt;
&lt;h2 id=&#34;automazione-contenere-alla-velocità-della-macchina&#34;&gt;Automazione: contenere alla velocità della macchina
&lt;/h2&gt;&lt;p&gt;Gli attacchi automatizzati vanno più veloci di un umano. Per i casi ad alta confidenza, il
contenimento può essere &lt;strong&gt;automatico&lt;/strong&gt; (SOAR): la detection &amp;ldquo;pod che esfiltra dati&amp;rdquo; innesca da sola
l&amp;rsquo;isolamento del pod, poi avvisa gli umani. L&amp;rsquo;automazione compra i minuti che contano, con la stessa
cautela dell&amp;rsquo;enforce nella runtime security: solo su segnali affidabili, per non isolare servizi sani
a un falso positivo.&lt;/p&gt;
&lt;h2 id=&#34;il-blameless-postmortem&#34;&gt;Il blameless postmortem
&lt;/h2&gt;&lt;p&gt;La fase più trascurata e più preziosa. Dopo l&amp;rsquo;incidente, un &lt;strong&gt;postmortem senza colpevoli&lt;/strong&gt; ricostruisce
cosa è successo e &lt;em&gt;perché i controlli non l&amp;rsquo;hanno fermato&lt;/em&gt; — non chi ha sbagliato. L&amp;rsquo;output non è una
reprimenda ma azioni concrete: una regola di detection nuova, un gate più stretto, un controllo
mancante aggiunto alla pipeline. È così che l&amp;rsquo;incidente alimenta il miglioramento invece di ripetersi,
chiudendo il ciclo DevSecOps.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; il &#34;blameless postmortem&#34; non è un modo per non responsabilizzare nessuno? Se nessuno paga per l&#39;errore, cosa impedisce che si ripeta?&lt;/summary&gt;
&lt;p&gt;È l&#39;obiezione classica, e si basa su un&#39;intuizione sbagliata su cosa previene la ripetizione degli
errori. L&#39;idea che la paura della colpa migliori la sicurezza è intuitiva ma smentita da decenni di
pratica nelle industrie ad alto rischio, dall&#39;aviazione alla medicina: la colpa non previene gli errori,
li &lt;em&gt;nasconde&lt;/em&gt;. Se sai che ammettere un errore ti costa, la tua reazione razionale non diventa
&#34;starò più attento&#34;, diventa &#34;non lo segnalerò, non lascerò tracce, dirò che non so come sia successo&#34;.
Il risultato è che perdi esattamente l&#39;informazione che ti serve per correggere il sistema, e l&#39;errore si
ripete — solo che ora nessuno te lo dice finché non esplode di nuovo, più in grande. &#34;Blameless&#34; non
significa &#34;nessuna responsabilità&#34;: significa separare la responsabilità &lt;em&gt;di capire e migliorare il
sistema&lt;/em&gt; (collettiva, aperta, onesta) dalla ricerca di un capro espiatorio (che distrugge l&#39;onestà
senza aggiungere sicurezza). Il postmortem blameless parte da un presupposto preciso: le persone
competenti fanno quasi sempre scelte sensate con le informazioni e gli strumenti che avevano in quel
momento. Quindi se qualcuno ha fatto un errore, la domanda produttiva non è &#34;perché quella persona è
incompetente?&#34; ma &#34;perché il sistema ha &lt;em&gt;permesso&lt;/em&gt; che quell&#39;errore facile da fare arrivasse fino
in produzione? dov&#39;era il controllo che avrebbe dovuto intercettarlo?&#34;. Questo porta ad azioni concrete
che prevengono davvero la ripetizione — un gate mancante, una detection assente, una procedura ambigua,
un valore di default pericoloso — mentre &#34;licenziamo il responsabile&#34; lascia il sistema identico e pronto
a far inciampare la prossima persona allo stesso modo. La responsabilità vera, in questo modello, è dare
seguito alle azioni del postmortem: quello sì che va tracciato e preteso. Punire l&#39;individuo è emotivamente
soddisfacente e tecnicamente inutile; correggere il sistema è il contrario, ed è l&#39;unico che riduce il
tasso di incidenti nel tempo.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;incident response DevSecOps isola e rimpiazza invece di riparare, usa SBOM, provenienza e audit log
come bussola forense, automatizza il contenimento sui segnali affidabili e chiude con un postmortem
blameless che migliora i controlli. Il piano trasforma il panico in procedura. Molto di ciò che
abbiamo costruito — controlli, audit, procedure — deve anche &lt;em&gt;dimostrarsi&lt;/em&gt; a un revisore o a un
regolatore. Farlo senza fermare la consegna è la compliance as code, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
