Vai al contenuto principale
2038 Guida alla sopravvivenza ai bug: lezioni dai problemi del codice dell'anno bisestile
Approfondimenti

2038 Guida alla sopravvivenza ai bug: lezioni dai problemi del codice dell'anno bisestile

Scoprite cos’è il bug 2038 , perché è importante e come evitare che provochi il crash dei vostri sistemi in futuro

The 2038 bug refers to a known issue with how millions of systems store and calculate dates and times. Si prevede che questo bug causi errori nelle date e negli orari starting January 19, 2038.

Forse starà pensando: «Una data sbagliata?» Un momento inopportuno? E allora?" Ma che dire di una data errata in un database bancario che programma regolarmente bonifici e pagamenti? Oppure un’ora errata su un server che causi la scadenza del certificato SSL di un sito web, esponendo i visitatori a potenziali rischi per la sicurezza?

The reality is the 2038 bug isn't the first and won't be the last time date and time calculation issues have affected the systems we use daily.

Infatti, poiché il 2024 è un anno bisestile, è possibile individuare numerosi parallelismi tra le problematiche relative alla gestione degli anni bisestili nei sistemi e il prossimo 2038 bug to , il che ci aiuta a comprendere meglio quali fattori possano causare calcoli errati di data e ora e il loro potenziale impatto.

Il 2038 bug is non è uno scenario ipotetico, bensì una minaccia reale che potrebbe interessare un’ampia gamma di sistemi, quali sistemi e dispositivi integrati, dispositivi dell’Internet delle cose (IoT), sistemi operativi, banche dati, server, reti, applicazioni e servizi web. Questo articolo mira a fornire una comprensione più approfondita di ciò che è il 2038 bug is, includendo alcuni esempi concreti e le migliori pratiche che potete iniziare ad adottare fin da oggi per contribuire a prevenire problemi significativi in un futuro non troppo lontano.

First, we'll provide a brief overview of similar problems that can occur when calculating leap years in systems to help set the stage for understanding the more complex 2038 bug and why it matters for device security.

Cosa possono insegnarci gli anni bisestili riguardo ai calcoli relativi alla data e all’ora

Nel 2024, il mondo vivrà un evento raro: un anno bisestile. Ciò significa che febbraio avrà 29 days instead giorni su 28, con l’aggiunta di un giorno in più al calendario… e di un giorno non previsto in alcuni sistemi software e hardware.

Perché mai? Molti sistemi legacy presentano una logica relativa agli anni bisestili eccessivamente semplificata, che può indurre i sistemi a passare erroneamente da 28 febbraio a 1 marzo, il che, a sua volta, può causare malfunzionamenti nei calcoli relativi alla data e all’ora.

Una regola standard utilizzata per stabilire se un anno sia anche un anno bisestile consiste nel verificare se esso sia divisibile per quattro. Tuttavia, esistono ulteriori eccezioni che solitamente non vengono prese in considerazione in questo calcolo e che possono renderlo errato: un anno deve essere divisibile per quattro , tranne nel caso in cui l’anno sia anche divisibile per 100, e a meno che non sia anche divisibile per 400.

Prendiamo il numero the year 2100 come esempio. Poiché 2100 è divisibile per quattro, alcuni sistemi potrebbero erroneamente ritenere che si tratti di un anno bisestile. Utilizzando la logica di calcolo dell’anno bisestile sopra descritta, possiamo stabilire che, sebbene 2100 sia divisibile per 100, non è divisibile per 400. Pertanto, il 2100 è in realtà e non , in un anno bisestile.

Saltare un giorno ogni quattro anni può sembrare un dettaglio di poco conto, ma problemi di calcolo della data e dell’ora come questo possono avere gravi conseguenze per i sistemi e i loro utenti.

Un altro esempio, ancora più preoccupante, di problemi legati al calcolo di data e ora è l’imminente 2038 bug, che potrebbe potenzialmente causare gravi problemi a computer e dispositivi. Approfondiamo quali sono gli aspetti in questione e perché si presenta questa situazione.

Che cos’è il “ 2038 bug”?

Il problema 2038 bug, noto anche come “Millennium Bug di Unix” o “ Y2K38”, è un problema derivante dal modo in cui alcuni sistemi memorizzano e rappresentano i valori di data e ora utilizzando un numero denominato “timestamp”.

Un timestamp è il numero di secondi trascorsi dal 1 gennaio 1070, data nota come “epoca Unix”. Ad esempio, the timestamp for January 1, 2024, all’indirizzo 01:00:00 UTC , is 1704070800, ovvero means 1704070800 secondi trascorsi dall’epoca.

Tuttavia, alcuni sistemi utilizzano un tipo di dati denominato a signed 32-bit integer to per memorizzare il timestamp nel sistema operativo Unix e nei suoi derivati. A signed 32-bit integer can memorizzano solo numeri compresi tra -2147483648 e 2147483647. Ciò significa che il timestamp massimo che questi sistemi sono in grado di gestire è 2147483647, il quale corrisponde a to January 19 e 2038, all’indirizzo 03:14:07 UTC. Successivamente, il timestamp andrà in overflow e diventerà un numero negativo, causando un errore nella data e nell’ora.

Ad esempio, the timestamp for January 20 e 2038 corrispondono a 2147483648 nel tempo Unix. Poiché non si tratta di un timestamp valido nel formato Unix, si verificherà un overflow e il valore diventerà -2147483648, che corrisponde a 13 dicembre 1901, all’indirizzo 20:45:52 UTC. Questo è il corso the year 2038 bug.

Tipi di sistemi interessati dal bug 2038

Molti ritengono che tale bug causerà gravi problemi ai sistemi che utilizzano interi con segno a 32 bit per memorizzare la data e l’ora, determinando un comportamento errato e imprevedibile che potrebbe compromettere la funzionalità e la sicurezza, con conseguenze quali arresti anomali, errori e perdita di dati.

Esaminiamo i tipi di sistemi noti per utilizzare timestamp basati su Unix per memorizzare date e orari che potrebbero essere interessati dal bug 2038 :

  • dei database: diversi tipi di database, tra cui database relazionali e NoSQL
  • Programmi in C: programmi in C e altri programmi scritti in linguaggi basati sul C, quali C++ e PHP
  • Sistemi e dispositivi integrati: dispositivi medici, sistemi di controllo industriale per impianti quali centrali elettriche, sistemi di trasporto, autoveicoli dotati di sistemi informatici di bordo che monitorano il controllo elettronico della stabilità e il controllo della trazione, router, switch, sensori e dispositivi IoT quali elettrodomestici intelligenti
  • Sistemi operativi: Windows, Linux e sistemi operativi basati su Linux, quali Android e iOS per telefoni cellulari

Esempi recenti del bug dell’anno 2038

Alcuni sistemi stanno già mostrando l’impatto del 2038 bug in in diversi modi.

Ad esempio, gli sviluppatori possono utilizzare date molto lontane nel futuro per scopi quali la pianificazione, la scadenza o la crittografia; si pensi, ad esempio, all’uso della data 9999-12-31 come segnaposto per indicare un periodo indefinito o infinito. Tuttavia, tale data corrisponde approssimativamente al valore 253402236000 e supera di gran lunga il valore massimo previsto dal formato di data Unix.

Altri potrebbero utilizzare date future superiori a 2038 a fini di test o simulazione oppure per rappresentare eventi storici o geologici verificatisi prima dell’era volgare. In tutti questi scenari, l’anno 2038 problem can causa risultati errati, errori e esiti inaffidabili.

Di seguito sono riportati alcuni esempi concreti di sistemi che hanno già riscontrato problemi simili legati all’ uso dei timestamp Unix:

Consigli per prevenire la 2038 bug

Correggere l’aggiornamento alla versione 2038 bug requires , rimuovendo o sostituendo il tipo di dati “intero con segno a 32 bit” nei sistemi e in qualsiasi codice con cui interagisce, operazione che può risultare onerosa e richiedere molto tempo. Tuttavia, adottare sin d’ora le seguenti misure preventive per aggiornare i vostri sistemi, le vostre applicazioni e i vostri dispositivi potrebbe fare una differenza significativa a partire dal 19 gennaio:

  • L'utilizzo di un formato a 64 bit per memorizzare e rappresentare i valori di data e ora amplierà l'intervallo dei valori possibili a miliardi di anni
  • Utilizzo di diversi formati di data e ora per memorizzare e rappresentare i valori, come ad esempio il formato ISO 8601
  • Eseguire test e verifiche su per individuare eventuali problemi relativi alla data e all’ora, al fine di identificare codice, librerie o software obsoleti che potrebbero essere vulnerabili al bug 2038
  • Aggiornare e applicare regolarmente patch al codice, al software e ai dispositivi dell’ per garantire che siano compatibili con gli standard e le tecnologie più recenti

Molte aziende sono già consapevoli di the year 2038 problem and e stanno adottando misure proattive per aggiornare their systems to use 64-bit data i formati o le rappresentazioni alternative dei timestamp e dei valori di data. Ad esempio, Apple ha iniziato a integrare il supporto a 64 bit in macOS a partire dalla versione 2003 (si apre in una nuova scheda), il che può contribuire a garantire che Mac gli utenti non riscontrino issues with dates after January 2038.

È stato risolto il problema the year 2038 problem be ?

Sia l’anno bisestile 2038 bug and che quello 2024 ci ricordano che i calcoli relativi alla data e all’ora non sono aspetti banali, bensì complessi e fondamentali dello sviluppo di codice e software. La buona notizia è che, se si adottano misure proattive, il the year 2038 problem is non rappresenta l’inevitabile apocalisse che alcuni articoli descrivono.

By being aware of the potential problems and prioritizing solutions, you can more easily minimize the impact of the 2038 bug and help ensure your systems run smoothly and securely for a long time.

How can you begin addressing the 2038 bug in your environment? Un modo per farlo consiste nell’ottenere una visibilità completa sulle vostre risorse e sullo stato dei relativi software. By monitoring and scanning your endpoint devices (opens in a new tab) regularly, you can more easily identify devices running outdated code or software, replace any devices near the end of their life cycles, or update those using 32-bit systems that may be more prone to the 2038 bug.

Poiché la modifica del tipo di dati e del codice che gestisce il bug 2038 può causare errori, problemi di compatibilità e un calo delle prestazioni, disporre di una visibilità in tempo reale sui Suoi dispositivi può aiutarLa a prevenire meglio potenziali vulnerabilità e endpoint rischi per la sicurezza (si apre in una nuova scheda).

Scoprite come la piattaforma di Tanium'sia stata progettata per semplificare endpoint la gestione (si apre in una nuova scheda) e offra funzionalità volte a ottimizzare il vostro lavoro, consentendo al contempo agli utenti di agire in autonomia, ad esempio automatizzando l’applicazione delle configurazioni, rispondendo rapidamente alle minacce e consentendo ai dipendenti di risolvere autonomamente i problemi più comuni, il tutto in un’unica soluzione.

Inoltre, il nostro approccio alla gestione autonoma degli endpoint (AEM) di (si apre in una nuova scheda) integrerà ulteriori funzionalità assistite dall’intelligenza artificiale nella piattaforma XEM di Tanium , al fine di fornire raccomandazioni di automazione e relative azioni intelligenti altamente personalizzabili, progettate tenendo conto di sicurezza, protezione e scalabilità.