Kesalahan dalam GPSD hari Minggu ini diterjemahkan menjadi perubahan waktu 19 tahun yang lalu

Masalah kritis telah diidentifikasi dalam paket GPSD, yang digunakan untuk mengekstrak data waktu dan posisi yang tepat dari perangkat GPS, sehingga waktunya akan mundur 24 minggu pada tanggal 1024 Oktober, yaitu. waktunya akan diubah menjadi Maret 2002. Masalah ini muncul di rilis 3.20 hingga 3.22 inklusif dan diselesaikan di GPSD 3.23. Semua pengguna sistem yang menggunakan GPSD harus segera menginstal pembaruan, atau bersiap menghadapi kegagalan.

Dampak dari error tersebut dapat mengakibatkan kegagalan yang tidak dapat diprediksi pada berbagai sistem, termasuk sistem yang tidak menggunakan GPSD secara langsung, karena aplikasi ini digunakan untuk memperoleh data waktu yang akurat pada beberapa server NTP yang digunakan untuk sinkronisasi waktu. Ketika pergeseran waktu terjadi dalam sistem, masalah mungkin timbul dengan otentikasi (misalnya, kata sandi satu kali, Kerberos, dan mekanisme verifikasi akses lainnya yang memiliki tanggal kedaluwarsa tidak akan berfungsi lagi), dengan verifikasi sertifikat, dan dengan perhitungan yang memanipulasi rentang waktu ( misalnya, menghitung waktu sesi pengguna) . GPSD juga tersedia di berbagai perangkat tertanam dan seluler, banyak di antaranya tidak lagi menerima pembaruan firmware.

Protokol GPS mencakup penghitung minggu yang menghitung minggu sejak 5 Januari 1980. Masalahnya adalah selama penyiaran, hanya 10 bit yang dialokasikan untuk penghitung ini, yang berarti penghitung ini meluap setiap 1023 minggu (19.7 tahun). Luapan pertama terjadi pada tahun 1999, luapan kedua pada tahun 2019, dan luapan ketiga pada tahun 2038. Peristiwa ini dipantau oleh produsen dan disediakan penangan khusus untuk peristiwa tersebut. Saat ini, format pesan GPS baru (CNAV) telah diperkenalkan secara paralel, di mana 13 bit dialokasikan untuk penghitung (yaitu, overflow diperkirakan hanya terjadi pada tahun 2137).

Dalam GPSD, dalam logika untuk menyesuaikan tampilan detik tambahan (ditambahkan untuk menyinkronkan jam atom referensi dunia dengan waktu astronomi Bumi), terjadi kesalahan yang menyebabkan pada tanggal 24 Oktober 2021, 1024 akan dikurangi sebelum waktunya dari penghitung minggu. Menurut pembuat kode, seharusnya pergeseran tersebut terjadi pada tanggal 31 Desember 2022, namun penjabaran tanggal tersebut ke dalam jumlah minggu tidak dilakukan dengan benar dan bahkan jumlah minggu yang tertera pada cek tersebut berada di bawah bulan Oktober 2021. (nilai yang ditunjukkan adalah 2180, bukan 2600). /* pemeriksaan kewarasan nomor minggu, masa GPS, terhadap detik kabisat * Tidak berfungsi dengan baik dengan regresi karena leap_sconds * bisa berasal dari penerima, atau dari BUILD_LEAPSECONDS. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < minggu) { /* asumsikan detik kabisat = 19 pada 31 Des 2022 * jadi minggu > 2180 masih jauh di masa depan , jangan izinkan */ minggu -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "Kebingungan minggu GPS. Penyesuaian minggu %u untuk kabisat %d\n", minggu, sesi->konteks->kabisat_detik); }

Sumber: opennet.ru

Tambah komentar