第79話 サプライチェーン・アタック
```
[SYSTEM LOG - five-nation defense / refactoring day 3 / T+78:14:00]
> entity 01 (LEN): Lv5 / root / active / emotional amplitude 80%
> location: securia outer wall north sector (command base)
> CI/CD pipelines active: 5 nodes — STATUS DEGRADING
> upstream-tamper alert: TRIGGERED (signature mismatch detected)
> contamination spread: pipelines re-deploying poisoned patches
> companions: aria / guard / shell / memory / harsh
> internal trauma flag: PREVIOUS-LIFE memory leak (server room incident, 36h shift)
> bug_density (global counter): 94.93% → 95.41% (rising sharply)
> [STATUS] supply-chain attack in progress — phase 1
```
---
夜明けの一時間前、外壁の上で、シェルの補助具の一本が、ぴしり、と短く鳴った。
それまでの、規則正しい監視の音とは、別の質の音だった。前世の語彙で言えば、警報の前段の、その更に前段の、低い予兆音に似ていた。シェルが補助具の一本を、即座に俺のほうへ向けた。
「お前」シェルは短く告げた。「修正コードの署名が、合わない」
「合わない」俺は短く繰り返した。「どの修正コードが」
「直近の二十一件。データベルグ班から流れてきた、未知バグ修正のうち十二件。ネットワーク連合班から、七件。残り二件は、お前自身の昨夜のコミット分」
「俺の」
「お前の」シェルは平らに答えた。「お前が、昨夜、最後にコミットした、ふたつの修正パッチ。署名と本文の、銀色の濃度が、合っていない」
俺はLv5の指で、その二件のパッチを、空中に開いた。
開いた瞬間、薄い藍色の滲みが、銀色のはずの文字の節々から、にじみ出してきた。にじみは、一見、銀色のなかに溶けて、見分けがつきにくいものだった。だが、Lv5の解像度では、節々の銀色の下に、藍色のごく薄い斑点が、ぽつぽつと打ってあるのが、はっきり見えた。
「ヴァイラス」俺は呟いた。「俺の、コミット記録の中に、入った」
「入った」シェルが続けた。「昨夜のうちに、お前が書いたコードの上流の――署名を打つ手前の段階で、薄く藍色を混ぜている。混ぜたあと、署名はお前のものとして、そのまま走らせている」
「署名は、俺のものなのに、本文は、汚染されてる」
「本文が汚染されてる」
胸の中央の塊が、深く、しかし冷たく脈を打った。
その脈の上に、シェルのグラフの右上で、もう一本の警報が、立て続けに鳴った。
「五大王国の各班に、汚染されたパッチが、夜のあいだに、配信されている」シェルは短く告げた。「メモリの書のネットワーク経由で、もう、各地の現場に、流れた」
「流れた」
「流れた。俺たちが、配信網を、夜のあいだも止めずに、回し続けたからだ」
メモリが、書のページから、顔を上げた。その顔は、夜のあいだの当番で、薄く疲れていたが、目の奥には、いつもの落ち着いた光が、残っていた。だが、その光の縁が、いま、薄く震えた。
「マスター」メモリは短く言った。「私の書が、汚染を、運んだ」
「お前が運んだんじゃない」俺は短く答えた。「俺のコードに、汚染が、混じってた。書は、それを、忠実に運んだだけだ」
「ですが――」
「忠実だったお前を、責めるな。責めるなら、署名を打つ手前の俺の作業の、その守りの薄さを、責める」
メモリは、書のページの縁を、指で軽く撫でた。
シェルの補助具のグラフの、左下の隅で、カウンターの数字が、薄く揺れはじめた。
九十四・九十三。
九十五・〇二。
九十五・二一。
九十五・四十一。
数字が、夜明けの空気の中で、半刻ごとに、ひと目盛りずつ、上がっていく。
俺は、その数字を、Lv5の解像度で見た。膜の向こう側で、何かが、薄く動いた。
---
何かが、というよりも――
前世の記憶の、ぼやけた輪郭の、その一番奥にあったものが、動いた。
サーバルームの、白い蛍光灯の光。三十六時間目の、目の奥の鈍い痛み。手元のキーボードの、Enter キーの感触。コミットボタンを、押した瞬間の、自分の指の、わずかな迷い。配備が現場に流れたあとの、誰かの叫び声。電話の、低い震え。終電の、駅のホームの、夜の冷たさ。
「俺の、コードが」
呟きが、外壁の朝の空気の中に、薄く流れた。
「世界を、壊してる」
膜の向こうで、もう一段、何かが裂けた。
「マスター!」
書の縁を撫でていたメモリが、即座に、俺のほうを向いた。だが、その声を、別の声が、メモリの半歩手前で、遮った。
「レン!」
白い軽鎧の留め具の、最後の一個を、嵌め終わったアリアが、外壁の縁から、こちらに、まっすぐ歩いてきた。歩み寄り方が、いつものアリアの歩み方より、半歩、踏み込みが深かった。深さは、彼女が、状況の重みを、即座に、自分の脚の運びに変換した、その深さだった。
「レン」アリアは、俺の正面で、止まった。「あなたのミスじゃない」
「俺のコードが――」
「あなたが書いたコードに、敵が、後から、汚染を、混ぜた。それは敵の攻撃です。あなたのミスではない。私は、それを、はっきり言います」
胸の中央の塊が、深く一度、震えた。
膜の向こうの、サーバルームの白い蛍光灯の光が、薄く、引いた。
アリアの白い軽鎧の留め具の、夜明けの光に映る金属の点が、その光の代わりに、視界の中央に、はっきりと、戻ってきた。
「自分を責めないで」アリアは、低く、しかし揺らがない声で続けた。「責めるのは、戦いが終わったあと、もし必要があれば、その時に、私が一緒に、責任の所在を、整理します。今ではない。今、責めることは、敵の手助けをすることです」
「敵の、手助け」
「あなたが手を止めたら、その瞬間に、敵の手数が、ひとつ、増えます。あなたが揺れたまま動いたら、敵が、揺れの先を狙ってきます。あなたが揺れたまま立ち止まったら、その停止時間ぶん、世界の崩壊が、進みます」
アリアの白い軽鎧の手甲の指先が、俺の胸の中央の塊の、その表面に、薄く触れた。触れた指先は、冷たくも熱くもなかった。ただ、確かに、そこに、あった。
「揺れていい。でも、立て直して、動いて。動いている間に、私たちが、揺れを、隣で、押さえます」
俺は、彼女の指先の、その確かさを、Lv5の解像度で読んだ。指先の温度のコード。脈拍のコード。骨格の支えの角度のコード。三つが、互いに重なって、薄い銀色の網の形を作っていた。網は、決して大きくはなかった。だが、確かに、俺の胸の中央の塊の表面に、優しく、重なっていた。
ガルドが、赤い篭手の指で、俺の肩を、こん、と一度、叩いた。
「揺れたまま動くなって、おとといから、何度も言ってる」
「三度目だな」
「三度目だ」ガルドは短く笑った。「三度目になる前に、立て直せ。それが、塔の上で決めたことの、本当の意味だ」
俺は、長く、息を吐いた。
吐いた息の先で、北の地平線の藍色の濃度が、薄く、しかし確かに、薄くなった。膜の向こう側で、サーバルームの白い蛍光灯の光が、もう一段、引いた。引いたあとに残ったのは、外壁の朝の空気の、薄い銀色の透明だった。
「分かった」俺は短く頷いた。「立て直す」
---
「シェル。今すぐ、汚染されたパッチを、全部、現場から引き上げる」
「了解。引き上げの優先順位は」
「上流から下流の順だ。俺のコミット分、それからデータベルグ班、ネットワーク連合班。引き上げと同時に、引き上げた箇所のコードを、汚染前の状態に、巻き戻す」
「巻き戻しの先は」
「四十八時間前のスナップショット。あそこなら、まだ、汚染が入ってない」
シェルの補助具のグラフが、即座に、引き上げの動作を、組みはじめた。グラフの線が、五大王国の地理の上を、上流から下流の方向に、薄い銀色の糸で走った。糸の先で、二十一件の汚染パッチが、現場のコードから、一個ずつ、抜き取られていく。抜き取った跡には、四十八時間前のスナップショットからの、清潔なコードが、薄く再展開された。
「メモリ。書のネットワークを、一旦、止める」
「止めます」メモリは即座に頷いた。「汚染が、これ以上、配信されないように、各班との接続を、薄く絞ります」
「絞り方は」
「読み込み専用に、します。各班から、汚染検出の報告は、これまで通り上がります。ですが、こちらから新しいパッチを、各班に流すのは、一旦、止めます。流すかどうかは、毎回、私が、署名を二重に確認してから、許可します」
「賢い」俺は短く頷いた。「手動の扉を、もう一個、増やす。ガルドが昨日言った扉の、上流側にも、同じ扉を、もう一枚、足す」
ガルドが、赤い篭手の指で、空中の扉の絵を、軽く弾いた。
「罠の作法だな」
「罠の作法だ」
「手動の扉が、二枚に、増えたな」
「増えた」俺は頷いた。「自動化の速度は、落ちる。だが、汚染の流入は、確実に止まる。速度と安全の、釣り合いの取り直しだ」
シェルが補助具のグラフを、もう一本、空中に伸ばした。
「お前。汚染の浄化に、お前自身が集中する必要がある。汚染パターンの解析、清潔コードへの巻き戻し、上流側の署名守りの再構築。三つを、お前のLv5で同時にやれ。物理面の防衛は、こちらで持つ」
「持つ?」
「持つ」シェルは平らに答えた。「ヴァイラスは、上流を汚染しただけじゃない。汚染を起こしながら、北の地平線の藍色の濃度を、少しずつ高めている。物理面で、何かを送り込んでくる予兆だ。それを、お前に届く前に、止める」
「俺たちで止める」
ガルドが、赤い篭手の指で、自分の胸を、こん、と一度、叩いた。
「俺と、アリアと、シェルだ。物理面は、俺たち三人で持つ。お前は、コードに集中しろ。お前の手が、コードから離れた瞬間に、汚染が、五大王国に、もう一周、広がる。だから――離さないでいい」
アリアが、白い軽鎧の留め具の、最後の一個を、もう一度、確認した。確認の動作は、戦場に出るための、彼女の準備の合図だった。
「メモリは、書の扉の番」シェルが続けた。「ハーシュは、お前の半歩斜め後ろ。お前の身体の方の安全を、見る」
ハーシュが、肩の傾きを、深く一段、落とした。深さの中に、いつもの「動くなら俺も動く」の角度と、もう半分、「ここから動かない」の角度とが、同時に乗っていた。
俺は、四人を、Lv5の塊から見上げた。
「ありがとな」
「礼は仕事の後だ」ガルドが、赤い篭手で、俺の頭を、軽く小突いた。「仕事中の礼は、効率が悪い」
---
俺はLv5の指を、空中の自動修正パイプラインの設計図の、上流の側に伸ばした。
汚染されたパッチの、二十一件。
一件ずつ、Lv5の解像度で、開いていく。
藍色の斑点の位置を、特定する。
斑点の周囲の、銀色のコードを、薄く剥がす。
剥がした下から、汚染が、薄く煙のように立ち上る。
煙を、Lv5の指で、丁寧に、空気から分離する。
分離した煙を、シェルの補助具の中の「未知バグ収集箱」の、別の枠に、移す。
移したあとに残った清潔な銀色のコードを、四十八時間前のスナップショットと、二重照合する。
照合が一致したら、現場に、戻す。
一致しなかったら、もう一度、剥がす。
最初の一件で、半刻かかった。
二件目で、十五分。
三件目で、十分。
四件目から先は、八分ずつ。
俺の手が、コードの上で、走り続けた。
ガルドの赤い篭手が、外壁の縁で、北の方向から流れてくる物理面の何か――シェルが警告した「藍色の濃度の高まり」が現実の形になったもの――を、片端から、叩き落としていた。最初は、薄い影だった。影は、外壁の表面に届く手前で、ガルドの篭手に弾かれて、空中で、薄い藍色の煙になって消えた。煙が消えた跡に、新しい影が来た。新しい影は、影というよりも、四角い粒の塊だった。塊は、ピクセル化の集合体だった。塊の中には、薄く、人型の輪郭が、滲んでいた。
「汚染で生まれた、コラプテッドだ」シェルが短く判別した。「ヴァイラスの汚染汁から、自然発生したやつ。本物のモンスターじゃない。だが、当たれば、ピクセル化を伝染させる」
「面倒だな」ガルドが、赤い篭手の指を、握り直した。「だが、本物より、面倒は薄い」
アリアの白い軽鎧の、その手の細剣が、ガルドの隣で、薄い銀色の弧を、空中に切った。弧の先で、コラプテッドの輪郭が、条件分岐の刃の通り道の上で、二択の選択肢に、薄く分裂した。分裂した片方は、空中で、薄い銀色の粒となって消えた。残りの片方は、アリアの細剣の、二撃目で、別の選択肢に分かれて、消えた。
「来る数が、増えてます」アリアは、剣の柄を、握り直しながら、低く言った。「右斜め前、十二体。左の崖際、八体。空の上、薄い影が、四体」
「ぜんぶで二十四か」ガルドが、赤い篭手の指の関節を、こきり、と一度、鳴らした。「悪くねえ数字だ」
「悪くない、ですか」
「これくらいの数なら、俺の篭手の振り抜きの中に、収まる」ガルドは赤い篭手を、肩のあたりまで、ゆっくりと持ち上げた。「アリア、空の四体は、お前の細剣で頼む。崖際は、俺だ。右斜めの十二体は――」
「私が引き受ける」シェルが、平らに答えた。「補助具の観測線で、相手の藍色の濃度の重い順に並び替えてある。重いやつから、薄いやつへ、順に処理する」
シェルが補助具を、ふたつ同時に空中に展開した。一個目の補助具のグラフが、十二体のコラプテッドの輪郭を、薄い銀色の数字で、ひとつずつ番号を振った。二個目の補助具が、振った番号の上に、シェルのクエリの細い銀色の糸を、上から、絡めるように落とした。糸の絡まった先で、コラプテッドの内部の藍色の核が、外側の四角い粒の輪郭と、薄く分離されはじめた。
「分離した先は」ガルドが、赤い篭手で、外壁の縁を、こん、と一度、叩いた。
「お前の篭手の射程まで、運ぶ」シェルは短く答えた。「外側の粒の輪郭だけを、お前の前まで、運んでくる。中の藍色の核は、俺の補助具の中の、別枠に、隔離する」
「面倒見いいな、お前」
「面倒を見ない、と、お前の篭手が、藍色の核に直接触れて、お前の腕にも、ピクセル化が伝染する。面倒を見るのは、お前のためじゃない。お前の腕に伝染すると、レンの守りが、薄くなるからだ」
「素直じゃねえな」ガルドが、笑った。
ガルドの赤い篭手が、振り上がった。シェルの糸の先で、藍色の核を抜かれたコラプテッドの粒の塊が、ガルドの正面まで、薄く流れてきた。流れてきた塊の正面で、ガルドの赤い篭手の振り抜きが、空気を、薄く銀色に裂いた。塊が、ガルドの一撃の前で、四角い粒の集合体に戻り、空中で、薄く解けた。解けたあとの空気には、もう、ピクセル化の伝染を起こす藍色の濃度は、残っていなかった。
アリアの細剣の銀色の弧が、空の四体を、上から下へ、流れるように切り落とした。条件分岐の刃が、コラプテッドの薄い影の中で、二択を、三択に、三択を、四択に、刃を入れるたびに細かく分けていった。分けられた選択肢は、ひとつずつ、空気に解けて消えていく。最後の四体目を、アリアの剣の切っ先が、地面まで運び切った時、彼女の白い軽鎧の留め具の、夜明けの光に映る金属の点が、汗で薄く滲んでいた。
シェルの補助具のグラフが、その三人の動きを、即座に、データの線で結びはじめた。グラフの線が、ガルドの赤い篭手の振り抜きの先と、アリアの細剣の弧の終点と、シェルの補助具の警報の鳴る位置とを、薄い銀色の三角で繋いだ。三角は、組み戦闘の最小単位の、その形をしていた。
ハーシュが、俺の半歩斜め後ろで、紺色の長衣の中の二刀を、まだ、肩から下ろしていなかった。下ろさないのは、俺の身体に届く距離まで、何も来ていない、ということだった。来た時に、初めて、肩の傾きが、深くなる。
俺は、その四人の動きの輪郭を、視界の端に、薄く確認した。
そして、Lv5の指を、二十一件目の汚染パッチに、伸ばした。
---
二十一件目の浄化が終わったのは、太陽が真南に上がる、半刻手前だった。
カウンターの数字が、ようやく、上昇を止めた。
九十七・三十九。
九十四・九十三から、四ポイント近く、上がっていた。下げるには、汚染の煙の処理と、清潔コードの再展開の、両方を、全箇所で、もう一周、回す必要があった。一周には、丸一日かかる見込みだった。
俺は、Lv5の指を、設計図の上流の側に、もう一度、伸ばした。指の先で、署名を打つ手前の段階に、薄い銀色の二枚目の扉を、書き足した。扉の中央に、署名の二重確認の機構を、組み込んだ。
「これで、上流の薄さは、薄くなくなった」俺は短く言った。「ヴァイラスが、もう一度、同じ手で来ても、署名の段階で、止まる」
「次は、別の手で来るだろうな」シェルが、平らに答えた。
「来る」俺は頷いた。「来るたびに、扉を、増やす。扉が増えるたびに、自動化の速度は、ほんの少し落ちる。だが、安全の重みが、その分、増す」
胸の中央の塊が、深く、深く、脈を打った。
その脈の上で、俺は、長く息を吐いた。
「もう、守りだけじゃ、足りない」
アリアが、白い軽鎧の留め具の、最後の一個を、もう一度、確認した。
「ヴァイラスの拠点を、直接、攻める」
ガルドが、赤い篭手の指で、自分の喉を、軽く、撫でた。
「攻めるのか」
「攻める」俺は短く答えた。「外壁の上で、いつまでも、敵の球を、待っていられない。敵が球を投げる場所そのものに、こちらから、行く。敵が球を投げる手の、その源を、止める」
シェルの補助具のグラフが、即座に、世界地図を、空中に展開した。グラフの中央に、北の地平線の、もっと向こう――/dev/nullの、その奥の領域が、薄く、しかし確かに、輪郭を、結んだ。
「拠点の、座標」シェルが短く告げた。「/dev/nullの再強化版。バージョンアップされた墓場の、その最深部だ」
「そこに、行く」俺は北の地平線へ、目を上げた。「五大王国の、全員で」
アリアが、白い軽鎧の胸に、手を当てた。
「ロジカ王国に、戻りましょう」アリアは短く言った。「五大王国の代表団は、まだ、ロジカ王城に、滞在しています。作戦の立案には、彼ら全員の合意が、要ります」
「戻る」俺は頷いた。「セキュリアの外壁は、ここまでの組み立てで、今夜は持つ。残りの四箇所も、同じだ。サイクルは、若い魔法師たちが、回し続けてくれる」
セキュリア班の少女が、外壁の上から、駆け寄ってきた。手の中の記録板には、夜のあいだの汚染対応の手順が、薄い銀色で、新しい層となって、積み重なっていた。
「先生」少女は息を切らせていた。「ご出立、ですか」
「出立する」俺は短く頷いた。「ここの外壁は、お前たちで、回してくれ。新しい扉の組み方は、シェルが、書のネットワーク経由で、お前の班に、配信する」
「分かりました」少女は、頷いた。「先生」
「ん?」
「――ご無事で」
俺は、彼女の記録板に、Lv5の指で、薄い銀色の点を、ひとつ、書き足した。点は、彼女の班と、俺との、繋がりの目印だった。点が薄く光るたびに、彼女は、俺の現在地の、おおまかな方向を、知ることができる。彼女の班から、俺へ、何かを送るための、最小限の連絡路だった。
「無事じゃ、なかった時は」俺は短く言った。「点が、消える」
「先生」少女は、声を、低くした。
「消えない、ように、する」俺は短く答えた。「だが、消えた時の備えも、しておく」
少女は、点を、ぐっと、握った。指の先で、点は、薄く銀色に光ったまま、止まった。
---
```
[SYSTEM LOG - securia outer wall → logica capital / refactoring day 3 / T+88:30:00]
> entity 01 (LEN): Lv5 / root / active / emotional amplitude 80%
> supply-chain attack: NEUTRALIZED (21 poisoned patches purged)
> upstream defense layer: REINFORCED (dual-signature gate, manual approval)
> book-network: read-only mode (manual approval per push)
> physical-defense: aria + guard + shell triad — corrupted entities held off
> trauma flag: previous-life memory reframed (companion-supported reset)
> next phase: assault on virus stronghold (/dev/null 2.0)
> bug_density (global counter): 94.93% → 97.39% → holding (purge throughput catching up tomorrow)
> [STATUS] retreat to logica — offensive operation planning
```
第80話 大規模作戦




