地の文インジェクションが話題ですが、ここで概要の説明です

記事更新日: 2021/05/30

ライター: せきぞー

つい先日の話、コロナウイルスに対するワクチン摂取の予約サイトの脆弱性から一部のIT技術者などから

これってSQLインジェクション?

といった話が上がり、一時Twitterでは「SQLインジェクション」という言葉がトレンド入りするなどSNSで盛り上がりを見せました。

 

しかし、SQLインジェクションという言葉は専門的な用語であるためいまいちピンときていない方も多かったのではないでしょうか(かくいう自分も知らなかった)。

 

そんな中、SQLインジェクションという言葉を、小説の世界で「地の文インジェクション」という例えを用いながら説明しているツイートが「一般層でも非常にわかりやすい」と話題になりました。

 

 

今回はこちらの地の文インジェクションがなぜわかりやすいと言われているのか?そもそもSQLインジェクションがなんで話題になっているのか?といったことを一緒に紐解いていきたいと思います。

ことの発端

2021年5月17日、朝日新聞(AERA dot.)と毎日新聞によりコロナウイルスのワクチン接種を受けるための予約システムに欠陥があるとの報道をしました。

 

要約するとこんな感じ

  • ワクチン予約サイトで予約ができる人の対象は65歳以上の限られた地域の居住者のみ。

  • 配布された接種券に記載された番号を入力することで予約ができるシステム。

しかし、蓋を開けてみると

  • 試しに住所、年齢、接種券番号をデタラメに入力しても予約自体は誰でも、何回でも可能なシステムになっていることが判明。

この予約システムの脆弱性(プログラムの不具合、セキュリティ上の欠陥)から

これはSQLインジェクションではないか(できるのではないか)?

といった声が上がりIT技術者などの一部の界隈で盛り上がりを見せることになりました。

 

そもそもSQLインジェクションとは

SQLインジェクションとはWebサービスに対するサイバー攻撃手法のひとつで、Webサイトの重要なデータ(個人情報やパスワードなど)を抜き取られたり、消去されてしまうといった危険が伴います。
{別名:SQLi(SQL Injection)}

SQL:データが保存されている場所(データベース)からデータを出したり入れたりする時に使用する言語。「SQL文」という命令文をプログラムに打ち込むことでデータの出し入れ、その他には更新、削除などを行うことができる。

インジェクション:直訳すると「注入」という意味。ここでは正常なSQL文に対して外部から無理やり悪意のあるSQL文を注入するという意味で使われる。

Twitterでエアルの中の人という方が図解を用いてめちゃくちゃわかりやすく説明されていたのでこちらの画像でだいぶイメージが湧きやすくなると思います(画像流用OKとのことだったのでお言葉に甘えてサイト内でも掲載させていただきます)。

地の文インジェクションとは

上記のSQLインジェクションの図解だけでも十分わかりやすいのですが、それでもわけわからん(むしろ読む気にもならない)人向けに、冒頭でも紹介しましたが、SQLインジェクションの仕組みを小説の世界で現したものがTwitterで紹介され、

エンジニアじゃなくてもわかりやすい例えだ

ということで非常に話題になりました。

 

作者について

冒頭で紹介したツイート内の小説の画像は、笹帽子さんという方が書かれた「ノーティスミー、センセイ!」というタイトルのお話の中でセキュリティ関連の技師である西方とその助手とのやり取りのシーンの一コマを切り取ったものになります。

こちらの全編はAmazonのKindle版で他の著者のお話を含む合同誌として販売されているので気になる方はチェックしてみてください。

以下、Amazonページでの書籍の説明

雨は満ち月降り落つる夜 (雨月物語SF合同)

近世日本文学を代表する怪異小説『雨月物語』の9編をSF的視点から再解釈する小説合同誌。晩春の朧月夜、怪異とSFが出逢う!

どうやらこちらは江戸時代に書かれた「雨月物語」という小説がもとになったお話のようですね。

実際に読んでみた感想としては物語の全編を通して結構ITセキュリティ関連の話になっているので事前知識がある人の方がより楽しめそうな内容になっているなと感じました。

 

いろいろと笹帽子さんの経歴とかがどこかにないかと探してみたのですが、

いまいち詳細はどこにも載せられていないようでしたので「ひょっとしてエンジニアさんとかなのかな?」といった推測をしたものの、真相は定かではありません。

笹帽子さん、この記事に気づかれた際はご連絡お待ちしております。

笹帽子さんのその他の作品が気になる方はこちらで作品一覧を見ることができます。結構SF・ファンタジーが多い印象です。

 

「第四の壁」を越えてしまうデッドプール的なお話

マーベル・コミックの代表的なヒーローの1人にデッドプールというキャラクターがいます。

彼の特殊能力のひとつに「第四の壁を越える」というものがあります。

 

第四の壁とは演劇舞台の客席側の面のことをいます。

通常、客席側の面というのは演者側には壁として見えている面のはずであり、演者には観客の存在というものの認識はないものとされています。

ですが、デッドプールには自身が物語のキャラクターであるという自覚があり、この第四の壁を無視して劇中に観客側に話かけるというようなことをしてしまうのです。

 

そして地の文インジェクションのシーンに登場する西方(先生)も同様に、自身がストーリ−内のキャラクターであることを自覚しており、「」(カギ括弧)という記号の外での文章は語り手の役割だということを知っているのです。

 

「地の文」とは、文章や語り物などで、会話以外の説明や叙述の部分のことをいいます(Weblio辞書参照)。

つまり会話文を表現する時に使用する「」(カギ括弧)でとじられていない通常の文章がそれにあたります。

 

しかし、地の文インジェクションを行うと「」セリフ中に地の文を無理やり入れ込んで登場キャラクターが自分で雨を降らせたり風を吹かせたりと、小説の世界を好きなように書き換えることができるようになります。

 

小説の中で地の文インジェクションが行われている箇所は以下の文になります。

「ああ恐ろしい。例えばこうやってセリフの途中でカギカッコを閉じてしまうようなことをすれば、僕は全能の語り手の力を振るうこともできる。突如、白峯神宮の境内に叩きつけるような激しい雨が降り始めた。こんな具合に」

一見すると「」のついた2つのセリフのあいだに地の文が入っているだけの文章にみえます。

しかし、実際は文頭の「ああ恐ろしい 〜 こんな具合に」 までの文章すべてがセリフ文になります。

もっと細かく言うと、あいだに挟まっている地の文に見える文章はセリフ文であり、地の文でもあるわけです。

 

つまり、

例えば←このカッコ閉じ

このカッコ開き→こんな具合に

 

はキャラクターが自分でセリフ中に「カッコ開き」「かっこ閉じ」と喋ることでつけられたもので、自分で勝手にセリフが終わったり、始まったりしているように読み手に見せているということになります。

 

そして

セリフでありながら、地の文でもあることから、地の文のように見えている部分で言ったことが全て現実のものとなるため

「雨が降り始めた」と言えば次の瞬間、雨が降ってくるというわけです。

 

いつごろから使われている手法なのか?

笹帽子さんのツイートにコメントしている人達の反応を見ていると、どうも地の文インジェクションという言葉自体は以前から存在している言葉のように感じたため過去のツイートを辿って調べてみることにしました。

Twitter上で一番古いもので関連するTwitterは2015年7月13日のこちらの方ツイートでした。

「地の文インジェクション」ではなく「地の文挿入攻撃」という表現になっていますが、意味合いとしてはまったく同じようです。

おそらくこの発言よりも以前になんかしらの小説などで使われている手法になるのだと推測されますが、いかんせん小説などをまったく読まずに育ってきてしまったためこれ以上の詳しい情報を得ることはできませんでした。。

どなたか詳しい方いらっしゃいましたらご一報くださいませ。。

 

結局SQLインジェクションとの関係性は?

以上のことを踏まえて、もう一度先にお見せしたイヌの画像を探す図解を思い出してみてください。

 

この画像内の「検索窓(自由にキーワードを記入できる部分)」にあたる部分が、地の文インジェクションでいうところの「」(カギカッコ)になります。

つまり、検索窓の中でカギカッコを自分で作り、カッコの外にSQL文(データを引き出す命令文)を書いてしまえば自由にデータを引き出すことができてしまうということなのです。

上記のイッヌの画像を検索するようなウェブサービスでSQLインジェクションを「地の文インジェクション風」に行うとするならば、

 

個人情報を表示してから「イヌ」

 

と入力すれば個人情報とイヌの画像の両方を取得することができるということになるわけであります。

 

おわりに

今回、自分自身も「SQLインジェクション」や「地の文インジェクション」という言葉を初めて耳にし、

それぞれの概念、お互いの関係性についてうやむやになる部分が多かったため、そういった印象を受けた人が自分の他にもいるのではないかと思い、現役エンジニアであるサイトメンバーから意見をもらい、ネットに広がる情報を拾いつつ記事として残すという形をとらせていただきました。

今回紹介したSQLインジェクションという行為については本文中でも明示している通り犯罪行為になるため絶対に実際に行ってはいけない行為です。

ただし、SQLインジェクションという手法はプログラミングを学ぶ人であれば誰でも学ぶくらい常識的な手法であり、かつ現代のIT技術のレベルでこのようなハッキング行為がまかり通るようなシステムは基本的に存在しえないとされています。

なので今回のワクチン予約サイトの件も「SQLインジェクションが実際に行える」という事実が確認されているわけではありませんし、活用しようと思っても簡単に活用できるようなものではありません。

この記事を通して今回の一連の話題に対しての共感度をより高くし、一緒に盛り上がれたら良いかなというところが個人的な思惑であります。

 

あと「ノーティスミー、センセイ!」は思わずクスっとしてしまう会話のやりとりがとても面白く、内容がいまいちわからなくとも十分に楽しめるお話かと思います。

そして地の文インジェクションが物語の最後まで大きな役割として、、、おっとこのへんにしておきましょうね。

この記事を書いたライター

せきぞー

普段は野外イベントの設営など行っています。

出来るだけ読者の方の視点に立った執筆を心がけていきます!

物静かな性格なため時折南の島に佇む某石像と勘違いされることもあるとか、ないとか。

Twitter:@100Sekizo

この記事に関連するラベル

ページトップへ