HOME > Scutumを支える技術 > Scutum技術ブログ

技術者ブログ

クラウド型WAF「Scutum(スキュータム)」の開発者/エンジニアによるブログです。
金床“Kanatoko”をはじめとする株式会社ビットフォレストの技術チームが、“WAFを支える技術”をテーマに幅広く、不定期に更新中!

2021年10月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Scutum開発者/エンジニアによる技術ブログ WAF Tech Blog

2020年になってもシグネチャ依存型のWAFが多いのはなぜか?

はじめに

以前「シグネチャ依存型のWAFは避けよう」という記事に詳しく書いたように、WAFの仕事の本質は分類です。

WAFにはファイアウォールという言葉が含まれることから、その仕事には「守る」あるいは「防ぐ」ようなイメージがありますが、実際にはWAFが仕事を行う上で最も重要になるのは、その通信が攻撃なのかどうかを見分けること、つまり「分類」です。分類が終わってしまえば、その結果に応じて通信を許可したり、禁止するだけでよいので、そこには技術的な意味での難しさはありません。

つまりWAFというのは「ソフトウェアが分類を行う場面」であり、いかにしてコンピュータ、ソフトウェアに上手に物事を見極めてもらうのか、分類してもらうのかという点が、よいWAFを実現するために必要な技術のコアになります。

あるHTTPリクエストを見て、「ああ、これは攻撃だよね」と専門家が目で確認してわかる場合。果たしてソフトウェアに同じことをやらせることができるでしょうか。近年急激に進化しているデータサイエンス(AI技術)を用いることで分類性能を上げ、これを実現に近づけていくことが、良いWAFへの道すじになります。

この視点から考えてみる場合、シグネチャ(あるいはルール)というのはデータサイエンスの分類技術の中ではかなり分類が苦手なものであるため、シグネチャをコア技術としてWAFを作るということはとても最適な選択であるとは言えません。

私が上記のブログを発表したところ、「シグネチャは古い」という言説が古くなっていないことが逆に驚きだ、というフィードバックを頂きました。実は私もそう思います。私は2014年の時点でシグネチャの限界をデータサイエンスを学ぶことで突破できることに気づき、このことを他のWAFベンダーや開発者にも知ってほしくてこちらの記事を公表しました。カンファレンス等で旧知の他社のWAF担当者に会った際にも「機械学習やデータサイエンスを使うと、シグネチャ依存型よりも良くなる」という話を繰り返した記憶があります。それから6年が経過し、さらにデータサイエンスに関する情報が手軽に手に入るようになったにも関わらず、シグネチャ依存型のWAFは減るどころか、むしろいくつか増えてしまいました。

この記事では「なぜ、シグネチャ依存型のWAFが減らないのか」についていくつかの理由を挙げてみます。尚、この記事を読む前に下記の記事に目を通して頂けると、内容が伝わりやすいかと思います。

  1. シグネチャ依存型のWAFは避けよう(記事1)
  2. WAFにおけるシグネチャの功罪(記事2)
  3. 大手クラウドのオプション型のWAFの弱点(記事3)

下記はあくまでも私個人の考察に過ぎず、明確なエビデンスが存在しない部分もあります。その前提でお読み頂ければと思います。

理由その1:WAFの仕事の本質が「分類」であることに気づいていない

WAFは元々がシグネチャ依存型としてスタートしているために「WAF=シグネチャ」のイメージが強く、その仕事の本質についてじっくり考えてみる、ということ自体があまり行われていないのかもしれません。これはWAFの利用者はもちろん、WAFを開発・提供する側についても言えることです。

WAFの本来の目的は「攻撃は止めて、正常な通信は止めないこと」です。つまり「シグネチャを使うかどうか」はこの目的に対する手段に過ぎません。シグネチャの利用が目的のための優れた手段なのかどうかは常に見直す必要があるはずです。そして見直してみれば、「これは明らかに不適切な分類技術だ」ということがわかるでしょう。

このように「WAFの仕事の本質は分類なのだ」ということに気づく事が重要です。それに気づかなければ「シグネチャでは不十分だ」とはなりません。まだ多くの人がこの点について気づいていないからこそ、シグネチャ依存型のWAFが多く存在しているのではないか、というのがこの「理由その1」です。

「WAF=シグネチャ」という固定観念の強さを示す1つの例が、IPAが公表している「WAFの導入に向けた検討項目(PDF)」です。IPAのサイトを見ればわかりますが、こちらの資料は比較的昔からWAFを開発・提供しているある1つの会社さんの協力によって作成されています。この資料の15ページでは「シグネチャ」という言葉が繰り返し登場し、また下記のように断言されています。

WAF での検知は、シグネチャとして攻撃通信が定義されたものを検知する仕組みです。

この資料が発表されたのは2019年です(!!!)。この5年前からScutumはシグネチャ依存をやめていますし、他社さんでシグネチャを用いないWAFも存在しますから、上記は事実ではないことがわかります。IPAは公的な組織ですからもう少し調査できなかったのかと思いますが、いずれにせよこの資料こそが私にこの一連のブログ記事を書く決意を固めさせてくれた最大の理由になりました。これほどまでに「WAF=シグネチャ」という固定観念が強いのだなぁと認識できたのです。IPAの発信する情報は多くの人にリファレンス的に参考にされています。そのため、IPAが「WAFでの検知はシグネチャを使います」と言っているのであれば、普通の人はそれを信じるでしょう。このような状況に対してより適切な情報を発信するため、この一連のブログ記事を書くことにしました。

WAF利用者が「WAFの仕事は分類である」ことを知らない場合、シグネチャ依存型のWAF(分類性能が低い)もAI型のWAF(分類性能が高い)も横並びで似たようなものに見えてしまいます。このような場合、他の理由(たとえば価格など)から、WAF選定の結果としてシグネチャ依存型WAFを選んでしまう可能性があります。すると当然、シグネチャ依存型のWAFでも売上が生じることから、ビジネスとして継続できます。このことが「シグネチャ依存型WAFが減らない」ことに繋がっているのかと思います。

理由その2:WAFの元々の成り立ちと固定観念

これはおそらく間違いない理由の1つだろうと思います。上にも書きましたが元々WAFは(おそらくSnort等のIDSの流れを汲んで)シグネチャを分類のコアに据えて登場したため、それがまだそのまま生き残っているということです。

最初に「WAF=シグネチャ」という形である程度普及したために、2020年の現在でも多くの人が固定観念として「WAFというのはシグネチャを使うものだ」と考えてしまっており、そのことが今でもシグネチャ依存型が残っている理由の1つになっているかと思います。一例は上記のIPAのものです。そして別の例として、技術評論社から出版されている「セキュリティのためのログ分析入門」という書籍より、WAFに関する説明をP.12より引用します。

しくみとしてはシグネチャ/パターンファイルなどと呼ばれる攻撃パターンを判別する情報を持っておき、HTTPリクエストをそれと比較する方法で攻撃を検知します。知られている攻撃を確実に検知できる反面、新種の攻撃に対しては検知できずにすり抜けさせてしまいます。新たな攻撃に対しては無力であり...(後略

ここでも、WAFはシグネチャ(パターン)によって検知する、と断言されています。この書籍は2018年の9月に出版されたものであり、IPAと同様、比較的最近の情報発信です。

個人的に非常に印象深いのは、上記のIPAの例も、そして書籍の例も、どちらも情報セキュリティの現場で長年経験を積んだベテランが発信している情報だということです。経験がある人にこそ、WAF登場時の「シグネチャをコアにするものだ」という概念が強く刻まれているのかもしれません。

理由その3:シグネチャ依存型からAI型へ進化させるコストが高い

仮にWAFの開発・提供を行っている組織が「シグネチャ依存型では十分な分類性能を達成できない」と気づいたとしても、そこから、より高度なデータサイエンスを使うWAFに進化させるためには技術的なハードルがあり、コストがかかります。

また、例えばWAFの管理画面にシグネチャを羅列しておき、利用者側がそれぞれのON/OFFを切り替えられるようなインターフェースを提供している場合には、シグネチャ依存型からの脱却はより難しくなる(利用者側の立場からすると使い勝手が変わってしまい、移行コストがかかる)ため、営業サイドからも「お客様が混乱するからやめてほしい」といった形でシグネチャ依存型からの脱却に対し停滞する向きに力がかかるでしょう。

Scutumは幸いにも「なるべくユーザさんに手間をかけさせず、フルマネージドにする」という根本思想から、サービス開始当初(このときはScutumもシグネチャ依存型でした)から管理画面にそれぞれのシグネチャについての設定項目は設けていなかったため、お客様側には特に負担をかけずにAI型に移行することができました。

昔からWAFを開発・提供している会社さんがシグネチャ依存型のままでいることの理由として、この「理由その3」があるだろうと思います。

理由その4:シグネチャ依存型WAFは開発コストが比較的低い

記事2」に書いたように、シグネチャ依存型のWAFは開発コストが低く済みます。特に、シグネチャそのものをModSecurityやOWASPから流用すれば、さらに安くできます。そのため、「まずは分類性能はあまり高くなくてもいいから、動くWAFサービスを作ってリリースすることが重要だ」というケース、つまりゼロからWAF事業をスピーディに立ち上げたい場合は、シグネチャ依存型のWAFになる可能性が高いでしょう。もちろん理由1〜3もこれを後押しします。

新しい(特に、大手クラウドサービスのオプションの)WAFは、ウェブアプリケーションを保護することもそうですが、PCIDSSの要件を満たしたり、WAFをラインナップすること自体を目的にしている可能性があるかなと思います。この場合、素早くサービスとしてリリースすることが最大のモチベーションになるため、実装としてシグネチャ依存型のWAFが選ばれるでしょう。

また、CDNやDDoS対策が本業である会社が追加でWAFサービスを出す場合があります。「我々のサービスはHTTPの通信が通るので、ついでにそこでWAFもできるな」というモチベーションがあるのだろうと思います。この場合、WAF部分には本業(CDNやDDoS対策)ほどは開発コストをかけないでしょうから、やはりコストの低いシグネチャ依存型WAFが選ばれているのではと思います。

理由その5:シグネチャ依存型WAFの抱える問題が広く知られていない

シグネチャは分類が苦手なので、シグネチャ依存型のWAFは「記事2」に書いたように

  • 攻撃はきちんと止めるが、正常通信もかなり止めてしまうWAF
  • 正常通信は止めないが、攻撃もあまり止めてくれないWAF

のどちらかに落ち着いてしまうケースが多いのですが、まだWAFは普及しはじめと言ってよい初期段階にあるため、多くのWAF利用者(あるいは、検討中の方)は、このことをまだ体験としては知りません。一度体験すると「できるだけちゃんと分類するWAFが欲しい」と感じるだろうと思いますが、これにはまだ時間がかかるのかもしれません。

誤検知に振り回されたり、あるいは攻撃が止まらずインシデントが発生してしまったり、というイベントに遭って初めて「シグネチャ依存型のWAFって結構問題があるんだな...」となるのは悲しいですから、この記事などを参考にWAF選びをして頂けると幸せになれるかなと思います。

理由その6:専門家の分野の違い

最後の理由は、WAFについての説明を行う技術者、専門家に関するものです。

WAFについて語る技術者のほとんどはウェブアプリケーションセキュリティの分野の専門家です。彼らはウェブアプリケーションにどんな攻撃が来るか、どのような被害が起こり得るか、ということについては詳しいです。彼らに実際のHTTPリクエストを見せれば、「これは攻撃だね」「これは正常な通信だよね」と正確に分類できるでしょう。現在WAFを開発・運用している会社には、基本的にはこのタイプの技術者が多いだろうと思います。

しかし、「人間の専門家ができる分類作業を、ソフトウェアにやらせる技術」は、実はこれとは分野がまったく違います。シグネチャ程度の原始的なロジックであれば「セキュリティ畑」の技術者にも理解できますが、より高度な分類を行わせる技術は「データサイエンス」に属するため、人材あるいはスキルとしては、いわゆるデータサイエンティストが必要になるのです。

WAFにおける「ウェブアプリケーションセキュリティ」の知識は、データサイエンスの世界の言葉では「ドメイン知識」と呼ばれるものです。良いWAFを作るにはドメイン知識はもちろん必要なのですが、それだけでは必要な技術、知識の半分にしかなりません。

セキュリティ分野の技術者の多くにデータサイエンスの知識が不足していることが最もわかりやすいのは、WAFの防御性能を評価する場合です。最近見つけたものではこちらの記事がそうなのですが、複数のWAFの性能を比較する際、「○件の攻撃リクエストのうち、×件を止めることができた。多く止めた△というWAFが優秀だ」というものです。私はこのパターンを何度も目にしています。このパターンの何が悪いか、わかるでしょうか。

そう、この評価方法では、「通信はとにかく全部止める」という、現実的にはWAFとして成立しないロジックが最も優秀になってしまうのです。この部分(分類器の性能評価)は、データサイエンスでは基礎の勉強で学ぶことができます。

WAFの核となるのは分類であり、これはデータサイエンスそのものです。そのため、データサイエンスの知識なしにWAFを作ったり語ったりしてはいけないだろうと思うのですが、残念ながらWAFに関わる多くの技術者がまだデータサイエンスの知識に乏しいままの状態に見えます。データサイエンスの勉強をしていないセキュリティ技術者の立場からは、理解できて馴染みのある「シグネチャ依存型」が扱いやすいでしょうから、そこから逸脱する概念には心理的な壁があるかもしれません。そのため、「シグネチャ依存型のWAFはなぜ誤検知が多いのか?」という質問に対し、「WAFというのはそもそもそういうものだ」というような説明をしてくるかもしれません。このように、多くのWAFに関わるセキュリティ技術者の専門分野にデータサイエンスが含まれていないことも、シグネチャ依存型WAFが減らない理由の1つでしょう。

まとめ

今回はシグネチャ依存型WAFがなぜ2020年になってもこれほど多く残っているのか、について考察してみました。考えられる理由は6つとかなり多く、これらが複雑に混ざり合わさることで現状があるのだろうなと考えています。WAFというのはシグネチャだけで作らなければいけないというような決まりはなく、より高精度に分類を行い、結果として攻撃だけを止めていくように進化するべきだと考えます。この記事がシグネチャ依存型のWAFで悩んだり苦しんでいる人の目にとまることを願っています。