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

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

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

エラーが発生しました。

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

ブックマーク機能を使うにはログインしてください。
現実世界にゼロデイを見つけたので、こっそり修正しています  作者: せい | 健康優良不良プログラマ


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

PR
14/25

第14話 番号を一つ変えれば、他人の現実に触れてしまう

連番というのは、便利で、危ない。


一から順に振るだけで、重複しない名前が作れる。実装は楽だ。だから世の中の番号の多くは、連番でできている。会員番号。注文番号。伝票番号。


そして連番は、隣を教えてしまう。


自分の番号が 08213 だと分かれば、08214 が存在することは推測できる。08212 も。試しに一つずらして、それで他人のものが見えてしまうなら、それはもう鍵ではない。ただの順番だ。


朝、qx41 のログをもう一度開いて、俺はその危うさの真ん中にいることに気づいた。


——


「MICA、昨日の十四行から、参照番号らしいフィールドを全部抜け」


「issuer の連番部とは別に、各行に reference という八桁フィールドがあります」


リファレンス。参照。収集対象を指す番号だ。


並べてみる。issuer の連番が実行回数を数えているのに対して、reference のほうは、もっとばらついていた。飛び飛びで、規則性が薄い。


「reference に、俺の知ってる値はあるか」


「あります」


MICA が一行を強調した。


`reference: 00407731`


「これは」


「三日前、あなたが灰色の破線で隔離した『知らない点』に、私が内部的に割り当てた観測 ID と——」


MICA が一拍置いた。


「一致しません。私の ID 体系とは別です。ただし、qx41 の reference 列の中で、知らない点の座標 (112, 37) に対応する行の参照番号が、これです」


つまり、こうだ。


知らない点は、単発の現象じゃなかった。


向こうの台帳の中で、00407731 という背番号を持つ、登録済みの一件だった。俺が「知らない点」と呼んで囲ったものは、向こうにとっては在庫の一つ。番号で管理された、コレクションの一品だ。


「reference の値域は」


「観測された範囲で、00400000 台から 00410000 台に分布します。連番ではありませんが、近い番号が固まって出現します」


一万件規模の、台帳。


知らない点は、その中の一つ。


俺は背もたれに体重を預けた。八日前まで、現実にバグがあると知っているのは世界で俺だけだと思っていた。今は、俺が見つけた一点が、誰かの一万件目録の一行だと分かっている。


先客は、観光客じゃない。業者だ。


——


ここで、危ない考えが浮かんだ。


reference は連番に近い。00407731 の隣には、00407732 がある。番号を振っていけば、向こうが何を集めているのか、全体像が見える。


会員番号を一つずらせば、他人の購買履歴が見える。あの事故が、現実に対してできる。


URL の末尾の数字を書き換えるだけで、見るはずのない他人の注文画面が出てしまう——情報を守る仕組みのうち、「あなたはこれを見ていいか」の確認を省いた設計で起きる、ありふれた、そして深刻な事故。名前はある。だが今は、名前より誘惑のほうが先に来た。


参照を一つずつ開けば、台帳が読める。


「やらない」


声に出した。先に、自分に言った。


規程第三条。所有者不明の参照には接続しない。読み取りも、表示も、破棄も。


これは、所有者不明の参照そのものだ。番号を振って開く行為は、接続そのものだ。条文のど真ん中。


「第三条に抵触します」


MICA が言った。拒否権を持ってから、初めての本格的な牽制だった。


「分かってる。開かない」


「では、何をしますか。あなたの打鍵速度が上がっています」


図星だった。指が、もう手順を組み始めている。


開かないが、調べたい。この矛盾を、どう解くか。


——


答えは、ノックだった。


いや、ノックすらしない。


「MICA。参照を開かずに、存在するかどうかだけ知る方法を考える」


「接続せずに、ですか」


「ドアを叩けば、中の人に気づかれる。叩かずに、表札があるかどうかだけ、遠くから読む」


現実の層は、参照を「開く」と残骸を生む。三日前に確かめた。知らない参照を表示対象にした瞬間、線が残った。あれは向こうに痕跡を残す行為でもある。覗けば、覗いた跡がつく。


だが、参照が「存在するか」を確かめるだけなら、開く必要はない。


存在しない番号を観測しようとすると、層は何も返さない。存在する番号なら、ごく薄い応答だけがある。中身は読まない。座標も取らない。ただ、「そこに何かがあるか、ないか」の一ビットだけを拾う。


「読み取り専用ですらない。存在応答だけだ。これは第三条の『接続』に当たるか」


MICA が、長く沈黙した。判定している。


「……境界事例です。ただし、接続・読み取り・表示・破棄のいずれにも該当しません。参照の中身に触れず、痕跡も最小です。条文の文言上は、許可されます」


「ぎりぎりか」


「ぎりぎりです。一点、付帯条件を要求します。応答の取得は受動観測のみ。能動的な問い合わせを送らないこと」


「ノックはしない。表札を読むだけだ」


「その理解で、実行を許可します」


俺はスキャンを組んだ。reference の値域、00400000 から 00410000。一万件。中身は開かない。座標も取らない。存在の有無だけを、受動的に拾う。


「実行」


数字が流れた。存在、存在、空き、存在、空き、空き、存在。一万件ぶんの、一と〇。


それを、地図に落とす。reference には、ログの別フィールドに大まかな領域コードが付いていた。市内を区切る、郵便番号みたいな粗い区分。存在する参照を、その区分ごとに数えて、市の地図に重ねる。


分布図ができた。


ノックは、しなかった。ドアも開けていない。それでも、街のどこに、どれくらいの密度で、向こうの収集対象が散らばっているかが、机の上の地図に浮かんだ。


開く以上の情報を、開かずに取った。


これが、たぶん俺にできる一番きれいな無双だ。力ずくじゃない。相手の番号の付け方の甘さを、相手に気づかれずに、外から測る。


「分布、出たな」


「市内に広く分散。特定の数区画に密度の集中があります」


「住宅地より、事業所の多い区画が濃い」


「相関します。卓上センサー端末のような、常時稼働の機器が多い区画です」


センサーの多い場所ほど、収集対象が濃い。


向こうは、現実の中でも「よく記録される場所」を選んで集めている。賢い。効率的だ。そして——


地図の一点に、目が留まった。密度の高い区画の一つ。見覚えのある方角。


「MICA、この区画は」


「NEXTPULSE の開発フロアがある区画です」


——


夕方、検収完了の連絡が来た。


「相馬さん、表示ズレの修正パッチ、検収通りました。正式に完了です。本当に助かりました」


「お役に立てて何よりです」


「請求書、いつものフォーマットで送ってください。それで——契約としては、今日までなんですけど」


三枝さんの声が、少し続いた。


「あの照度揺れの件、私はまだ追いかけます。契約外でも。あの端末、私が作ったものなので、気持ち悪いままにしておけなくて」


「無理はしないでください」


言ってから、自分のことは棚に上げているな、と思った。


「相馬さんが言いますか、それ」


笑い混じりに突っ込まれた。声が、最初の頃より近い。


「何か分かったら、私にも教えてくれますか。報告書に書けないことでも」


俺は、地図を見た。NEXTPULSE の区画の、濃い点の集まりを。


「……できる範囲で」


「できる範囲、ですか」


「正直なところ、それ以上は約束できない」


「珍しいですね。相馬さんが、できないことをできないって言うの」


「できるって言うほうが、嘘になる」


短い間があって、三枝さんは「分かりました」と言った。怒ってはいない。むしろ、何かを受け取った声だった。


通話が切れる。


仕事の線が、一本切れた。検収完了。契約終了。普通なら、ここで関係は薄れていく。


そうならない理由を、彼女のほうから作ってくれた。「私が作ったものなので」。


その責任感が、これから彼女を、地図の濃い点のほうへ、自分から歩かせることになる。俺はそれを、まだ止める言葉を持っていない。


——


その夜、追伸が届いた。


「全然関係ない話なんですけど。さっき社内のチャットで見たんですが、納品先の一社で、変な打刻ログが出たそうです。誰も出勤してないのに、出勤打刻が付いてたって。端末の初期不良かもしれないって話で流れてました」


俺は地図を見た。


存在応答の分布。事業所の濃い区画。NEXTPULSE の方角。


そして、誰も触っていないのに付いた、出勤打刻。


集めるだけだと思っていた。読むだけ、数えるだけ、台帳に載せるだけ。観測なら、まだ実害はない。そう、どこかで安心していた。


違った。


向こうは、書き込み始めている。


俺が見つけた現実バグと、莉央さんの「変な打刻」は、同じ一つのものだ。


確信が、地図の上で像を結んだ。


■ 技術メモ


【IDOR(参照の不備)】


IDOR は、番号やIDを書き換えるだけで、本来見えないはずの他人のデータに触れてしまう不具合です。


「あなたはこれを見てよいか」という確認(認可)を省いた設計で起きます。会員番号や注文番号を一つずらしただけで別人の情報が出てしまう、という事故が代表例です。


連番は実装が楽な反面、隣の番号の存在を推測させてしまうため、認可の確認とセットで設計しないと危険です。


【存在確認だけを行う観測】


参照の中身を読まず、「その番号が存在するかどうか」だけを調べる手法があります。


中身に触れないため痕跡が小さく、それでいて「どの範囲にどれくらいの対象があるか」という分布の情報は得られます。作中では、相手に気づかれずに収集の規模を推定する手段として使われています。


【分布から読む】


個々の中身が分からなくても、存在する番号の数や位置の偏りを地図に重ねると、相手の活動の規模や狙いが見えてくることがあります。


センサーなど「よく記録される機器」が多い場所ほど対象が濃い、という偏りは、収集側の効率的な狙いを示しています。


■ 作中の用語


【reference(参照番号)】


qx41 の収集記録に含まれる、収集対象を指す番号です。


連番に近い分布を持ち、透が「知らない点」と呼んだ対象も、この番号体系の中の一件として登録されていました。一万件規模の台帳の存在が推定されています。


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

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

↑ページトップへ