ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。

鼠と竜のゲーム(2) 取り調べ

»

 ワンボックスカーに乗せられて数分ほど経過したところで、ようやくタカシの動揺も静まってきた。同時に、寒気にも似た恐怖感が、実感となって身にしみてくる。

 まだまだ冷静な精神状態とはほど遠いものの、タカシは隣に座っていた佐伯警部補に話しかける勇気をなんとか振り絞った。

 「あの、すみません」

 「ん?」膝の上に広げたノートPCを一心不乱に覗き込んでいた佐伯警部補は、少し苛立たしげに顔を上げた。「はい、何か?」

 「さっきも言いましたが、あの程度のアクセスでサーバがダウンするって、ちょっとおかしいと思うんですが……」

 「でも実際にダウンしてますからね」佐伯警部補はノートPCのモニタに、素早く視線を走らせた。「サーバが落ちた時刻と、あなたの家からのアクセス時刻が一致してるんですよね」

 「でも、それほど負荷をかけないように気を付けてプログラミングしたつもりだったんですが」

 「気を付け方が足りなかったんじゃないですか? それに、地方自治体の図書館は大企業のサイトとかと違って、少ない税金をやりくりして運営されてますから。そんなに高スペックのサーバじゃないんですよ」

 「いや、そんなばかな」タカシは呆気にとられて反論した。「あの程度のアクセスがさばけないって、ありえないと思いますけど。極端なこと言えば、そのノートパソコンでだってそれぐらいできますよ」

 自分の見解にケチをつけられた、と思ったのか、佐伯警部補はムッとした表情を浮かべた。

 「実際、落ちていて、被害届が出てるわけですからね」

 「ひょっとして、T市立図書館のサーバって、回線の細いレンタルサーバか何かで運営されてるんですか?」

 佐伯警部補は、お伺いを立てるように小林警部補の顔を見てから答えた。

 「いや、図書館内のサーバルームにありますよ」

 「そうですか。それじゃあ……」タカシは思いついた別の可能性を口にした。「プログラムに何かバグがあって、それですぐに落ちてしまうとか、Webサーバの設定にミスがあるとか……」

 「そんなことないよ」小林警部補が口を挟んだ。「ちゃんとしたシステム屋さんが作ったプログラムだから」

 「かなり大手のSIerさんですよ」佐伯警部補も補足した。

 「……」

 「あなたね」小林警部補がタカシを軽く睨んだ。「自分のやったことの責任逃ればっかり考えてないでさ、反省しているところを見せないと困ったことになるよ」

 罪があると決めつけるような言い方に、タカシも少しカチンときて言い返した。

 「別に責任逃れなんかしてませんよ。でも、警告とかなしにいきなり家宅捜索って、ちょっとひどいと思うんですが」

 「証拠隠滅のおそれもあるからね。サイバーテロだったら、別に仲間がいて警告する可能性だってあるしね」

 「テロって……」タカシはあきれて二の句が継げなかった。

 「まあ、調べれば分かることですから」

 佐伯警部補がそう言い、またノートPCに視線を落とした。タカシはあきらめて口を閉じた。この場で何を言ってもムダだろう。それよりは取り調べのときに、しっかり説明した方がいい。

 30分ほど走行した後、ワンボックスカーは、T署の駐車場に滑り込んだ。

 何枚かの書類にサインをさせられた後、狭い一室で取り調べが行われた。

 刑事ドラマのように、1人が質問などを行い、別の1人が壁に向かって記録を取るのかと想像していたが、タカシと向き合って座ったのは小林警部補だけだった。この刑事がネットワークやプログラミングに明るいわけではないことは、これまでの会話からうすうす察していたので、正確に内容を理解してもらえるのか不安だった。

 「あの、さっきの人は?」

 「え、誰? ああ、佐伯くんか。彼はあなたのパソコンを調べてるから」

 「そうですか」

 「じゃ、始めようかね」小林警部補はノートPCを開くと、キーをいくつか叩いた。「まず、名前とか住所とかを確認するよ」

 小林警部補は、タカシの氏名、生年月日、満年齢、住所、本籍、職業などを慣れた様子で確認すると、ノートPCに打ち込んだ。

 「さて、倉敷さん、あらためて聞くけど、なんで家宅捜索ってことになったか、分かってるよね?」

 正直なところ、自分が置かれている状況を完全に理解しているとは言い難かったが、取りあえずタカシは自宅で聞かされたことを口にした。

 「なんでも、T市立図書館のサーバが落ちてしまったとのことですけど」

 「そう、それね」小林警部補はプリントアウトを数枚取り出し、タカシの目の前に置いた。「これは、4月4日のアクセスログね。ほら、ここ、確認してもらえるかな」

 小林警部補がボールペンの先で示したのは、Apacheのものらしいログだった。18時を少し経過したあたりだ。

75.98.93.51 - - [4/Apr/201x:17:59:10 +0900] "GET /tosho/Shinkan/shinkan.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (compat
ible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)"
202.218.219.147 - - [4/Apr/201x:18:00:06 +0900] "GET /tosho/Shinkan/shinkan.html HTTP/1.1" 200 31 "-" "Apache-HttpClient/4.2.1 (java 1.7)"
202.218.219.147 - - [4/Apr/201x:18:00:08 +0900] "GET /tosho/Shinkan/shinkan.html?start=1&end=1 HTTP/1.1" 200 31 "-" "Apache-HttpClient/4.2.1 (java 1.7)"
202.218.219.147 - - [4/Apr/201x:18:00:09 +0900] "GET /tosho/Shinkan/syousai.html?toshoId=93ce36ecfadde7eb HTTP/1.1" 200 31 "-" "Apache-HttpClient/4.2.1 (java 1.7)"
202.218.219.147 - - [4/Apr/201x:18:00:11 +0900] "GET /tosho/Shinkan/syousai.html?toshoId=230b0a783287799e HTTP/1.1" 200 31 "-" "Apache-HttpClient/4.2.1 (java 1.7)"
202.218.219.147 - - [4/Apr/201x:18:00:12 +0900] "GET /tosho/Shinkan/syousai.html?toshoId=2b9b80dc5e07dfb2 HTTP/1.1" 200 31 "-" "Apache-HttpClient/4.2.1 (java 1.7)"
59.106.194.19 - - [4/Apr/2012:18:00:12 +0900] "GET /tosho/Shinkan/shinkan.html HTTP/1.1" 200 31 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1"
202.218.219.147 - - [4/Apr/201x:18:00:14 +0900] "GET /tosho/Shinkan/syousai.html?toshoId=c5f2fcd67d0378cb HTTP/1.1" 200 31 "-" "Apache-HttpClient/4.2.1 (java 1.7)"
202.218.219.147 - - [4/Apr/201x:18:00:15 +0900] "GET /tosho/Shinkan/syousai.html?toshoId=94f14897b4cba5a3 HTTP/1.1" 200 31 "-" "Apache-HttpClient/4.2.1 (java 1.7)"

 「ほら、このIPアドレスね、あなたのところからなんだよ。これはNTTに確認取ってあるからね。分かるでしょ?」

 固定IPの契約をしているわけではないので、IPアドレスを示されても分かるはずがない。タカシが注目したのは、URLの方だった。

 「IPは知りませんけど、このURLには確かに、私が作ったプログラムからアクセスしてますね」

 小林警部補は満足そうにうなずいた。

 「そうだろう? この後、すぐ、サーバ落ちてるんだよ。18時20分ぐらいにね。同じIPアドレスからずっとアクセスしてるからね。どう考えてもこのせいだよね」

 「いや、でも、そんなはずないんですけどね」

 「何がそんなはずないの?」

 「さっきも車の中で言いましたけど、そんなに負荷がかかるはずないんですよ。プログラムを調べてもらえば分かるでしょうけど」

 「プログラムは今、調べてるけどね」小林警部補は椅子にギッともたれて、タカシの顔を注視した。「こういう使い方は、一般の普通の人はしないでしょ?」

 「まあ、それは」タカシは渋々うなずいた。「確かに、人力だとこういう頻度ではアクセスできないと思います。意図的にF5連打とかすれば別ですけど」

 「ね? じゃあ、あなたのプログラムが原因としか考えられないじゃない。違うかな?」

 その言葉にも一理あるのは、認めざるを得なかった。逆の立場だったら、タカシもそのようなプログラムを疑ったに違いない。それでも納得できない思いが消えず、タカシはアクセスログに視線を落とした。そして、あることに気付いた。

 「18時40分ぐらいにサーバが落ちたんですか?」

 「そうだよ」

 「どれぐらい落ちてたんですか?」

 「60分ぐらいらしいけど、なんで?」

 「ほら、ここ見てくださいよ」タカシは19時付近のログを指で叩いた。「500を返してますよね」

 「500?」小林警部補もログを覗き込んだ。「ああ、これね。500ってどういう意味?」

 「内部サーバエラーですよ。問題はそれじゃなくて、レスポンスが返ってきているということなんですが」

 「はあ?」

 やっぱりこの人はよく分かってない、とタカシは確信した。そんな人がネットワーク犯罪の捜査をやっているのかと思うと、いささかゾッとした。

 「いえ、つまりですね。500でも何でも、とにかくサーバがレスポンスを返してきてるってことは、どういうことか分かりませんか?」

 「さあね。分からんけどね」小林警部補は面白くなさそうな顔でフンと鼻を鳴らした。「何が言いたいの?」

 「つまりサーバは落ちてないってことですよ」タカシは興奮を抑えながら指摘した。「落ちてたらレスポンスが返るわけないでしょう?」

 しかし小林警部補は、別段ショックを受けたようには見えなかった。

 「ふーん、そう。まあ、それは後で確認するとしてさ」小林警部補はログのプリントアウトをガサガサとまとめた。「とにかく、その時間帯に、あなたが大量のアクセスをしたのは事実なんだよね?」

 「まあ、そうですけど」勢いをつぶされて、タカシは曖昧に肯定した。

 「はい、そういうことね」

 小林警部補はうなずくと、何かをノートPCに入力した。調書作成アプリケーションとかあるんだろうか、とタカシはついあらぬことを考えた。

 そのとき、ドアが開き、佐伯警部補が入ってきた。タカシの家から押収したThinkpadを手にしている。

 「すいません。ちょっといいですか」佐伯警部補はタカシに話しかけた。「アクセスに使ってたのは、このマシンですか?」

 タカシはThinkpadを確認した。確かに、DBサーバとして使用していたLinuxマシンだった。

 「はい、そうです」

 「ユーザーとパスワード教えてもらえますか?」

 「ああ、はい」

 タカシは差し出されたメモ帳に、ユーザー名とパスワードを書き込んだ。

 「rootのパスワードもいりますか?」

 「はい、お願いします」

 タカシがメモ帳を返すと、佐伯警部補は続けて訊いてきた。

 「プログラムの実行は手動ですか? 自動ですか?」

 「手動でも流せますけど、通常はcronで起動してます」

 「ああ、なるほど」佐伯警部補は小林警部補にうなずいた。「すいません、お邪魔しました」

 佐伯警部補はThinkpadを持って、さっさと出て行ってしまった。技術の分かる人が話を聞いてくれるのかと期待したタカシは、あてが外れて肩を落としてしまった。

 それでも、佐伯警部補が実際にプログラムを調べれば、サイバーテロなどではないことが、すぐに判明するはずだ。タカシは、ようやく少し希望を見い出したような気分になった。

 「じゃあ、続けようか」小林警部補が言った。「アクセスはどの程度の頻度でやってたの?」

 「頻度ですか……」

 タカシがcronで毎日実行していたプログラムは、新着図書チェックと、予約状況チェックの2つだった。

 前者は毎日のように更新される新着図書をデータベースに格納している。これは1日1回、18時に実行している。

 後者は、特定の書籍の予約状況を確認し、自分が予約を入れていればリストの何番目かを、そうでなければ予約待ち数を取得するもので、20分に1回実行していた。20分間隔で実行しているのは、ハリーポッターシリーズのように人気の書籍を、空きができたらすぐに予約を入れられるようにしたかったためだ。

 「サーバが落ちた」と言われた時刻から考えて、問題があったとすれば新着図書チェックの方だろう。これは、一度、新着図書の一覧を取得した後、それぞれのコードによって、作者やジャンル、あらすじなどが分かる詳細ページにも順次アクセスしている。新着図書の件数にもよるが、1回あたり30分ほどはかかっているはずだった。

 余計な負荷をかけないように、リクエストを並行して送信することはせず、レスポンスが返ってきてから、次にリクエストを投げるようにしてある。そのことを考慮すると、1リクエストあたり1秒から2秒程度といったところだろう。

 「だいたい1秒から2秒に1回アクセスしてる感じですね」

 「1秒に1回ね」小林警部補は少ない方の数字を勝手に採用し、入力した。「どうやって動かしてたの?」

 「どうやって、と言いますと?」

 「ボタンか何かを押すとか」

 「いえ、ボタンじゃないんですけど」タカシはうまい説明の言葉を探した。「時間が来ると自動的に実行されるんです」

 「タイマー式ってことでいいのかな?」

 それほど的外れな表現でもないし、cronについて説明しても、たぶん分かってもらえないだろう。そう考えたタカシは首肯した。

 「はい、そんなところです」

 「じゃあ、最初にそれをやったのはいつ?」

 そんな調子で、取り調べは続き、2時間ほどでひととおりの聴取が終わった。小林警部補は調書を印刷し、タカシの前に置いた。

 「じゃ、これ、読んで。問題なかったら、下にサインして」

 タカシは「供述調書」とタイトルが入った、A4用紙2枚に印刷された文章に目を走らせた。できるだけ冷静に読まなければ、と思っていたものの、やはり動揺しているのか視線が定まらない。自分を叱咤して、何とか単語や文節の意味をつかみながら読み進める。

 2回読んだところで、タカシは顔を上げた。

 「あの……」

 「ん、読んだ?」

 「ここに、DOS攻撃って書いてありますけど、そういう意図はなかったんです」正しくは“DoS攻撃”ですよ、とは言わなかった。

 小林警部補は舌打ちしそうな顔で、タカシが指した文節に目を向けた。

 「でも、やったことはDOS攻撃でしょ?」

 違う、と言いかけて、タカシは言葉を呑み込んだ。最終的な現象だけを図書館側から見て、DoS攻撃だと誤解したのかもしれない。しかし、それなりの目を持った人がプログラムを調べれば、DoS攻撃を目的としたものでないことぐらい、すぐに判明しそうなものだろうに。

 「あの、さっきの人はプログラムを調べてくれているんでしょうか?」

 「そのはずだけど、どこまで進んだかは分からんねえ」小林警部補の言葉は投げやりだった。「どっちにしても、あっちの調査と、この録取とは関係ないからね。で、DOS攻撃じゃないって主張したいわけ?」

 「そうですね……」タカシはためらった。「結果的にはDoS攻撃と同じ現象になってしまったかもしれませんが」

 「そうでしょ」小林警部補は得たりとばかりにうなずいた。「結果的にはね。じゃあ、結果的にそうなっちゃった、って修正すればいいかね?」

 「はい」本音を言えば、“DOS攻撃”というつづりが間違った言葉自体を削ってほしかったが、あまり細いことを追究して、小林警部補の機嫌を損ねることをタカシは恐れた。「大丈夫です」

 「うん、分かった」小林警部補はキーを叩いた。「他は大丈夫かな?」

 他にも“業務を妨害”、“ご迷惑をかけた責任は償いたい”など、自分が口にした記憶がない言葉はいくつもあったが、さすがに精神的にも肉体的にも疲れていたこともあり、タカシは力なくうなずいた。

 小林警部補は、再び供述調書を印刷すると、タカシに読むように言った。

様式第46号(刑訴第198条)

供 述 調 書


本籍 神奈川県T市成宮町西2丁目14-3

住居 神奈川県T市成宮町西2丁目14-3

(電話 04X-555-5555)

職業 自営業(有限会社アクアシステム)(電話 04X-555-5555)

氏名 倉敷タカシ  (クラシキ タカシ)

昭和4X年7月12日生(4X歳)

上記のものに対する偽計業務妨害罪 被疑事件につき、平成2X年5月25日 神奈川県T署において、本職はあらかじめ被疑者に対し、自己の意思に反して供述をする必要がない旨を告げて取り調べたところ、任意次のとおり供述した。

1 自分の意思に反してまでは言いたくないことを言わなくても良いと説明されましたが、その意味についてはよく分かりました。

2 私の作成したプログラムが原因で、T市立図書館のホームページが閲覧不可になった事件がありましたので、そのことについて詳しく説明します。

 私は、本年4月10日から4月24日にかけて、T市立図書館のホームページに、自分で作成したプログラムを使い、自宅から約44,000回アクセスしました。そのプログラムは2種類あります。

3 第1のプログラムは、図書館に新しく到着した図書の情報を取得するためのもので、1日に1回、午後6時に実行していました。1回の実行時間はおよそ30分で、リクエスト数は約2000回だと思われます。

4 第2のプログラムは、指定した図書の予約状況を確認するためのもので、10分間に1度実行していました。1回の実行時間は10秒ほどで、リクエスト数は10回ほどになります。

5 図書館のホームページが閲覧不可になった日時のアクセスログを取調官の方に見せていただき、該当の時刻に閲覧不可のきっかけとなったアクセスが、私の作成した新着図書確認プログラム(第1のプログラム)によるものだと説明されましたが、間違いありません。

6 私が第1のプログラムを作成した動機は、T市立図書館ホームページの新着図書確認ページの使い勝手がよくないと考えたためです。私はT市立図書館をよく利用していて、新着図書確認ページも頻繁に参照していたのですが、新着図書の表示がジャンル毎に100冊から200冊表示されていること、対象期間が最大4ヵ月と長すぎること、入庫した日付が表示されていないことなど、不満点が多かったので、自分のデータベースを作成しようと考え、本年3月頃から作成を開始し、同年4月から実行を開始しました。

7 私は図書館ホームページに過大な負荷をかけようと考えたことはありません。リクエスト数を同時に複数発信しないなどの対策も行っていました。もちろん図書館に対して悪意などはありません。

 しかし、結果的にDOS攻撃になってしまい、図書館の業務を妨害してしまったことは間違いない事実です。図書館の方々にご迷惑をかけた責任は償いたいと真摯に考えています。

倉敷 タカシ

以上のとおり録取し閲覧させたところ誤りのないことを申し立て署名をしたが、押印については必要ない旨を申し立て拒否した。

同日

神奈川県警察T市警察署

司法警察員

警部補 小林アキオ 押印

 タカシは指定された場所に署名した。この行動の意味を考えることさえしなかった。心の中にあったのは、これで取りあえず帰れるだろう、という希望だけだった。その2時間後に逮捕され、20日間にわたって勾留されることになるとは思ってもみなかった。

(続く)

 この物語は事実を基にしたフィクションです。実在する団体、個人とは一切関係ありません。また司法当局の捜査方法などが、現実のそれと異なっている可能性があります。

Comment(8)

コメント

BEL

おぉ、お留守にしてる間に新連載が!

あの事件ネタですか、詳細までは知らないので楽しみです。

前作までとタイプは異なりますが、
全体的に、世間的には偉そうな人が本当はダメダメですよ、という
ニュアンスはにじみ出てきそうな感じがします。

今回は文体が第3者目線ですね。

WhiteBall

本当に、本当に痛感しますが
「ITのことを知らない人とITの会話をする」
というのは非常に難しいです。
例えを用いて簡易的に徹底説明することの繰り返し。
(既に、"簡易的"と"徹底"が反している感は否めませんが、実際そうです。)

ITを理解していない人は、最初から「難しいモノ」と決めてかかりますからね。
(ITに限らない話かもしれませんが。)

今回は相手が警察なので余計大変かもしれませんが、こんな局地的な例に限らず、日常生活でもいつでも大変です。
ネットワーク機器を市販している会社なんて、本当に大変だろうなと思います。
無線ルーターの設定を、ほぼオートマチックでこなすように作ってあるのは仕方ないですよね。

実際、自分がこの立場になったら、相手にどう説明しようか。。。
(何か犯罪を犯しているワケではありません^^;)

regc

ここまでは、"あの"事件とほぼ同じ経過かなぁ。。。
1秒に1回のアクセスといい、サーバが500返してきていることといい
独自の展開はいつから始まるんだろうか・・・楽しみにしてます

horde

第一回の出だしで書かれてた通り、某大手SIerの中での出来事がオリジナルで書かれるんだろか

techniczna

史実だと、当事者とベンダとは接点がないはずですから、どのように物語に絡んでくるのか楽しみですね。そして、ホワイトナイトのひ○みちゅ閣下の役回りはまさか東海林さん!?

ヤミ

今回は事件の経過と同じようですが、今後、どのような展開になるか楽しみです^^

通りすがり

これって不起訴処分で無罪にはならなかったんですよね。恐ろしい。

名無しPG

リーベルGさんが連載してる間、月曜の祝日がちょっと残念。
明日が楽しみです。

コメントを投稿する