嬉しいことに、FIRSTに受かり、2回目の海外カンファレンス発表をできることになった。

https://www.first.org/conference/2018/

海外カンファレンスデビューは去年の台湾だったけれど、これがとてもやりがいがあって楽しかったので、また近いうちに是非したい!と思っていた。

そのこともあり、空いた時間でコツコツと検証を進めていたのが功を成したのかと。

手を動かすのはやはり重要。

今回改めて思うのが、アイディア自体に劇的な目新しさが無くとも、

「これは他の人も思いつくかな」レベルのちょっとしたアイディアでも、

実際に検証して結果を出すとなると、その一手間を惜しむ人は多いように思う。

言い換えれば、思いつきレベルのアイディアでも、実証すると

一気に価値が上がるのではないかということ。

この意識を大切に、これからも色んな思いつきを、アイディアに留めず

実証していければ素敵だと思う。

10年ぶりのオランダ

gamzatti
Vote 0 Votes

来週、オランダ出張へ。

オランダは、ちょうど10年前に自社で出張へ行ったことがあり、

また出張で来られるとは思っていなかった。

私にとって初の海外出張で、行きの飛行機は、嬉しさ半分、不安半分だったのを覚えている。

その頃は片道だけビジネスにグレードアップして良いというルールがあったので、

今までたった1回きりの貴重なビジネス体験も出来た。

機内では、興奮して寝られず(笑)

前回は訪問先がヒルバーサムだったので、アムステルダムはあまり回れていない。

ただ、運良く土日を挟んでいたので、週末に電車でベルギーまで行けた。

今回は、アムステルダム滞在時間も少しありそうなので、楽しみ。

今週末で仕事がひと段落したので、心身共に、思い切り満喫出来そう。

S2-053

gamzatti
Vote 0 Votes

引き続きでたS2-053を検証。

またOGNL関連ですね。

FreeMarkerなるタグライブラリを使って、ユーザからの入力値を参照しているような場合に影響を受けるようです。

FreeMarkerは使ったことがなく、使い方がよくわかりませんでしたが、以下の通りにやると

確かに任意のコード実行できる。

S2-053 复现分析过程(附POC)

とはいえ、攻撃成立には条件があるので、影響は限られているのかもしれないと思いました。

S2-052

gamzatti
Vote 0 Votes

仕事がひと段落したので、前から気になっていたS2-052を検証。

ProcessBuilderなどの外部プロセスを起動するコマンドが含まれるXMLをリクエストで投げると、

XStream.fromXML()でXMLをデシリアライズする処理の延長で任意のコードが実行されるようです。

私が試したのは以下。

S2-052的POC测试

ProcessBuilderのcommandメソッドの仕様は、引数が持つプログラムを実行したい場合、

ProcessBuilder pb = new ProcessBuilder();
pb.command("touch", "/tmp/attack")


のようにcommandメソッドの引数に指定するので、

<command> <string>touch</string><string>/tmp/attack</string> </command>

のように指定すると、好きな外部プロセスを起動できてしまう。

自サーバに入れているフィルタはOGNL系の文字列をブロックするようにしていますが、

今回はOGNL系の攻撃ではないので、これでは防げない。

リクエストにjava.lang.ProcessBuilderとかjava.lang.Runtimeなどが入っていたらブロックする、

なども検討した方がいいのかもしれないなと。

引き続き調査です。

7月末にパリ出張へ。

9年前に出張でオランダのHilversumに行って以来、人生二回目のヨーロッパ。

ヨーロッパが二回とも出張って、IT 系にしては珍しいので幸運だと思う。

今回のミッションは日本で開催していないセキュリティ系のトレーニングを受講することだったので、スケジュール的にも余裕があり、色々楽しめた。


1日目は12時間半のフライトを経て、現地時刻16時半にシャルル・ド・ゴール空港に到着。

1_frightmeal.jpg

"RER"(rarではない:-)) と呼ばれる高速郊外鉄道でパリ市内へ。

海外へ行くと、大抵最初に迷うのが電車の乗り方。

パリはメトロがたくさん走っていて、今回も路線や切符の買い方に少し迷う。

Denfert-Rochereauという駅で降りてホテルへ。

RERは郊外電車らしく、一駅の間隔が長いので、ホテルに着いた頃には結構良い時間になっていた。

移動疲れもあるので、初日の夜はホテルのラウンジで夕食を済ませることに。

このラウンジがとても良かった。静かで落ち着いていて、料理も美味。

1_hotelrestrunt.jpg

何より驚いたのが、夏のパリは日没が遅く、22時頃まで明るいこと。

夕食後は部屋から美しい夕日が見えた。


パリ旅の幕開けは、こんな感じでスタート。

s2-048

gamzatti
Vote 0 Votes

s2-048の脆弱性、 自分のサーバがやばいかなと思ってPoCを実行してみたら、

s2-045 の時に作ったサーブレットフィルタがブロックしてくれていました。

あまり脆弱性の詳細をちゃんと調べていないけれど、s2-048もペイロードを見たらやっぱりOGNL関連だからかな。

リクエストに含まれるOGNLコードをサーブレットフィルタやWAFでブロックするのは、回避策としてなかなか効果がありそうです。

今話題騒然のランサムウエアをチームみんなで分析しました。

http://sisoc-tokyo.iii.u-tokyo.ac.jp/wp-content/uploads/2017/05/20170518_WannaCry_report.pdf

JEP 290: Filter Incoming Serialization Data

Java9から、 ObjectInputFilter という新しいAPIを使って、セキュアにデシリアライズを行う仕組みが提供されるそうです。


- ちらっと読んだ感じでは、デシリアライズ対象オブジェクトが参照するオブジェクトの数や、
  深さ(ネスト)を制限する仕組みっぽい
-ObjectInputStream#resolveClass()のように、デシリアライズするクラスを制限することも出来るっぽいが、
  "Non-Goals"に特定のクラスに対するポリシーを制限するものではないというような記載もあり、
   コンセプトが不明。
- システムプロパティとプログラム個別、どちらでも設定出来る
- これらの機能はJava8以前のバージョンにもバックポートされる予定とのこと。
  →現段階では最新のJava8にもバックポートされていないようです。

時間が出来たら試してみよう。 なお、Java9は今年の7月にリリースされるようです。

2年間の出向先での任期が終わった。

仕事内容も環境も大きく変わったので、最初は悩み、格闘する毎日。

これまでも割と頻繁に仕事が変わっていたので、変化には慣れていたはずだったけど、

自分で感じている以上に、プレッシャーを感じていたのだと思う。

挫折しかけた時もあったけど、ここで逃げたら11年のキャリアが終わってしまうと思った。

時間がかかっても地道にやるしかないと思って、先が見えないながら模索しつつ少しづつ進んでいくうちに、

いつの間にか自然に頭と手が動くようになって、仕事が楽しい、活躍できていると感じるようになった。

周りの人と打ち解けてから本音で話してみると、みんな私と同じように悩んだり焦っていたことも分かって、

少し安心すると同時に、一見余裕に見える人でも、みんな裏では悩みながら必死で頑張っているのだなぁと。

「成果が出なくても、悩んだり失敗したりした過程は決して無駄にはならない」

一緒に頑張ってきた仲間が教えてくれた言葉がとても印象的で、それは真実だと思った。

ログ監視(続編)

gamzatti
Vote 0 Votes

Struts を狙う攻撃のログ監視

でContent-typeをapacheのログに記録するように設定したら、

それなりにスキャンが見られました。

今のところ、新しいようなリクエストのパターンは見られず、

すでに公開されている攻撃コードの典型的なパターンが多いようです。

サンプルアプリなどに入っていそうな名前の、xx.action などの

パスへのリクエストが多そうです。

存在するパスに対しても、サーブレットフィルタがブロックしてくれていました。

引き続き、観測を続けたいと思います。