表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
コード・オブ・ザ・ワールド ~廃プログラマー、異世界で神のシステムを書き換える~  作者: ネオ・チー


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

30/36

第30話 インジェクション・アタック

異変は、翌日の昼に始まった。


大公宮の壁面に刻まれた文字列が——書き換わっていく。


最初に気づいたのはシェルだった。アーカイブスの中央図書塔で記録を調べていたシェルから、緊急の連絡が入った。


「中央データベースが攻撃を受けています。直ちに来てください」


俺たちが図書塔に駆けつけた時、壁面のコードは既に赤く染まっていた。



  [ALERT] INJECTION ATTACK DETECTED

  Target: Central Archive Database

  Type: SQL Injection - Code injection via external query

  Status: ACTIVE - Records being modified

  Affected records: 2,841 and counting



「SQLインジェクション——外部からのコード注入だ」


俺はデバッガーズ・アイで攻撃の全容を読み取った。


中央データベースに対して、外部から悪意あるクエリが大量に送り込まれている。正規のデータ操作に見せかけた改竄コード——入力値のサニタイズ(無害化処理)が不十分な箇所を突いた、古典的だが強力な攻撃手法だ。


「何が書き換えられている?」アリアが訊いた。


俺はコードを追った。改竄されているのは——歴史記録だった。


「過去の記録が書き換えられていく。特に——『英雄の伝承』に関する記述が、消されている」


シェルが顔色を変えた。


「誰かが——過去を消そうとしている」


「ヴァイラスだ」俺は断言した。「コードスタイルが一致する。ヴァイラスが自分の過去に関する記録を——消しにかかっている」



中央図書塔の最深部。データベースのコア区画。


壁面全体がコードで覆われた巨大な空間だった。天井まで届く棚に、無数の記録石が並んでいる。記録石の一つ一つが、データベースの「レコード」——歴史の一片だ。


その記録石が、次々と色を変えていた。青く安定していた光が、赤い点滅に変わっていく。改竄が進行している証だ。


「まずい——改竄速度が上がっている」


俺はデバッガーズ・アイで攻撃コードのパターンを分析した。


注入されているクエリは——巧妙だった。



  UPDATE world_history

  SET hero_record = NULL,

   hero_name = '[DELETED]',

   hero_achievement = '[DELETED]'

  WHERE era = 'version_0.x'

  AND record_type = 'hero_chronicle';

  -- Injected via unsanitized input at archive_gate_7



歴史テーブルの英雄関連レコードを、片っ端からNULLに書き換えている。名前を「墨消し」に、功績を「データ抹消」に。


「これを止めないと、英雄に関する記録が全て消える」


「マスター」メモリが言った。「攻撃の入口を特定しました。アーカイブ・ゲート7番——外部からの問い合わせを受け付ける窓口の一つです。入力チェックが甘い箇所があります」


「ゲートを閉じれば止まる?」


「一時的には。でも攻撃者は別のゲートから再侵入する可能性があります」


「根本的には、全ゲートの入力チェックを強化する必要がある」


俺が考えている間に、シェルが動いた。



シェルが手帳を閉じ——手を前に伸ばした。


その手から、淡い青い光が放たれた。


クエリ魔法。シェルの固有能力。情報の検索・取得・操作に特化した魔法体系。


だが今のシェルは——検索ではなく、防衛に使っていた。


「何をしている」俺が訊いた。


「SQLを以てSQLを制す」


シェルの声は静かだった。だが——いつもと違った。感情が乗っていた。


シェルが展開したのは、カウンタークエリだった。攻撃者と同じSQL言語で、防御用のクエリを構築している。



  -- COUNTERMEASURE: Isolate injected records

  BEGIN TRANSACTION;

   SELECT FROM world_history

   WHERE modified_by = 'EXTERNAL_INJECTION'

   AND modified_timestamp > '2024-01-01';

   -- Tag and quarantine

   UPDATE world_history

   SET quarantine_flag = TRUE

   WHERE modified_by = 'EXTERNAL_INJECTION';

  COMMIT;



注入されたコードを一行ずつ検出し、隔離フラグを立てている。改竄されたレコードを「隔離」して、それ以上の伝播を防ぐ。


「シェル——」


俺は見ていた。シェルの手が——震えていた。


いや、震えではない。力が入りすぎている。手が白くなるほど、拳を握っている。


「データは死なない」


シェルが呟いた。


声が——いつものクールなトーンから、外れていた。


「消えさせない」


感情だった。間違いなく——怒りだった。


シェルは「感情はノイズだ」と言ってきた。データの正確な記述と分析こそが価値だと信じてきた。だが今——記録が消されていくことに、シェルは怒っている。


「お前、今、本気で怒ってるな」


俺が言った。


シェルは答えなかった。黙ってカウンタークエリの構築を続けた。


それが答えだった。



しかし攻撃の規模は、シェル一人の手に余った。


カウンタークエリの速度と、注入コードの速度が拮抗している。シェルが一つ隔離するごとに、新しい注入が二つ入ってくる。


「追いつかない——」シェルが歯を食いしばった。


「俺が入る」


俺はデバッガーズ・アイを全開にした。


攻撃コードのパターンを読み、改竄されたレコードの源コードを直接修正していく。NULLに書き換えられた値を、バックアップログから復元する。


「ガルド!」


「おう!」


「物理的にゲートを守れ! 攻撃コードが物質化する可能性がある!」


「任せろ!」


ガルドが図書塔の通路に立ちはだかった。重い足音が床を震わせる。


案の定——注入コードの一部が実体化し始めた。文字列が凝固して、蛇のような形状のコード生物になる。細長い体に、コードが蠢いている。


ガルドの拳がそれを叩き潰した。


「アリア! 記録石を物理的に防御してくれ! 改竄される前に——」


「わかりました!」


アリアが条件分岐剣法を展開した。改竄コードが記録石に触れようとするたびに、剣の一閃が割り込む。「IF 外部コードが記録石に接触 THEN 斬撃で阻止」——そのアルゴリズムを、剣で実行している。


メモリが叫んだ。


「マスター! 古代のバックアップ・プロトコルを発見しました! 発動できます!」


「やれ!」


メモリの全身の回路模様が光った。


ナビゲーター・プログラムとしての権限が発動する。重要データを退避用の保護領域にコピーする——古代のバックアップ機能。



  [BACKUP PROTOCOL ACTIVATED]

  Navigator Program: MEMORY

  Authorization Level: Legacy Admin (Partial)

  Backing up critical records...

  Progress: 12% ... 34% ... 51% ...



データが次々と保護領域に退避されていく。


俺とシェルが改竄を食い止め、ガルドとアリアが物理的に防衛し、メモリがバックアップを走らせる。


五人の連携が——初めて、完全に噛み合った。



攻撃が止まったのは、三十分後だった。


唐突に——注入コードの流入が停止した。


ヴァイラスが手を引いたのか、それとも別の理由か。


俺たちは息を切らしていた。シェルが壁にもたれかかり、ガルドが汗を拭い、アリアが剣を鞘に収め、メモリが俺の隣にへたり込んだ。


「被害状況」俺が訊いた。


シェルが手帳を確認した。


「改竄されたレコード——四千二百件。うち、隔離できたもの——三千八百件。復旧不能——四百件前後。メモリのバックアップで重要データの大半は保護できましたが……一部の古代記録が永久に失われました」


「四百件……」


大公が現れた。老人の顔は蒼白だった。


「古代記録の中に——英雄の詳細な伝承があったはずだ。名前、出自、戦いの記録——それが」


「消されました」シェルが言った。「ヴァイラスの狙いは、まさにそこでした」


大公が拳を握り締めた。老いた手が白くなった。


「数百年分の記録が——一日で」


「大公」俺が言った。「残っているデータを守ります。全ゲートの入力チェックを強化しましょう。二度目の攻撃に備えて」


大公が頷いた。深い疲弊と、それでも折れない意志が、その目にあった。



攻撃の終わった中央図書塔で、俺はようやく息をついた。


終わった——そう思った。防衛は成功した。被害はあったが、最悪は免れた。


シェルが隔離データの整理を始めた。後処理だ。地味だが大事な工程。俺は壁にもたれかかり、目を閉じかけた。


「……桐島」


シェルの声のトーンが変わっていた。


俺は目を開けた。


「攻撃コードの残骸に——攻撃とは無関係な情報が混じっています」


「無関係?」


「攻撃コードのヘッダに、送信元のアドレスが暗号化されて埋め込まれていました。復号すると——座標が出ます」


嫌な予感がした。


「攻撃の発信源——ヴァイラスの『端末』がこの近くにいます」


俺は窓の外を見た。


空に源コードの断片が漂うアーカイブスの街並み。その向こう——南東の方角に、微かなノイズが走っている。


デバッガーズ・アイが捉えたのは、小さな、しかし確実な歪み。


終わっていなかった。


データの改竄はフェーズ1に過ぎない。


「来るぞ」


俺が立ち上がった瞬間——図書塔の壁が震えた。


フェーズ2——物理的な侵攻が、始まろうとしていた。



次回、第31話「フォークボム」——自己複製する端末プログラム。倒しても倒しても増殖する敵に、蓮はどう立ち向かうか。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ