2021 年 10 月 24 日の日曜日、時間データの処理に gpsd を利用するアプリケーションを使用している人は、1,024 週間 (19.6 年前) を過去に生きていることに気づくかもしれません。
時計を 2002 年 3 月まで巻き戻す gpsd のバグが、今週末に発生する見込みです。
このプログラミングミスは2021年7月24日に特定され、2年前に書かれた誤ったコードコミットはその後修正されました。あとは、gpsdを導入しているすべてのアプリケーションとデバイスにパッチが適用されていることを確認するだけです。
ネットワーク タイム プロトコル (NTP) は、精度に基づいて評価された階層的なサーバー セットを使用してデバイスとサービスが正確な時間を維持する方法を提供します。「stratum 0」は最も正確な時間ソースを表します。
Gpsdは、全地球測位システム(GPS)、全地球航法衛星システム(GNSS)、および自動識別システム(AIS)の送信元からのデータを、クライアントアプリケーションに適した共通フォーマットに変換するサービスデーモンです。オペレーティングシステムで使用されるNTPデーモンであるntpdにクロック情報を提供し、デバイスのシステムクロックをGPS/GNSS/AIS受信機から提供される時刻と同期させるために使用されます。GPS衛星は複数の原子時計に依存しているため、時刻データは非常に正確です。
Gpsdは広く利用されています。Kismet、GpsDrive、gpeGPS、roadmap、roadnav、navit、viking、tangogps、foxtrot、obdgpslogger、geohist、LiveGPS、geoclue、qlandkartegt、gpredict、OpenCPN、gpsd-navigator、gpsd-ais-viewer、Firefoxなどのアプリケーションに実装されています。
Android、Linux、macOS、その他のUnix系OSで利用可能です。gpsdのウェブサイトによると、このソフトウェアはUAV、ロボット潜水艦、自動運転車などのモバイル組み込みシステム、海洋航行システムや軍事用IFF(敵味方識別)システムで使用されるアプリケーションに搭載されています。
GPS 衛星は、1980 年 1 月 5 日から経過した週数を記録しています。そして、その週番号を 0 から 1023 までの値を表す 10 ビットの符号なし整数として放送します。つまり、1024 週、つまり 19.6 年ごとに、システムは切り替わります。
この現象が最初に発生したのは、1999年8月21日(土)の終わりで、2回目は2019年4月6日(土)の終わりでした。3回目のGPS週ロールオーバーは2038年11月20日(土)まで発生予定ではありませんが、将来のうるう秒を見越した整合性チェックルーチンに関連するgpsdのバグにより、その土曜日が終了し日曜日が始まるとGPS週番号がリセットされます。
gpsdのメンテナーであるゲイリー・ミラー氏は、このエラーは単純な計算ミスであったことを認めました。このバグは2019年末に発生し、バージョン3.20、3.21、3.22に存在します。修正を含む最新の公式リリースは、2021年9月9日の3.23.1です。
様々なLinuxディストリビューションのメンテナーは、このバグが「真のY2Kパニック」を引き起こす可能性があることを懸念し、パッチを適用しました。DebianとUbuntuは修正プログラムをリリースしました。
ゼロから100
このパッチは Debian によって 3.22 シリーズにバックポートされていると、ミラー氏はThe Register への電子メールで語った。
このバグを修正しないことで問題が発生する可能性について尋ねられたミラー氏は、「使用しているGPS/GNSS受信機の種類とその設定によって、発生率は0%か100%になります。『標準』NMEAを出力するように設定されているデバイスは影響を受けません。u-bloxのような、バイナリメッセージモードで動作するデバイスは影響を受けます」と答えました。
- マイクロソフトは、オフィスの従業員が管理者の資格情報を要求したことで、Windows でさらに印刷問題が発生したことを認めた。
- AMDファンの皆様、残念なお知らせです。今週のWindows 11アップデートではパフォーマンスの問題は改善されませんでした(悪化しているかもしれません)。
- マイクロソフトのパッチ火曜日バグ収穫祭が街にやってくる
- ブリュードッグはまあまあのビールを造っているかもしれないが、そのセキュリティは最悪だ。欠陥によって誰でも無料でビールを飲めるようになった
引退したミラー氏は、レジスター紙との電話インタビューで、数独をやるよりも面白いからgpsdを保守していると語った。とはいえ、彼はプロジェクトへの支援、特にテストに使えるGPS機器を歓迎している。
「数ヶ月前、ある人物が自分の会社のGPSシミュレータを使ってこのバグを発見したんです。自分の会社にもそんな機器があればいいのに。でも、ほとんどのGNSSメーカーはGPSを無視するんです。たとえ彼らの製品にバグが見つかってもね。」
GPSキットメーカーのマインベルグ社にGPSdのサポートを認知するよう求めたミラー氏は、自分が管理するソフトウェアを実際に誰が使っているのかは不明だと述べた。「多くの軍事関連機器で使われていることは確かです」とミラー氏は述べ、「携帯型」あるいは「マンパック型」の無線機を例に挙げた。「少なくとも1つのロケットシステムに搭載されていることは知っています。戦車や輸送トラック、ダイバーズウォッチにも搭載されていると聞いています」
多くの軍事施設でそれが使われていることは事実です
しかし、これらのシステムのうち、どれが悪影響を受けるのか、あるいは影響を受けるのかを判断するのは困難です。問題のコミットより前にリリースされたソフトウェアのバージョン3.19以前であれば、問題ないはずです。そのため、長年ソフトウェアを更新していないメーカーは、無傷で済むかもしれません。
「不意打ちを食らう可能性があるのは、GPSネットワークタイムプロトコルクライアントを立ち上げて2年ごとに確認するような人たちです。これはかなり多いですね」とミラー氏は述べた。「どれくらい多いかは分かりませんが…2年前にアップデートされたNTPアプライアンスが、24日になると全て機能しなくなるケースが出てくるでしょう。」
ミラー氏は、金融機関もコンプライアンス問題に直面する可能性があると指摘した。法律により、すべての市場取引には正確なタイムスタンプが付与されなければならないとミラー氏は述べた。もし誰かが間違ったGPS NTPタイムサーバーを購入し、それを証券会社に設置すれば、事態は悪化する可能性があるとミラー氏は述べた。
「問題は起こるだろう」とミラー氏は言った。「何人かは不意打ちを食らうだろうし、そのうちの何人かは私に八つ当たりするだろう。それは私のミスだ」
人生は芸術を模倣する… 出典:ランドール・マンロー/XKCD。許可を得て使用
ミラー氏はメールに、ソフトウェア開発者の間で広く知られている昨年のXKCDコミックへのリンクを添付していた。そこには、「あらゆる現代のデジタルインフラ」を表す複雑なブロックの塔が描かれており、その塔を支える脆い柱には「ネブラスカ州の無名の人物が2003年から感謝されることなく維持してきたプロジェクト」と記されている。
「そうだな、俺はネブラスカ出身だ」とミラーは言った。「正確にはオマハ出身だ。」®