WAF Tech Blog

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

2016年2月

  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          
Scutum開発者/エンジニアによる技術ブログ WAF Tech Blog
▼ WAF Tech Blog 最新記事

超高速のPostgreSQLとしてGreenplumを気軽に使う

2016年2月23日

はじめに

ビッグデータ、データサイエンスという言葉の流行を大きく後押ししたのは大規模なスケールアウト、分散処理を可能としたHadoopの存在です。しかしデータサイエンティストは日々のデータ処理作業において必ずしも複数台のマシンを必要とするような大規模な処理ばかり行っているわけではありません。自身の開発用ワークステーション1台で完結するような処理も多数存在します。

2016年ではもはや当たり前ですが、多くのワークステーションはマルチコアのCPUを搭載しており、CPUがボトルネックになるようなデータ処理をマルチコアを活かして並列処理する重要性は高まっています。しかし、意外に多くのソフトウェアが、この当たり前に期待される「マルチコアを活かして単一ワークステーション上で高速並列処理すること」が出来ていません。

この悩みから、筆者は過去にテキストデータ処理を簡単にマルチコア対応にするJavaフレームワーク、MCPを開発してegrepより10倍速い行ベースの正規表現による検索を実装しました。また同様にWEKAのK-Meansクラスタリングをマルチスレッド対応させ、1台のワークステーション上でのクラスタリングを高速化しました。

続いて筆者の頭を悩ませたのは、RDBでのデータ解析です。データを対話的に解析するためにSQLを頻繁に利用しているのですが、メインで使っているPostgreSQLは基本的に1つのクエリは1つのCPUコア上で処理するため、マルチコアのパワーを全く活かせません(RDBではディスクアクセスがボトルネックになることが多いと思われていますが、CPUがボトルネックになるケースも結構あります)。

上記のMCPやWekaとは異なり、RDBのクエリを並列処理させるのはちょっとした開発で行えるような簡単なものではないので、どうしようかと悩んでいました。しかし最近になり、並列処理可能なRDB(MPPデータベースなどと呼ばれる)のうちの一つであるGreenplumがオープンソース化され、誰でも自由に使えるようになりました。

Greenplumを使うことで、マルチコアを全て活かした高速なデータ解析が行えるようになります。

続きを読む ≫ 超高速のPostgreSQLとしてGreenplumを気軽に使う

HTTP/2のRFCを読んだ感想

2015年5月27日

はじめに

私は自ら「串職人」と名乗るほどウェブの(つまりHTTPの)Proxyサーバが好きで、もう10年以上もプロキシサーバを作り続けています。このブログの主題であるクラウド型WAF、Scutumもそのひとつです。そもそもプロトコルとしてのHTTPが好きです。ウェブの裏側に、とてもシンプルな、テキストベースのHTTPプロトコルが活躍しているということが私の串職人としての出発点です。

続きを読む ≫ HTTP/2のRFCを読んだ感想

JavaのString生成方法がボトルネックになっていた話

2015年5月 7日

はじめに

先日、私たちが開発しているクラウド型WAFサービス、Scutum(スキュータム)において、予想していなかった箇所の修正によってサーバの負荷が大幅に減るということがありました。原因はこのエントリのタイトルにもあるように、Stringクラスのインスタンスを生成する際の方法にありました。

続きを読む ≫ JavaのString生成方法がボトルネックになっていた話

Tomcat 8.0.21でサーバ側SSL暗号スイート選択が可能に

2015年4月15日

はじめに

以前のエントリに書いたように、Java7以前では、SSL通信の際にサーバソケット側で暗号スイートを決定することができず、どうしてもやりたい場合にはJSSEのソースコードを書き換える必要がありました。しかし昨今、SSLに関連する多くの脆弱性や問題が相次いで見つかるようになっており、サーバ側でも暗号スイートをコントロールしたいというニーズは高まっていると思います。Java8ではJSSEにおいてサーバ側暗号スイート選択の機能が実装され、またTomcatでも8.0.21においてこれが可能になりました。

続きを読む ≫ Tomcat 8.0.21でサーバ側SSL暗号スイート選択が可能に

Tomcat/Javaで対話的にデータサイエンスする

2015年3月23日

はじめに

Scutumではベイジアンネットワークをはじめ、データサイエンスを積極的に導入して高性能のWAFを実現することを目指しています。データサイエンスやデータマイニングでは、解析対象のデータに対して対話的に解析を行うことが多くなります。今回は基本的には「対話的プログラミング環境でない」Javaで、データを対話的に解析する方法をご紹介します。

続きを読む ≫ Tomcat/Javaで対話的にデータサイエンスする

ScutumはPOODLE攻撃を検知・防御する唯一のWAFです

2015年2月 4日

はじめに

この記事をお届けできることを非常にうれしく思います。タイトルは「ScutumはPOODLE攻撃を検知・防御する唯一のWAFです」となっていますが、実は末尾に「(キリッ」が抜けているイメージです。

2015年1月26日より、クラウド型WAFのScutum(スキュータム)において、SSLv3を従来通り(AES/3DES/RC4)に使いつつ、POODLE攻撃を検知・防御できるようになりました。本エントリでは、その内容について説明をおこないます。

続きを読む ≫ ScutumはPOODLE攻撃を検知・防御する唯一のWAFです

ScutumのゼロデイHashDoS対策と、JavaのXMLパーサ実装

2015年1月28日

はじめに

数年前に発見されたHashDoSですが、実際に攻撃が行われているケースは殆ど目にしません。ソフトウェアのロジックを突くDoSとしては、他にApacheに対してRangeヘッダを使う攻撃手法(Apache Killer)なども発見されましたが、こちらも同様に、殆ど実際の攻撃としては検知していません。DoS攻撃にはもっと単純で、攻撃対象のアーキテクチャを調べる必要のない、シンプルな物量攻撃が好まれているような印象です。そのため筆者としてはHashDoSのセキュリティリスクは非常に低いものという認識です。

さて現在、国内ではあまりニュースになっていませんが、いくつかのミドルウェアにおいてHashDoS対策の漏れが発見されており、対策の実装が進められているフェーズのようです。これらのミドルウェアにおけるHashDoS攻撃の対策をScutumでは既に実施済みで、「ゼロデイ攻撃への対策」ができている状態です。情報がパブリックになった時点で、また続報をお届けします。

続きを読む ≫ ScutumのゼロデイHashDoS対策と、JavaのXMLパーサ実装

POODLE攻撃の検知とJavaによる検証コード

2014年12月18日

はじめに

SSLv3のパディングに注目した攻撃手法であるPOODLEは、以前こちらのブログのエントリで取り上げたことがあるBEASTCRIMEに非常によく似た攻撃です。今回はこのPOODLEについて、一般的な視点とはやや異なる、筆者独自の意見を述べてみたいと思います。

必ずしもSSLv3を無効にする必要はない

POODLEの対策として書かれている情報はそのほぼ全てが「SSLv3を無効にする」というものですが、個人的には技術的にもう少し踏み込んで考えてみても良いのではないかと感じます。私は以前のエントリで次のように指摘しています。

続きを読む ≫ POODLE攻撃の検知とJavaによる検証コード

ビッグデータ解析による比較では、WAFはUNION SELECTだけでブロックしてもよさそう?!

2014年9月11日

はじめに

初期のScutumはUNION SELECTという文字列があると単純にSQLインジェクションであると判断して、通信をブロックしていました。現在はもっとインテリジェントな検知エンジンを搭載しており、UNION SELECTだけではブロックしません。

実は、私は5年前には、UNIONだけでもブロックしてよいのではないかと考えていました。というのも、通常の(特に日本語が使われている)ウェブサイトにおいて、ブラウザから「UNION」という文字列が送られてくるケースは非常に稀だろうと思っていたからです。

最近になって、ふと「実際にUNION SELECTが通常の文章の中でどのくらい使われているか、大量の英文のデータを処理してみたいな」と思い、情報収集を開始しました。するとまさにこの用途にぴったりのデータセットが見つかりました。Google BooksのNgram Viewerです。

続きを読む ≫ ビッグデータ解析による比較では、WAFはUNION SELECTだけでブロックしてもよさそう?!

例えば、Strutsを避ける

2014年4月23日

はじめに

筆者は10年以上ウェブアプリケーション開発を主な業務とするJavaプログラマであったにも関わらず、Strutsについてはこれまでずっと食わず嫌いでした。初期のStrutsは「XMLだらけで効率が悪そう」というイメージが強かったためです。最近はRuby on Rails等の影響を受けCoC(convention over configuration)を採り入れ、XML地獄もだいぶ解消したようです。

StrutsはJavaアプリケーションらしくない種類(任意のコード実行等)の脆弱性を連発することでも知られており、最近は我々の提供するSaaS型WAFサービス、Scutum(スキュータム)のお客様からも頻繁にStrutsについての問い合わせを受けるようになりました。また、去年見つかった任意のコード実行の脆弱性では、脆弱性の公表後すぐにPoCが出回り実際に攻撃が発生するなど、悪い意味で注目せざるをえないフレームワークとなっています。

そのため、最近になって私もようやく重い腰を上げ、Strutsと正面から向き合ってみることにしました。

続きを読む ≫ 例えば、Strutsを避ける