2020年1月1日以降に「日付を誤認識」する不具合、Splunkが公開:「2000年問題」はまだまだ続く
Splunkは、マシンデータ分析プラットフォーム「Splunk」で1カ月以内に発生する恐れがある不具合について公表し、原因と対策を説明した。パッチを適用するだけで解決できるものの、2020年1月以降にパッチ適用が遅れると誤ったデータを蓄積してしまう。
Splunkは2019年11月27日(現地時間)、ITシステム運用管理のためのマシンデータ分析プラットフォーム「Splunk」で見つかった不具合の原因と対策について発表した。2020年に入ると同時に全製品で発生する恐れがある。特定の日付を過ぎると日付を誤認識して処理を誤るという点では「2000年問題」と同じパターンだといえる。
Splunkによると、今回公開したパッチを適用していないSplunkプラットフォームでは2種類の不具合が発生する。
- 2020年1月1日から、Splunkプラットフォームインスタンスは、日付に2桁の年を含むイベントのタイムスタンプを認識できなくなる。この基準を満たすデータに対して、不正確なタイムスタンプを付けてインデックスを作成してしまう
- 2020年9月30日午後12時26分39秒(UTC:協定世界時)から、Splunkプラットフォームインスタンスは、UNIX時間に基づくイベントの日付タイムスタンプを認識できなくなる。タイムスタンプデータの解析が不正確になるからだ
タイムスタンプを自動的に判別するように入力ソースを構成する一般的な設定を採っていると問題が発生し、次のような複数のトラブルが起きる。蓄積した各種ログデータをクエリに従って分析するというSplunkの魅力が半減してしまう。
- 入力データの不正確なタイムスタンピング
- 不正確なタイムスタンピングによるデータの不正確なロールオーバー
- データの不正確な保持
- 不正確なタイムスタンプでのデータ取り込みに起因する不正確な検索結果
問題が発生したら、Splunkプラットフォームによるデータの取り込み後にタイムスタンプを修正する方法はない。
2020年1月1日以降、パッチを適用していないSplunkプラットフォームインスタンスでデータを取り込んだ場合は、そのインスタンスにパッチを適用後、データの再取り込みが必要になる。
なぜ不具合が発生するのか
Splunkプラットフォームの入力プロセッサは、入力データのタイムスタンプを正確に判別するために、「datetime.xml」ファイルを使う。このファイルは正規表現を使って、入力データから多様なタイプの日付とタイムスタンプを抽出する。
パッチを適用していないSplunkプラットフォームインスタンスは、このファイルによって、2019年12月31日まで、「19」で始まる2桁の年データを抽出する。2020年1月1日からは、入力データの年のタイムスタンプが誤っていると判断してしまう。その結果、誤解釈した日付のタイムスタンプを追加してしまう。
ユーザーはどのように対応すればよいのか
Splunk Cloudの顧客が使用するクラウド上のSplunkプラットフォームは課題が少ない。不具合が自動的に修正されるからだ。なお、アップグレードを実行する際に、Splunkのサポート担当者がSplunk Cloudの顧客にアドバイスを行う。これは重要なアップグレードであるため、顧客が延期することはできない。
Splunkプラットフォームをオンプレミスで使っている顧客は、次の対策のいずれかを実行する必要がある。なお、オンプレミス対応をしなければならない顧客には、Splunk Cloudインスタンスにデータを送信するフォワーダーを使っている場合も含まれる。
- datetime.xmlのアップデート版をダウンロードし、各Splunkプラットフォームインスタンスに適用する
- 不具合のあるdatetime.xmlを一時的に修正版に置き換えるアプリをダウンロードし、デプロイする
- Splunkプラットフォームインスタンス上の既存のdatetime.xmlに変更を加える
- Splunkプラットフォームインスタンスを、datetime.xmlのアップデート版を含むバージョンにアップグレードする
datetime.xmlの修正内容を次に示す。4種類のコードのうち、上側が修正すべき部分、下側が対策を取ったコードだ。
この置換結果を見ると、年データの誤認識という問題を恒久的に解決する対策ではないことが分かる。今回の問題を10年間延期するだけだからだ。
なお、2000年問題の対策においても問題が起きる年を後ろにずらす対応は少なくなかった。10年という対応期間があれば、より良い対策を取る余裕も生まれるだろう。
<text><![CDATA[(20\d\d|19\d\d|[901]\d(?!\d))]]></text> <text><![CDATA[(20\d\d|19\d\d|[9012]\d(?!\d))]]></text>
<text><![CDATA[(?:^|source::).*?(?<!\d|\d\.|-)(?:20)?([901]\d)(0\d|1[012])([012]\d|3[01])(?!\d|-| {2,})]]></text> <text><![CDATA[(?:^|source::).*?(?<!\d|\d\.|-)(?:20)?([9012]\d)(0\d|1[012])([012]\d|3[01])(?!\d|-| {2,})]]></text>
<text><![CDATA[(?:^|source::).*?(?<!\d|\d\.)(0\d|1[012])([012]\d|3[01])(?:20)?([901]\d)(?!\d| {2,})]]></text> <text><![CDATA[(?:^|source::).*?(?<!\d|\d\.)(0\d|1[012])([012]\d|3[01])(?:20)?([9012]\d)(?!\d| {2,})]]></text>
<text><![CDATA[((?<=^|[\s#,"=\(\[\|\{])(?:1[012345]|9)\d{8}|^@[\da-fA-F]{16,24})(?:\.?(\d{1,6}))?(?![\d\(])]]></text> <text><![CDATA[((?<=^|[\s#,"=\(\[\|\{])(?:1[0123456]|9)\d{8}|^@[\da-fA-F]{16,24})(?:\.?(\d{1,6}))?(?![\d\(])]]></text>
どのSplunkで問題が起こるのか
今回の不具合は、どのOSで動作しているかにかかわらず、パッチを適用していない全タイプのSplunkプラットフォームインスタンスに影響する。
- Splunk Cloud
- Splunk Light
- Splunk Enterprise
インデクサー(クラスタ化されているかどうかを問わない)
ヘビーフォワーダー
サーチヘッド(クラスタ化されているかどうかを問わない)
サーチヘッドデプロイヤー
デプロイメントサーバ
クラスタマスター
ライセンスマスター - 次の条件を満たすSplunkユニバーサルフォワーダー
props.confのINDEXED_EXTRACTIONSを使って、CSVやXML、JSONファイルのような構造化データを処理するように構成されている場合
props.confのforce_local_processing設定を使って、データをローカルで処理するように構成されている場合
モニター入力で構成されていて、その入力が未知のファイルタイプに遭遇した場合
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
セキュリティが目指す高度な自動化の方向が見えた
今回は、2019年5月8〜10日に開催された「第16回情報セキュリティExpo」の展示会場から、サイバーセキュリティの新しいトレンドを見据えた製品を幾つかピックアップした。APIのセキュリティを支援する製品や、人手が足りない現場を助ける高度な自動化ツール、DNSにアクセスした段階で脅威を取り除くソリューションなどが目立った。日清食品グループ、リクルートテクノロジーズ、LINEは運用管理の現場をどう変えたのか
いま運用管理者には「ビジネスへの寄与」という新しい価値が強く求められている。だが、市場やビジネス側の要請に、柔軟かつスピーディーに応えようとしても、目前には複雑化、大規模化したインフラと、日々の煩雑な業務が立ちはだかる。どうすれば「ビジネスへの寄与」を果たすことができるのか。必ずしもデータベースに送られるわけではない「ログ」「センサーデータ」は、どこでどのように処理されるのか?
ITの高度化に伴い、今、データ量が爆発的に増大しています。そのデータは、必ずしもデータベースに送られるわけではありません。今回は、IoTやセキュリティ対策の需要増を背景に、大量のログやセンサーデータがどのように扱われるか、最近の気になる動きを確認します。