Case 004: kill -9
あの痛みは、どう考えてもおかしかった。
毒蜥蜴と戦った日から、数日が経った。
俺は宿のベッドで天井を眺めながら、あの時の感覚を思い返していた。
猛毒を受けた瞬間、腕が焼けるような痛みに襲われた。
それは「痛い」という情報が脳に伝えられた、という生易しいものではなかった。
実際に、肉が焼けていた。
そして神経が悲鳴を上げていた。
「……VRゲームで、あんな痛みがあるか?」
普通のVRゲームなら、痛覚はせいぜい「軽い刺激」程度に抑えられる。
プレイヤーの安全のために、本物の痛みを再現することは禁止されているはずだ。
だが、あの時の痛みは違った。
本物だった。
「……まさか、な」
俺は首を振った。
ゲームではなく、本当にこの世界に取り込まれてしまった。
そんなラノベみたいな展開、あるわけがない。
だが、由仁からの連絡は相変わらずない。
ログアウトボタンも見つからない。
そして、あの痛み。
「……考えても仕方ないか」
俺はベッドから起き上がった。
今の俺にできることは、この世界を調べ続けることだけだ。
バグを見つけて、報告する。
それが俺に与えられた仕事だ。
……たとえ、報告先がいなくなっていたとしても。
◆◆◆◆◆
その日、俺は管理者ツールの機能を改めて調査することにした。
仕様の検証はエンジニアにとって大事なことだからな。
「まず、確認しておきたいことがあるよな」
俺は宿の部屋で管理者ツールを開いた。
これまで分かっているのは、自分と他人のステータスを編集できること。
だが、その範囲はどこまでなのか。
「例えば……」
俺は窓の外を見た。
通りを歩く人々。
その中から一人を選んで、ステータス画面を開こうとする。
「……開かないな」
視界に入っているはずなのに、ステータスが表示されない。
距離が遠すぎるのか?
俺は階段を降り、宿の外に出た。
通りすがりの男に近づいてみる。
五メートル、四メートル、三メートル。
三メートルほどまで近づいたところで、ようやく男の頭上にステータス欄が表示された。
「なるほど……距離か」
次に、壁の向こう側にいる人間を対象にしてみる。
建物の角に立ち、向こう側の通りにいる人間にステータスを開こうとする。
「……やっぱり開かない」
視界に入っていても、壁で遮られていると駄目らしい。
つまり、管理者ツールで編集できるのは「自分の目で直接見えているもの」だけということか。
肉眼で見えないもの、視界に入っていないものはいじれない。
「……制限があるのは、まあ当然か」
何でもかんでも弄れたら、それこそ神様だ。
俺はため息をついて、いつものバーに向かうことにした。
◆◆◆◆◆
バー『静寂の杯』への道を歩きながら、俺はふと管理者ツールの画面を眺めていた。
画面の右上に「管理者機能」という文字が表示されている。
「……そういえば」
昔、仕事で管理画面のテストをしていた時のことを思い出した。
隠し機能を呼び出すために、特定の場所を連続タップする。
開発者向けの裏コマンドだ。
「試しに……」
俺は「管理者機能」という文字を、五回連続でタップした。
タップ、タップ、タップ、タップ、タップ。
瞬間、画面が切り替わった。
『コマンドを入力:』
『> _』
「……おいおい」
できちまったよ。
安直すぎるだろ、由仁のやつ。
誤タップで五回押されてたらどうするんだよ……。
黒い背景に、白い文字。
カーソルが点滅している。
これは、まさか。
「コマンドライン……?」
俺は恐る恐る、キーボードを呼び出した。
そして、最も基本的なコマンドを入力する。
『> whoami』
「自分が誰か」を確認するコマンドだ。
パソコンで言えば、今ログインしているユーザーの名前を表示する。
エンターを押す。
『unichan\admin』
「…………」
俺は固まった。
『unichan』。
由仁の、ちゃん付け。
「……このゲームが動いてるの、あいつのPC環境じゃねぇか!」
思わず声に出た。
つまり、このコマンド入力画面は、ゲームの中からゲームが動いているパソコンに直接命令を送れる、ということだ。
これは、まずい。
非常に、まずい。
|OSコマンドインジェクション《オーエス・コマンド・インジェクション》。
簡単に言えば、「アプリケーションを通じて、このゲームを動かしているOS――つまり、パソコン本体に直接命令を送り込める」という脆弱性だ。
例えるなら、テレビのリモコンでテレビを操作していたら、いつの間にかリモコンから家中の家電を操作できるようになっていた、というようなものだ。
本来、ゲームの中からできることは、ゲームの中だけに限られるべきだ。
キャラクターを動かしたり、アイテムを使ったり。
だが、この脆弱性があると、ゲームを踏み台にして、ゲームが動いているパソコン全体を乗っ取れてしまう。
ゲームとは関係のないファイルを消したり、個人情報を盗んだり、ウイルスを仕込んだり。
やろうと思えば、何でもできる。
「俺は由仁のPCを乗っ取って、何でもできるようになっちまったってことか……」
いや、俺はそんなことをするつもりはない。
だが、問題は俺ではない。
「他人に乗っ取られたら、どうするつもりだったんだよ……」
もしこのゲームが一般公開されていて、悪意のある誰かがこの脆弱性を見つけたら。
由仁のパソコンは完全に支配される。
個人情報も、仕事のデータも、全て奪われる。
「……脆弱すぎる」
俺は深くため息をついた。
報告事項がまた一つ増えた。
もっとも、俺はこれから相手に報告できるのかも既に分からないが。
◆◆◆◆◆
コマンド画面を閉じ、改めて街を歩き始めた。
バーまであと少し、という場所で、騒ぎが起きていた。
「な、何をするんですか!」
悲鳴のような声が聞こえる。
見ると、若い男が中年の商人らしき男の胸倉を掴んでいた。
若い男は、見るからに良い服を着ている。
金糸の刺繍が入った上着、宝石のついたブローチ、磨き上げられた革靴。
どこからどう見ても、貴族の子弟だ。
「不敬だ! この僕にぶつかるなんて、不敬を働いたな!」
「し、しかし、そちらからぶつかってきたのでは……」
「黙れ! 平民の分際で言い訳をするな!」
若い男が声を荒げる。
「僕はこの街を治めるレドマイン男爵家の嫡男で、王都の名門校に入学が決まったエリートなんだからな!」
レドマイン男爵家。
その名前に、俺の眉がぴくりと動いた。
レドマイン……。
どこかで聞いたような、プロジェクト管理っぽい名前だな。
「お前のような賤民が僕に触れるなど、万死に値する!」
若い男が、空中で何かを描き始めた。
魔法陣か?
「炎よ、集いて我が手に――」
おお、魔法詠唱だ。
このゲームでは、初めて見るぞ!
この世界の魔法は、詠唱によって発動するらしい。
国によって詠唱の作法が違うみたいだが、ルビー王国では古代語のような言葉を使うようだ。
だが、見ていて違和感があった。
若い男の詠唱が、途中で乱れている。
「炎よ……いや違う、雷……ちっ、嵐――」
何度も言い直している。
明らかに詠唱をミスしている。
そして、異変が起きた。
「な、何だ!?」
若い男の手から、黒い靄が噴き出し始めた。
靄はどんどん大きくなり、周囲に広がっていく。
「ひっ……! 止まれ! 止まれ!」
若い男が慌てて叫ぶが、靄は止まらない。
むしろ、勢いを増している。
周囲の人々が悲鳴を上げて逃げ始めた。
「やばいな……暴走してやがる」
魔法の詠唱ミスで、意図しない魔法が発動してしまったらしい。
しかも、制御できずに暴走している。
このままでは、周囲の人間が巻き込まれる。
俺は咄嗟にコマンド入力画面を開いた。
「待てよ、まさかとは思うが……」
ある予感があった。
『> tasklist』
パソコンで動いているプログラムの一覧を表示するコマンドだ。
エンターを押す。
画面に、大量の文字が流れ始めた。
『PID: 10234 spell_fire_ball.exe user: npc_0023』
『PID: 10235 spell_heal.exe user: npc_1456』
『PID: 10236 spell_light.exe user: npc_0089』
『PID: 10237 spell_dark_mist.exe user: baron_redmine_jr』
『……』
「……おいおい」
俺は目を見開いた。
「この世界の魔法の正体って、ただのコマンド実行だったのか」
魔法の使い方を学びに、この世界にあるのかわからんが図書館や本屋を探していた俺の時間を返してくれ。
タスクリストに表示されているのは、今この世界で発動している魔法の一覧だった。
fire_ball、heal、light、dark_mist。
それぞれが一つのプログラムとして動いている。
つまり魔法詠唱というのは、OSに直接命令を打ち込んでいるようなもんだということだ。
この世界そのものが一つのコンピュータで、魔法は「プログラムの実行」に相当する。
詠唱は、いわばコマンド入力だ。
正しいコマンドを入力すれば、対応するプログラムが実行される。
だが、コマンドを間違えれば、意図しないプログラムが動いてしまう。
「あのバカ息子は、詠唱ミスで変なプログラムを起動しちまったってわけか」
しかも、終了条件を設定せずに実行したから、発動されるまで止まらない。
まるで暴走機関列車だ。
「だったら……」
俺は貴族の息子のステータスを確認した。
『リファクタ・レドマイン』
『種族: 人間』
『user_id: baron_redmine_jr』
『……』
ユーザーIDを確認。
次に、コマンドを入力する。
『> tasklist | grep baron_redmine_jr』
特定のユーザーが実行しているタスクだけを抽出するコマンドだ。
『PID: 10237 spell_dark_mist.exe user: baron_redmine_jr』
一件だけヒット。
「これだな」
俺は次のコマンドを入力した。
『> kill 10237』
プロセスを終了させるコマンド。
パソコンで言えば、暴走したプログラムを強制終了するようなものだ。
エンターを押す。
瞬間、若い男の手から噴き出していた黒い靄が、霧散して消えた。
「……え?」
若い男が呆然としている。
「き、消えた……?」
周囲の人々も、何が起きたのか分からないようだった。
俺は素知らぬ顔で、路地の影に身を隠した。
◆◆◆◆◆
「お、お前のせいだ!」
若い男――リファクタが、商人に向かって叫んだ。
「お前がぶつかってきたせいで、僕の集中が乱れたんだ!」
「そ、そんな……」
どこにでも上司みたいな理不尽なヤツはいるもんなんだな。
商人が青ざめている。
「そこで見ているお前らもだ! 野次馬のように見やがって、陰で笑っているんだろう! お父様に言いつけてやる! お前らの店なんか、潰してやるからな!」
リファクタは捨て台詞を吐いて、足早に去っていった。
周囲に集まっていた野次馬たちも、騒ぎが収まったことで散り始める。
残されたのは、地面にへたり込んだ商人だけだった。
「……っ」
俺は舌打ちしたくなった。
見ていて胸糞が悪い。
自分の詠唱ミスを棚に上げて、被害者に責任転嫁。
だが、これは俺が首を突っ込む話じゃない。
貴族のボンボンと関わっても、面倒が増えるだけだ。
俺はその場を離れようとした。
だが、ふと足が止まった。
商人の顔色が悪い。
『状態異常: 恐慌』
『HP: 40/100』
さっきの黒い靄を少し吸い込んでしまったのか、体にダメージを受けている。
俺は周囲を見回した。
野次馬はほとんど去っている。
リファクタの姿も、もう見えない。
「まあ……通りすがりに、ちょっと助けるくらいなら」
俺は商人のそばを通り過ぎながら、さりげなくステータスを編集した。
『状態異常: 恐慌 → なし』
『HP: 40/100 → 100/100』
商人の顔色が、みるみる良くなっていく。
「あ、あれ……? 体が楽に……」
商人が不思議そうな顔をしている。
俺は何も言わず、その場を後にした。
◆◆◆◆◆
「お待ちください!」
背後から、凛とした声が聞こえた。
俺は足を止めた。
振り返ると、銀髪のエルフ女性が立っていた。
目元には黒い帯。
ラムダだった。
「あなたは……さっきの……」
彼女は俺の方を向いている。
いや、正確には俺を「見て」いるわけではない。
魔力感知で、俺の位置を把握しているのだろう。
だが、問題は別にあった。
俺は今、チェックサムの姿だ。
金髪碧眼。
彼女が探している「命の恩人」と同じ特徴。
「……っ」
やばい。
「お待ちください! 少しお話を――」
俺は踵を返し、走り出した。
「あっ、待って!」
背後から足音が追ってくる。
なんつー脚力だ!
俺は路地裏に飛び込んだ。
右、左、また右。
複雑な路地を駆け抜ける。
だが、ラムダは離れない。
くそ、なんつー速度だよッ!
こっちは不正してSPDの値を上げてんのに、その俺に追いつくってのかよ。
きっと魔力感知で俺の位置を追っているのだ。
視界に頼らない彼女には、暗い路地も関係ない。
「待ってください! 逃げないで!」
やばいやばいやばい。
俺は必死に走り続けたが、ついに行き止まりにぶつかった。
「……っ!」
高い壁が前方を塞いでいる。
振り返ると、ラムダが路地の入り口に立っていた。
「……捕まえました」
俺とは違って息を一つも切らさずに、彼女が言う。
「あなたが、あの時私を助けてくださった方ですね?」
「はぁ……はぁ……」
「先ほど隣にいた方にあなたの見た目をお聞きしました。 金髪で、碧い目と。 間違いありません」
やめろ、近寄ってくるな。
今の俺は、人間を受け入れるようにはできていない。
だが、そんなことを言って通用するかもわからない。
「お礼を言わせてください。 あなたは私の命を――」
俺はまだ試していない一縷の望みにかけて、管理者ツールを開いた。
自分のステータスを確認する。
『座標: X=1523, Y=892, Z=0』
そして、以前メモしておいた数値を思い出す。
『静寂の杯』の入り口の座標。
『X=2341, Y=1205, Z=0』
「あなた、何を……」
ラムダが怪訝そうな声を出す。
俺は座標の値を書き換えた。
『座標: X=1523 → 2341』
『座標: Y=892 → 1205』
『変更しますか? [Yes/No]』
「Yes」
瞬間、世界が歪んだ。
◆◆◆◆◆
気付くと、俺は『静寂の杯』の前に立っていた。
「はぁ……はぁ……」
心臓がばくばくしている。
座標を直接書き換えることで、瞬間移動した。
バーの座標を覚えておいて、本当によかった。
「……危なかった」
俺は深呼吸をして、息を整えた。
あのまま捕まっていたら、面倒なことになっていた。
正体がバレて、恩人扱いされて、つきまとわれて。
人間不信の俺には、耐えられない。
「……姿を戻すか」
俺は管理者ツールでアバターを切り替えた。
金髪碧眼の「チェックサム」から、黒髪黒目の「アドミン」へ。
これで、さっきの男とは別人だ。
「よし……」
俺はバーの扉を開けた。
いつもの薄暗い店内。
いつもの無口なバーテンダー。
「水です」
カウンターに座ると、グラスが差し出された。
「……ああ」
俺は水を受け取り、一気に飲み干した。
心臓はまだ少しばくばくしているが、深呼吸をして気持ちを落ち着かせる。
「……ふう」
アドミンの姿でいる限り、ラムダには見つからない。
このバーは俺の聖域だ。
バーテンダーが、黙ってエールを注いでくれた。
「……ありがとう」
俺はエールを受け取り、一口飲んだ。
今日も一日、疲れた。
だが、収穫はあった。
OSコマンドインジェクションの発見。
魔法がタスクとして動いているという事実。
そして、座標編集による瞬間移動。
……由仁に報告することが、また増えたな。
俺は苦笑した。
報告先がいるのかどうかも分からないのに、律儀に報告事項をメモし続けている。
「まあ……それが、俺の仕事だからな」
バグを見つけて、報告する。
それだけが、今の俺にできることだ。
窓の外では、夕暮れの街が静かに暮れていく。
今日もまた、誰にも知られず、誰にも感謝されず。
それでいい。
俺は静かにエールを飲み干し、二杯目を注文した。




