開会式のドローンショー

平昌の冬季五輪でもドローンによるショーをやっていたようだが、私は今回初めてみたのでビックリした。さらにインテルが担当したと聞いて、そんなビジネスもやってるんだということにも驚いた。

ショーに直接関連しそうなものとしては、インテルには以下のような特許出願があるらしい。

US20180136646A1 - Aerial display morphing - Google Patents(Pending)

似たようなものでディズニーの特許もある。

US20140236388A1 - Aerial display system with floating pixels - Google Patents(Active)

US20140249693A1 - Controlling unmanned aerial vehicles as a flock to synchronize flight in aerial displays - Google Patents(Active)

いずれもUSのみで「Aerial display」に関するもの。特許で言うとディズニーが一歩先を行ったように見える。

セキュリティ絡みの話では、開会式をテレビで見ていて「妨害電波とか飛ばされたらイヤだな」とは思った。今日調べてみたら関連しそうな記事(杉浦氏が出てくる)があった。

開会式彩ったドローンの舞、ハッカーが通信の解析試みた - 東京オリンピック:朝日新聞デジタル

記事によると、後日の解析のために会場の周辺でパケットを収集したらしい。

私は門外漢なので当てずっぽうだが、パフォーマンス開始の指示をする必要もあるし、GPSの測位だけではフォーメーションが乱れたりドローン同士がぶつかってしまう可能性があるので、地上もしくはドローン間でデータをやりとりしていると想像する。ちなみにディズニーの特許の図には、2つのチャネル(2.4GHz, 900MHz)で地上局とやりとりする例が示されている。

こういうショーでは、脆弱性を突いた攻撃や妨害に加えて、機器のトラブルや、天候の急変でドローンが飛べなくなるような事態も生じうる。失敗した時のダメージがでかいイベントのプログラムはそういうことも含めて色々と考慮した上で作る必要があるだろうし、準備はなかなか大変だろうと思う。

CSP bypass

少し前に公開されたものだが、PortswiggerのDaily swig経由で見つけた、MSの小勝さんが報告したChromeのCSP bypassバグについて。

やられる側は例えば下記のようなページ。nonceのCSPを使っている。

<meta http-equiv="content-security-policy" content="script-src 'nonce-testrandom'">
<body>
<?= $_GET['param'] ?>    ← エスケープ無し
</body>

攻撃者は以下のようにiframeを挿入してやる(ここでは簡単のためsrcdocを使っている)。

<meta http-equiv="content-security-policy" content="script-src 'nonce-testrandom'">
<body>
<iframe srcdoc='<script>alert(window.origin)</script>'></iframe> ← 攻撃者が挿入したiframeタグ
</body>

攻撃者はiframe内でalertを動かそうとするが、iframeの親ページのCSPがiframeにも継承されるため、正しいnonceが無いJSの実行はブロックされる。

しかし古いChromeでは以下のような方法で回避できた、というのが小勝さんのレポート。

①attackerのページ[A]内のiframeに、victimのページ[V]を入れてやる([V]は上記のiframeが挿入されたCSP付きページ)。

┌─────────────────┐
│attackerのページ[A]        │
│                 │
│┌───────────────┐│
││victimのページ[V]       ││
││               ││
││┌─────────────┐││
│││XSSで挿入したiframe[I]  │││
││└─────────────┘││
│└───────────────┘│
└─────────────────┘
 この時点で[I]には[V]のCSPが適用されている。

②[A]は[I]のURLをdata:text/html,<script>history.back()</script>に操作する。
 この時点で[I]には[A]のCSP(空っぽ)が適用されるようになる。

③[I]のJSが動作してhistory backされる。[I]はXSSで挿入した内容(以下)に戻る。
 <iframe srcdoc='<script>alert(window.origin)</script>'></iframe>

④backした後も、[I]には[A]のCSP(空っぽ)が適用される。
 一方で[I]のオリジンは[V]を継承している。

こんな感じで、CSPのiframeへの継承というメンドクサイところを突いた攻撃です。

修正後は、④にて[I]には[V]のCSPが継承されるようになった模様。Daily swigによると修正にはHTML仕様の追加が必要だったらしい。

他のブラウザではどうかというと、Firefoxは昔から修正後のChromeと同じ挙動だったと思われる。

面白いことに、Safariは挙動が異なっていて③のJS(history.back)は実行されない。これは②で[A]が[I]のURLを変えてもCSPはそのまま[V]のものが適用されるから。それはそれで何となく気持ち悪くはある。

読書

Flatt securityの米内氏による、クライアント=ブラウザに特化したセキュリティ本。

すごく幅が広いトピックだが、想定読者であるWebアプリ開発者に必要な範囲で整理されている。中身的には、ベストプラクティスをまとめたものではなく、原理とか経緯が説明されている。最近の情報も書かれていて、セキュリティ畑にいる大抵の人(私を含め)が読んでも、知らないことが書いてある。私も1回半くらい読んだ。

参考文献の量がかなりおおい。その中に私が昔仕事で書いた資料が2つあった。ありがとうございます m(__)m。

中国人作家によるSF作品。三部作で2~3000ページある超大作で、世界的にも日本でも非常に売れた本。

一言で言うと宇宙戦争ものだがスケールがおおきい。宇宙のエコシステムというか、宇宙における生存競争はどのような形に行きつくかという骨格をなすアイディアがあり、侵略者に対する人間社会と個人の反応がつづられていく。

ⅢはⅡまでよりもさらにスケールが大きい話になっている。スケールが大きすぎてよく分からんくらい。

山本周五郎の時代物だが、現代もののような雰囲気の長編作品。若く才能がある浄瑠璃作家の短い生涯を描く。創作への純粋さ、ひたむきさ、喜びと苦悩。創作にもがき苦しんで身も心も蝕まれていく後半は、読んでいる方も苦しい。

坂の上の雲」(日露戦争)の講和会議における全権代表、小村寿太郎の綱渡りの交渉を描く。条約締結後に世論が弱腰外交と猛烈に非難するところは、現代でも同じようなことが起こりうると思うとおそろしい。

誘拐した幼児を連れて逃亡生活をする女の話。逃亡生活につきまとう緊迫感と、強い母性(誘拐してきた子に対するものではあるが)に引き込まれ、ラストシーンでジーンと来る。映画にもなっている作品。

特許に見る診断技術

WebアプリのDASTツール(スキャン技術関連)の日本国特許について少し調べました。

面白そうな出願がいくつかあったので下にまとめてみます。

権限周りの診断

特開2020-071637(2018年出願) イエラエセキュリティ/Archaic
特許6636222(2017年出願) 三菱電機

認可制御の自動診断。①と②で違いはあるが、ざっくり以下のようなイメージ。

1. ユーザA,Bそれぞれでログインした状態でサイトを巡回して、それぞれのリクエスト情報を集める。
2. ユーザA,Bのリクエスト情報の差を取り、相互に無いリクエストを抽出する。
 以下のような差があったとする。
 URL1: /order?id=1 -> ユーザAの巡回結果にのみ含まれている
 URL2: /order?id=2 -> ユーザBの巡回結果にのみ含まれている
3. URL1にユーザBのCookieでアクセスしてみる。
 応答をエラー応答等と比較して、脆弱性の疑いを判定する。

②は一般ユーザが特権ユーザ向け機能にアクセスできるかの診断を前提としている。

参照系の権限周りの診断では、あるページに認可制御があるべきか否かを判定する必要がある。本来はページに表示される情報の意味を考慮しないと判定出来ないが、上の2(巡回結果の差分)により簡易的な判定を行なう。

①は今のところ審査請求されていない。②は特許になっている。

②には関連しそうな論文あり。それによると、2つの異なる権限レベルのアカウントで巡回する方法は米国特許(US20170149782A1)にあるらしい。

応答差分解析

上の出願①では、3の応答比較の方法として、共通ワード数、bag-of-words、N-gram、潜在意味解析、WMD、str2vec、編集距離、木構造編集距離等を例示している(知らんものがいくつかある)。

Blind系の診断では、ロジック/テクニカル系にかかわらず、複数の応答間に有意な差があるかを判定する必要がある。その辺の技術について調べてみた。

特許4619867(2005年出願) 三菱電機
特許4193196(2007年出願) ファイブドライブ
特許5522850(2010年出願) KCCS

③⑤は、差分判定の誤りにつながりうる応答内のランダムな部分(例えば広告)等をやりすごすためのもので、③は応答のタグ構造の変化、⑤は正常応答に共通する部分、にそれぞれ着目する。④は主に送信する値に関するもの。

新しい話題ではないだけに最近のものは無さそう。③④は年金未納で抹消、⑤は有効。

その他

特開2010-39613(2008年出願) 個人

名称は「予約語の変更によるSQLインジェクション対策」。スキャン技術とは関係ないが、金床本(懐かしい)の「ONION SELECT」を彷彿とさせる。審査請求されておらず、みなし取下になっている。

特開2019-148917(2018年出願) NTTコミュニケーションズ

DASTツールの結果の精査(正誤判定)を機械学習する。例えば人間による正誤判定結果を教師データとする。うまくいけば、DASTツールの結果を与えると、自動で正誤判定結果が出てくることになる。関連する論文がある(有料)。

まとめ

Webアプリスキャン関連の国内特許出願は余り多くないので、新しい技術を探すためならば、US特許出願や学術論文を見ていった方がいいかもしれない。当然だが、特許より論文の方が情報は多いし読みやすい(加えて大抵の論文は専門家の査読を経る)。