Ensuring the security and reliability of long-running software systems without service interruption is a persistent challenge. This thesis presents a novel technique for live library upgrades, allowing the replacement of vulnerable or outdated shared libraries in a running process without requiring process termination or restart. The proposed approach leverages the Checkpoint/Restore In Userspace (CRIU) tool to freeze the execution state of a live process, perform controlled modifications, and resume execution with the updated code seamlessly integrated. At the core of this solution lies a sophisticated orchestration of dump-time and restoretime transformations, including metadata manipulation, address translation, and memory dump rewriting. By intercepting and editing file-backed memory mappings and leveraging the Executable and Linkable Format (ELF) binary structure, the method allows the updated library to be loaded in place of the original, while preserving consistency by relying on the dynamic loader for re-resolving references. A synthetic execution environment is employed to retrieve memory-resident data, such as the Global Offset Table (GOT), from the new library version. Moreover, we explicitly support Address Space Layout Randomization (ASLR) by using custom scripts that map and adjust memory contents as needed. Our evaluation demonstrates the technique’s effectiveness by successfully upgrading multiple libraries across multiple versions. Notably, we updated the compression library in a running SSH server with minimal downtime, confirming correct operation after the live replacement; we also upgraded a shared library in Redis during GET requests, with only a brief throughput dip and uninterrupted client connectivity. Even under complex runtime conditions, the running process continues execution with the replaced library, affirming the feasibility of non-disruptive security patching and dynamic software updating in production systems.

Assicurare la sicurezza e l’affidabilità dei sistemi software a lungo termine senza interruzioni del servizio è una sfida persistente. Questa tesi presenta una tecnica innovativa per l’aggiornamento in tempo reale delle librerie software, ciò consente di sostituire librerie condivise vulnerabili o obsolete in un processo in esecuzione senza richiedere la terminazione o il riavvio del processo stesso. L’approccio proposto sfrutta lo strumento Checkpoint/Restore In Userspace (CRIU) per congelare lo stato di esecuzione di un processo, eseguire modifiche controllate e riprendere l’esecuzione con il codice aggiornato integrato in modo trasparente. Al cuore di questa soluzione si trova un’orchestrazione sofisticata di trasformazioni in fase di dump e restore, tra cui la manipolazione dei metadati, la traduzione di indirizzi e la riscrittura di dump della memoria. Identificando e modificando memory mapping di tipo file-backed e sfruttando la struttura binaria Executable and Linkable Format (ELF), il metodo proposto in questa tesi consente di ricaricare un libreria aggiornata al posto di quella originale. Inoltre, viene preservata la coerenza dei dati in memoria sfruttando il dynamic loader per la risoluzione dei riferimenti. Un ambiente di esecuzione sintetico viene utilizzato per recuperare dati residenti in memoria, come la tabella Global Offset Table (GOT), dalla nuova versione della libreria. Inoltre, è supportato esplicitamente Address Space Layout Randomization (ASLR) utilizzando script ad-hoc che mappano e correggono il contenuto della memoria secondo necessità. ll processo di valutazione dimostra l’efficacia della nostra tecnica aggiornando con successo più versioni di diverse librerie. Abbiamo aggiornato la libreria di compressione in un server SSH in esecuzione con un downtime minimo; abbiamo anche aggiornato una libreria condivisa in Redis durante richieste GET, con un breve calo del throughput e senza interrompere la connessione lato client. Anche in condizioni di runtime complesse, i processi continuano l’esecuzione con la libreria sostituita, confermando la fattibilità del patching di sicurezza non invasivo e dell’aggiornamento software dinamico nei sistemi di produzione.

Live library upgrades via CRIU: a novel approach to patch security vulnerabilities in running processes

Carlotto, Edoardo
2024/2025

Abstract

Ensuring the security and reliability of long-running software systems without service interruption is a persistent challenge. This thesis presents a novel technique for live library upgrades, allowing the replacement of vulnerable or outdated shared libraries in a running process without requiring process termination or restart. The proposed approach leverages the Checkpoint/Restore In Userspace (CRIU) tool to freeze the execution state of a live process, perform controlled modifications, and resume execution with the updated code seamlessly integrated. At the core of this solution lies a sophisticated orchestration of dump-time and restoretime transformations, including metadata manipulation, address translation, and memory dump rewriting. By intercepting and editing file-backed memory mappings and leveraging the Executable and Linkable Format (ELF) binary structure, the method allows the updated library to be loaded in place of the original, while preserving consistency by relying on the dynamic loader for re-resolving references. A synthetic execution environment is employed to retrieve memory-resident data, such as the Global Offset Table (GOT), from the new library version. Moreover, we explicitly support Address Space Layout Randomization (ASLR) by using custom scripts that map and adjust memory contents as needed. Our evaluation demonstrates the technique’s effectiveness by successfully upgrading multiple libraries across multiple versions. Notably, we updated the compression library in a running SSH server with minimal downtime, confirming correct operation after the live replacement; we also upgraded a shared library in Redis during GET requests, with only a brief throughput dip and uninterrupted client connectivity. Even under complex runtime conditions, the running process continues execution with the replaced library, affirming the feasibility of non-disruptive security patching and dynamic software updating in production systems.
ING - Scuola di Ingegneria Industriale e dell'Informazione
22-lug-2025
2024/2025
Assicurare la sicurezza e l’affidabilità dei sistemi software a lungo termine senza interruzioni del servizio è una sfida persistente. Questa tesi presenta una tecnica innovativa per l’aggiornamento in tempo reale delle librerie software, ciò consente di sostituire librerie condivise vulnerabili o obsolete in un processo in esecuzione senza richiedere la terminazione o il riavvio del processo stesso. L’approccio proposto sfrutta lo strumento Checkpoint/Restore In Userspace (CRIU) per congelare lo stato di esecuzione di un processo, eseguire modifiche controllate e riprendere l’esecuzione con il codice aggiornato integrato in modo trasparente. Al cuore di questa soluzione si trova un’orchestrazione sofisticata di trasformazioni in fase di dump e restore, tra cui la manipolazione dei metadati, la traduzione di indirizzi e la riscrittura di dump della memoria. Identificando e modificando memory mapping di tipo file-backed e sfruttando la struttura binaria Executable and Linkable Format (ELF), il metodo proposto in questa tesi consente di ricaricare un libreria aggiornata al posto di quella originale. Inoltre, viene preservata la coerenza dei dati in memoria sfruttando il dynamic loader per la risoluzione dei riferimenti. Un ambiente di esecuzione sintetico viene utilizzato per recuperare dati residenti in memoria, come la tabella Global Offset Table (GOT), dalla nuova versione della libreria. Inoltre, è supportato esplicitamente Address Space Layout Randomization (ASLR) utilizzando script ad-hoc che mappano e correggono il contenuto della memoria secondo necessità. ll processo di valutazione dimostra l’efficacia della nostra tecnica aggiornando con successo più versioni di diverse librerie. Abbiamo aggiornato la libreria di compressione in un server SSH in esecuzione con un downtime minimo; abbiamo anche aggiornato una libreria condivisa in Redis durante richieste GET, con un breve calo del throughput e senza interrompere la connessione lato client. Anche in condizioni di runtime complesse, i processi continuano l’esecuzione con la libreria sostituita, confermando la fattibilità del patching di sicurezza non invasivo e dell’aggiornamento software dinamico nei sistemi di produzione.
File allegati
File Dimensione Formato  
2025_7_Carlotto_Tesi.pdf

accessibile in internet per tutti

Descrizione: Tesi
Dimensione 741.56 kB
Formato Adobe PDF
741.56 kB Adobe PDF Visualizza/Apri
2025_7_Carlotto_Executive Summary.pdf

non accessibile

Descrizione: Executive Summary
Dimensione 418.42 kB
Formato Adobe PDF
418.42 kB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/240844