第二話 公開されたプログラム
第二話 公開されたプログラム
翌朝。
私は、目覚まし時計を止めると、枕元のスマートフォンを手に取った。
昨日、使えなかったポイントサービス。
復旧しているかもしれない。
そう思ってアプリを開いた。
『ただいまメンテナンス中です』
変わっていなかった。
「まだか……」
独り言をつぶやき、アプリを閉じる。
昨日は、たまたま作業が長引いているのだろうと思った。
だが、翌朝になっても復旧していないとなると、少し話が違ってくる。
私は、サービスのお知らせを確認した。
障害についてのお詫びは掲載されている。
しかし、具体的な原因も、復旧予定時刻もわからない。
念のため、クーポンサイトも開いてみた。
こちらも停止したままだった。
昨日、仕事で調べようとした企業の公式サイトも確認する。
やはり、メンテナンス中。
私はスマートフォンを見つめた。
まさか、三つとも同じ理由なのだろうか。
いや、そんなことは、まだわからない。
それぞれの企業が、別々の理由でシステムを止めている可能性だってある。
それでも、気にならずにはいられなかった。
*
午前八時四十分。
都内のセキュリティ企業で、技術者の佐伯は、出勤するなり昨日の調査記録を開いた。
昨夜、帰宅する前に確認したアクセス履歴。
通常とは異なるリクエストが、複数の時刻に記録されていた。
彼は、関連するログを並べ、ひとつずつ比較した。
アクセス元は同じではない。
通信の間隔も、完全には一致しない。
だが、送信されたリクエストには、気になる共通点があった。
佐伯は、画面を切り替えた。
セキュリティ情報を共有する公開コミュニティ。
脆弱性に関する技術的な議論が行われ、修正方法や検証結果が公開される場所だった。
そこに、新しい投稿があった。
投稿には、ソフトウェアの脆弱性に関する説明と、動作を検証するためのコードが添付されていた。
佐伯は、投稿の公開時刻を確認した。
さらに、コードの内容を調べる。
これは、単なる説明用のサンプルなのか。
それとも、実際のシステムに対して悪用できるものなのか。
慎重に読み進めるうちに、彼の表情が変わった。
「……公開したのか」
そのコードは、一定の条件を満たすシステムに対して、脆弱性を突くために利用される可能性があった。
ただし、コードが公開されたという事実だけで、実際の攻撃が行われたことにはならない。
また、脆弱性が存在するすべてのシステムが、同じ条件で影響を受けるわけでもない。
佐伯は、公開されたコードと、手元にあるアクセス履歴を比較した。
共通点はある。
だが、現時点で、これらのアクセスがすべて同じコードによって実行されたと断定することはできなかった。
彼は、投稿の内容を記録し、調査チームに共有した。
「公開されたコードが、実際の攻撃に使われている可能性があります」
短いメッセージを送る。
返事は、すぐに届いた。
『根拠は?』
「コードの動作と、確認したリクエストに共通する特徴があります。ただし、まだ一致を確認している段階です」
『了解。検証環境で確認しよう。実際のサービスに対して試すのは避けてくれ』
佐伯は、返信を読み、うなずいた。
まずは、安全な環境でコードの挙動を調べる。
どの条件で脆弱性が発生するのか。
どのような痕跡が残るのか。
そして、攻撃を受けた場合に、何を確認すればよいのか。
必要なのは、憶測ではなく、確かな証拠だった。
*
午前十時。
調査チームの会議が始まった。
画面には、公開されたコードの概要と、確認済みのアクセス履歴が表示されている。
「このコードを公開した人物が、実際の攻撃者だと考えていいんですか」
若い担当者が尋ねた。
佐伯は首を横に振った。
「まだ、そこまでは言えない」
「でも、コードが公開されているんですよね」
「そうだ。だが、公開した人間と、それを使って攻撃した人間が同じとは限らない」
佐伯は、画面の一部を指した。
「脆弱性の検証を目的にコードを公開する人間もいる。危険性を警告するために、再現方法を示す場合もある。一方で、公開されたコードを悪用する人間もいる」
「つまり……」
「コードの公開者、実際に攻撃を実行した者、侵入後に何かをした者。それぞれを区別して調べる必要がある」
会議室が静かになった。
「それに、公開されたコードは、公開した人間が削除したところで、すべて消えるとは限らない」
佐伯は続けた。
「誰かがすでに保存しているかもしれない。別の場所に転載されているかもしれない。改変したものが出回っている可能性だってある」
コードが公開された時点で、作者がその後の利用を完全に管理することは難しくなる。
それが、今回の調査を複雑にしていた。
「では、公開を止めれば、解決するわけではないんですね」
「そういうことだ」
佐伯は、画面を切り替えた。
「今、優先すべきなのは、実際にどんな攻撃が起きているのかを確認することだ。影響を受けるシステムを調べ、必要な修正を進める。侵入の痕跡があれば、その範囲も確認する」
「すでに被害が出ているサイトは?」
「個別に調べるしかない。停止しているという情報だけでは、原因まではわからないからな」
佐伯は、そう言って、手元の資料に目を落とした。
まだ、わからないことが多すぎた。
*
正午。
私は、昼休みに入ると、再びスマートフォンを開いた。
ポイントサービスは、まだ停止していた。
クーポンサイトも同じだった。
仕方なく、別の方法で買い物を済ませた。
昨日と同じように、使えないこと自体は、何とかなる。
けれど、いつまで続くのだろう。
私は、サービスの公式アカウントを確認した。
新しいお知らせが出ていた。
システムの安全性を確認するため、メンテナンスを継続しているという。
復旧時刻は、未定。
私は、画面を閉じた。
安全性を確認しているのなら、仕方がない。
無理に再開して、個人情報が漏れたり、ポイントが消えたりするほうが困る。
そう思う一方で、使えるようになる日がわからないことには、やはり不便を感じた。
私たち利用者には、待つことしかできないのだろうか。
*
午後二時。
佐伯のもとに、新しい報告が届いた。
別の組織でも、関連する可能性のあるアクセスが確認されたという。
ただし、相手のシステム構成も、脆弱性の有無も、まだ詳しくはわからない。
佐伯は、報告を読み直した。
ひとつのシステムで異常が見つかる。
別の場所でも、似た特徴が見つかる。
それぞれの原因が同じなのか、偶然なのか。
確かめなければならないことは、増えていた。
彼は、調査チームに連絡した。
「関連する可能性がある事例が増えています。各事例の原因を確認しながら、共通点を調べましょう」
返事が届く。
『了解。確認できた事実と、未確認の推測は分けて記録します』
佐伯は、モニターに向き直った。
公開されたコードは、画面の中にある。
それは、ただの文字列にすぎない。
しかし、その文字列が何を引き起こすのか。
どこで、誰が使うのか。
どれほどのシステムが影響を受けるのか。
まだ、わからなかった。
*
夜。
帰宅した私は、夕食を済ませてから、もう一度スマートフォンを手に取った。
ポイントサービスの画面を開く。
『メンテナンス中』
クーポンサイトも、同じだった。
企業の公式サイトは、昨日と変わらない表示を出していた。
私は、ニュースを検索した。
サイバー攻撃に関する記事が、いくつか見つかった。
脆弱性。
攻撃プログラム。
システムの安全性。
専門用語が並んでいる。
記事を読んでも、自分が利用しているサービスが、その攻撃を受けているのかどうかはわからなかった。
停止の原因が同じなのかさえ、確かめられない。
けれど、ひとつだけ、はっきりしていることがあった。
昨日まで使えていたサービスが、今日も使えない。
そして、明日になれば使えるという保証もない。
私は、スマートフォンを伏せた。
画面の中で何が起きているのか、利用者には見えない。
公開されたコードが、どこで、どのように使われているのかもわからない。
わからないまま、日常だけが不便になっていく。
その夜、佐伯のモニターには、新しいアクセス記録が追加されていた。
彼は、その記録を開いた。
そして、時刻を確認した。
調査は、まだ終わっていない。
むしろ、始まったばかりだった。




