The 2038 bug refers to a known issue with how millions of systems store and calculate dates and times. このバグにより、日付や時刻が正しく表示されなくなることが予想されます starting January 19、 2038。
「日付が間違っているの?」と、心の中で思われているかもしれませんね。 タイミングが悪かったのでしょうか? 「だから何だ!」 しかし、定期的な振込や支払いを処理する銀行のデータベースに、誤った日付が登録されていた場合はどうなるのでしょうか? あるいは、サーバーの時刻設定が間違っているために、ウェブサイトのSSL証明書の有効期限が切れてしまい、訪問者がセキュリティ上のリスクにさらされる可能性はないでしょうか?
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.
実際、 2024 年は閏年であるため、システムにおける閏年の処理に関する問題と、間もなく到来する2038 bug to 年との間には多くの共通点が見出せます。これにより、日付や時刻の計算が誤る原因や、その潜在的な影響について、より深く理解することができるでしょう。
この「 2038 bug is 」は、単なる仮定のシナリオではなく、組み込みシステムやデバイス、モノのインターネット(IoT)デバイス、オペレーティングシステム、データベース、サーバー、ネットワーク、アプリケーション、Webサービスなど、幅広いシステムに影響を及ぼす可能性のある現実的な脅威です。 この記事では、「 2038 bug is」についてより深く理解していただくことを目的としています。また、近い将来に重大な問題が発生するのを防ぐために、今日から実践できる実例やベストプラクティスもいくつかご紹介します。
まず、システムにおける閏年の計算時に発生しうる類似の問題について簡単に概説し、デバイスセキュリティにとってなぜそれが重要なのかという、より複雑な「 2038 bug and 」を理解するための基礎を築いていきます。
閏年が日付や時刻の計算について教えてくれること
2024年には、世界ではめったにない出来事、すなわち閏年が訪れます。 つまり、2月は 28日のうち 29 days instead 日となり、カレンダーには1日分が追加されることになります……そして、一部のソフトウェアやハードウェアシステムでは、説明のつかない1日が存在することになります。
それはなぜでしょうか? 多くのレガシーシステムには、閏年の処理ロジックが過度に単純化されているものがあり、その結果、システムが 2月28日 から3月1日へと誤ってスキップしてしまうことがあります。これにより、日付や時刻の計算に不具合が生じる可能性があります。
ある年が閏年であるかどうかを判断するための一般的なルールは、その年が4で割り切れるかどうかです。 ただし、この計算には通常考慮されていない例外が他にもあり、それによって計算結果が不正確になる可能性があります。具体的には、年は4で割り切れる必要があります()。ただし、の場合を除きます(その年は 100でも割り切れる場合)。また、 の場合を除きます( 、その年は400でも割り切れる場合)。
例として the year 2100 を取り上げてみましょう。 2100 は4で割り切れるため、一部のシステムでは誤って閏年であると判断してしまう可能性があります。 残りの閏年の計算ロジックを用いると、 2100 は100で割り切れますが、 400では割り切れません。 つまり、 2100 は実際には であり、 ではありません。閏年です。
4年に1日飛ばすというのは些細なことのように思えるかもしれませんが、このような日付や時刻の計算に関する問題は、システムやその利用者にとって深刻な影響を及ぼす可能性があります。
日付や時刻の計算に関する問題の、もうひとつ、より不吉な例として、間もなく到来する「 2038 bug」が挙げられます。これは、コンピュータやデバイスに深刻な問題を引き起こす可能性があります。 では、具体的にどのような状況なのか、またなぜそうなっているのかについて、さらに詳しく見ていきましょう。
「 2038 bug」とは何ですか?
「 2038 bug」は、「Unixミレニアムバグ」または「 Y2K38」とも呼ばれ、一部のシステムが「タイムスタンプ」と呼ばれる数値を用いて日付や時刻の値を保存・表現する方法に起因する問題です。
タイムスタンプとは、 1070年1月1日 から経過した秒数を指し、これは「Unix エポック」と呼ばれています。 例えば、 the timestamp for January 1、 2024、 01:00:00 UTC、 is 1704070800、これはエポックから means 1704070800 秒が経過したことを示しています。
ただし、一部のシステムでは、Unixオペレーティングシステムおよびその派生システムにおいて、タイムスタンプを格納するために「 a signed 32-bit integer to 」と呼ばれるデータ型が使用されています。A signed 32-bit integer can では、-2147483648から2147483647までの数値のみを格納します。 つまり、これらのシステムが処理できる最大のタイムスタンプは 2147483647であり、これは 03:14:07(UTC)における to January 19、 2038に相当します。 その後、タイムスタンプがオーバーフローして負の数となり、その結果、日付と時刻が不正確になってしまいます。
例えば、 the timestamp for January 20、 2038は、Unixタイムでは 2147483648となります。 これはUnix形式の有効なタイムスタンプではないため、オーバーフローが発生し、-2147483648となります。これは、 1901年12月13日に相当し、 20:45:52のUTC時刻に相当します。 こちらは the year 2038 bugです。
2038 バグの影響を受けるシステムの種類
多くの人々は、このバグが、日付や時刻の保存に32ビットの符号付き整数に依存しているシステムに深刻な問題を引き起こし、クラッシュ、エラー、データ損失など、機能やセキュリティに影響を及ぼす可能性のある、不正確かつ予測不可能な動作を招くと予想しています。
では、Unixベースのタイムスタンプを使用して日付や時刻を保存していることが知られているシステムのうち、 2038 バグの影響を受ける可能性があるものについて見ていきましょう:
- データベース:リレーショナルデータベースやNoSQLデータベースなど、さまざまな種類のデータベース
- C言語プログラム:C言語プログラム、およびC++やPHPなど、C言語を基盤とする言語で記述されたその他のプログラム
- 組み込みシステムおよびデバイス:医療機器、発電所などの施設向け産業用制御システム、交通システム、電子安定性制御(ESC)やトラクションコントロール(TCS)を監視する車載コンピュータシステムを搭載した自動車、ルーター、スイッチ、センサー、センサー、およびスマート家電などのIoTデバイス
- の対応OS:Windows、Linux、およびAndroidや携帯電話向けのiOSなどのLinuxベースのOS
「 2038 年問題」の最近の事例
一部のシステムでは、すでに 2038 bug in の影響がさまざまな形で現れ始めています。
例えば、開発者は、スケジュール設定、有効期限、暗号化などの目的で、はるか先の将来の日付を使用することがあります。具体的には、9999-12-31 といった日付をプレースホルダーとして使用し、無期限または無限の期間を表す場合があります。 しかし、この日付はおよそ 253402236000 に相当し、Unixタイム形式の最大値を大幅に超えています。
また、テストやシミュレーションの目的で、あるいは紀元前に発生した歴史的・地質学的出来事を表現するために、 2038 を超える将来の日付を使用する場合もあります。 これらすべてのシナリオにおいて、年号「 2038 problem can 」は誤った出力やエラー、信頼性の低い結果を引き起こします。
以下に、Unixタイムスタンプの使用に関連して、すでに同様の問題が発生したシステムの実際の事例をいくつかご紹介します:
- でサーバーがクラッシュ: 2006年5月13日、 AOLserver、AOLのオープンソースWebサーバー (新しいタブで開きます)は、データベースのリクエストタイムアウトを10億秒(約 32 years in 年先)に設定したため、クラッシュしました。
- 予期せぬダウンタイム: ある大手専門小売業者は、認証局(CA)の障害により、2つの日付(notBefore:CAが無効になる前の日付、およびnotAfter:有効期限)の計算に誤りが生じたため、VPNハードウェアの障害に見舞われました。 (新しいタブで開きます) ネットワークタイムプロトコル(NTP)に関するさらなる問題が発生したため、CAは時刻が 2037であると認識しました。また、CAは証明書の有効期間を10年と設定して署名しているため、有効期限を計算する際に 2038 の問題が発生しました。
- システムがを破る: 2014、『Gangnam Style』のミュージックビデオは、 (新しいタブで開きます) において、再生回数が hit 2,147,483,647 に達した際、記録とYouTubeの両方の記録を破りました。この再生回数は、Unixシステムが記録できる最大値でもあるためです。
2038 bugを防ぐためのヒント
2038 bug requires の修正には、システム内およびそれと相互作用するすべてのコードにおいて、32ビット符号付き整数データ型のアップグレード、削除、または置換が必要となり、これには多大なコストと時間がかかる可能性があります。 しかし、今から以下の予防措置を講じてシステム、アプリケーション、およびデバイスを更新しておけば、1月19日が来た際に大きな違いが生まれる可能性があります:
- 日付と時刻の値を保存・表現するために64ビット形式の を利用することで、取り得る値の範囲が数十億年にまで広がります
- を使用して、ISO 8601 形式などのさまざまな日付および時刻の形式で値を保存・表示する
- に対して、日付および時刻に関する潜在的な問題についてテストおよび監査を行い、 2038 バグの影響を受ける可能性のある、古くなったコード、ライブラリ、またはソフトウェアを特定します
- のコード、ソフトウェア、およびデバイスを定期的に更新・修正し、最新の規格や技術に対応できるようにします
Many companies are already aware of the year 2038 problem and taking proactive steps to update their systems to use 64-bit data types or alternative representations for timestamps and date values. 例えば、 Appleは、macOS 2003 (新しいタブで開きます) から、64ビット対応の機能を組み込み始めました。これにより、Macユーザーが issues with dates after January 2038に遭遇しないよう確保するのに役立ちます。
「Can the year 2038 problem be 」は解けましたか?
2038 bug and と2024 の両方の閏年は、日付や時刻の計算が単なる些細なことではなく、コードやソフトウェア開発において複雑かつ極めて重要な側面であることを改めて思い起こさせてくれます。 The good news is the year 2038 problem is not the inevitable apocalypse some articles paint it to be if proactive measures are taken.
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.
ご自身の環境における「 2038 bug in 」への取り組みを、どのように始めればよいでしょうか? その方法の一つは、資産とそのソフトウェアの状態を包括的に把握することです。 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.
2038 のバグに対処するためのデータ型やコードを変更すると、エラーや互換性の問題、パフォーマンスの低下を招く可能性があるため、デバイスをリアルタイムで可視化することで、潜在的な脆弱性やエンドポイントセキュリティのリスクを効果的に防止することができます。 (新しいタブで開きます)。
Taniumのプラットフォームが、 のエンドポイント管理を簡素化するように設計されている点についてご覧ください。 (新しいタブで開きます) また、このプラットフォームは、設定の適用を自動化したり、脅威に迅速に対応したり、従業員が一般的な問題を自ら修正できるようにしたりするなど、業務を効率化すると同時にユーザーの自律性を高める機能を提供しており、これらすべてを1つのソリューションで実現しています。
さらに、当社の「」自律型エンドポイント管理(AEM) (新しいタブで開きます)への取り組みにより、Tanium XEMプラットフォームにAIを活用した機能をさらに統合し、安全性、セキュリティ、スケーラビリティを重視して設計された自動化の推奨事項や、それに関連する高度に調整可能なスマートアクションを提供してまいります。

