# Patch

Patch (in inglese "pezza", "toppa"), in informatica, indica una porzione di software progettata per aggiornare o migliorare un programma. Ciò include la risoluzione di vulnerabilità di sicurezza e altri bug generici: tali patch vengono anche chiamate fix o bugfix
Il termine è solitamente associato a un piccolo aggiornamento. Per questo, update più consistenti, possono prendere nomi differenti. Ad esempio da Microsoft Windows NT tali corposi aggiornamenti prendono il nome di service pack, altre volte possono essere chiamati software updates.

## Storia

Storicamente le patch venivano distribuite per i nastri o le schede perforate, le quali dovevano essere tagliate in corrispondenza del punto da modificare e a quel punto veniva inserita la pezza (patch in inglese). Successivamente le patch venivano distribuite su floppy disk, poi su CD-ROM e infine scaricando il contenuto dell'aggiornamento via Internet.
Esistono programmi che si fanno carico della gestione dei vari update, per aiutare l'utente a mantenere aggiornato l'applicativo automatizzandone il processo. Alcuni programmi possono aggiornare se stessi tramite internet. Spesso i security update vengono applicati con questo sistema.

## Descrizione

Le patch per il software proprietario solitamente sono file eseguibili e non codice sorgente. La loro esecuzione apporta le modifiche o sostituisce gli stessi file binari. Mediante esse vengono anche migliorate l'usabilità e le prestazioni dell'applicazione. Una nuova patch può però introdurre problematiche che necessitano una regressione della versione software dell'applicativo (software regression). Il rilascio di patch per un certo sistema in un dato momento solitamente avviene a seguito di una pianificazione denominata patch management. Il rilascio di una patch percorre varie fasi ed è attentamente valutato il rischio potenziale che una patch può introdurre in un sistema, che non sempre è inferiore al mantenerlo immutato.
Le patch possono anche essere rilasciate sotto forma di codice sorgente, solitamente consistono in file di testo contenenti le differenze, diffs, le quali poi vengono elaborate dai gestori di versione (CVS), che generano in automatico la patch. In questo caso l'utente è tenuto a compilare i nuovi sorgenti. Tale soluzione viene solitamente adottata nel caso di software open source, ne è un ottimo esempio il kernel linux.

## Tipologie
### Patch di sicurezza

Una patch di sicurezza è un aggiornamento finalizzato alla correzione di vulnerabilità. Le patch di sicurezza sono il sistema primario di correzione delle vulnerabilità software.
Per i sistemi operativi vi sono team specializzati nello sviluppo e nella pubblicazione di patch di sicurezza, i quali periodicamente le pubblicano. Nel caso di Microsoft Windows gli aggiornamenti di sicurezza vengono rilasciati una volta al mese.

### Patch non ufficiali

Una patch non ufficiale viene rilasciata da terze parti senza scopi commerciali su software commerciale. Lo scopo è simile a quello di una patch ufficiale. Alcuni esempi sono gli aggiornamenti di sicurezza rilasciati da terze parti quando la patch ufficiale si attarda ad essere rilasciata, o le patch a videogiochi non più supportati (abandonware), create dalla comunità per migliorarne la compatibilità coi nuovi sistemi e driver.
Secondariamente per patch non ufficiale si possono intendere particolari tipi di crack il cui scopo è rimuovere, a livello del codice assemblato, le protezioni di un programma in modo da permetterne (illegalmente) l'uso senza le necessarie licenze.

### Hot patching

L'hot patching si riferisce all'applicazione di patch a run time, senza dover fermare il sistema o il programma per riavviarlo. Questo genere di patch viene applicata a sistemi che non possono essere interrotti a causa dei conseguenti problemi legati all'interruzione di un servizio.

## Applicazione

Le dimensioni di una patch possono generalmente variare da alcuni kilobyte a qualche gigabyte (soprattutto nel caso dei videogiochi, in cui gli aggiornamenti possono contenere anche contenuti multimediali come audio, video, immagini e modelli 3D). Le patch di solito hanno dimensioni ridotte rispetto all'intero programma e quindi impiegano molto meno tempo per essere installate.
Nel caso dei sistemi operativi o dei server le patch possono risolvere importanti buchi di sicurezza o risolvere problemi critici che coinvolgono i driver. Per facilitare tali operazioni, spesso delicate e complesse, vengono implementati applicativi per l'installazione automatica o semi-automatica delle patch. L'automatizzazione assoluta dell'installazione di aggiornamenti può essere disattivata e spesso non viene utilizzata per paura che le compagnie di sviluppo ottengano pieno controllo sul software installato nella propria macchina.
L'installazione completamente automatica di aggiornamenti però viene molto spesso utilizzata su sistemi Microsoft Windows, anche se utenti cauti, in particolare amministratori di sistema, tendono a disattivare tale funzionalità.
Applicare patch al firmware può risultare molto complicato, poiché implica l'installazione parziale o totale di una nuova immagine, invece di applicare solo le differenze dalla versione precedente. La patch consiste solitamente in una immagine firmware binaria con un programma che sostituisce quella attualmente presente sull'hardware. Per esempio l'aggiornamento del firmware UEFI di una motherboard è un'operazione molto delicata, poiché un'interruzione del processo (assenza alimentazione o spegnimento volontario) potrebbe rendere inutilizzabile la scheda. Per evitare ciò spesso si mettono dei checkpoint per prevenire seri danni, ad esempio punti di backup dai quali si può ripristinare lo stato della scheda.
Nella descrizione di un aggiornamento correttivo (patch o fix changelog) compare spesso l'espressione addresses an issue o updates an issue traducibile in "risolve un problema" (lett. "affronta una questione" o "aggiorna una questione").

### Videogiochi

Nei videogiochi le patch possono essere pubblicate per migliorare o risolvere bug, ma anche per modificare contenuti multimediali o regole e algoritmi del gioco. Spesso questi ultimi vengono applicati per ribilanciare abilità o sistemare exploits che possono avvantaggiare o svantaggiare i giocatori.

## Microsoft Update Catalog

Microsoft mette a disposizione uno strumento alternativo a Windows Update: Catalogo di Microsoft Update. Su questo catalogo, in forma di portale web, si possono cercare e scaricare, con varie chiavi di ricerca, tutti gli aggiornamenti, patch, service pack, convenience pack, anniversary update, ecc. pubblicati. Una comodità è data dal fatto che i singoli eseguibili possono essere archiviati come file qualsiasi.
Quando si accede all'indirizzo internet il catalogo si configura in automatico per il sistema operativo in uso.