SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaのデシリアライズに潜むセキュリティ問題

Apache Commons Collectionsの脆弱性解説

Javaのデシリアライズに潜むセキュリティ問題(前編)

  • このエントリーをはてなブックマークに追加

 2015年11月にApache Commons Collectionsのデシアライズ実装に由来する脆弱性が大きな話題となった。本稿では、本問題を正しく理解し本質的な対応を取れるように、問題の概要や攻撃の仕組みについて技術解説を行う。

  • このエントリーをはてなブックマークに追加

はじめに

 11月、Foxglove Securityの研究者が、Apache Software Foundationが提供するJavaライブラリCommons Collectionsを使用して、同ライブラリを同梱しているアプリケーションサーバを攻撃する手法をインターネットで公開した。

 Commons Collectionsライブラリは、WebSphere、WebLogic、JBossなどのアプリケーションサーバの他、Javaアプリケーションで広く利用されており、本脆弱性は大きな話題となった。Java開発者の方であれば、すでに耳にしていらっしゃることだろう。

 本件は、本質的にはライブラリの利用者側がデシリアライズ処理をセキュアに実装していないことに起因し、単にライブラリの修正プログラムを適用するだけでは、根本的な対処とならない。

 本記事では、開発者の皆さまが本問題を正しく理解して、本質的な対策をとっていただけるよう、問題や攻撃の仕組みについて技術解説する。

問題の概要

 概要については、さまざまな記事になっているためご存じかと思うが、オブジェクトのデシリアライズ時に任意のコードを実行できてしまうという問題である。詳細についてはJVNVUなどを参照いただきたいが、影響を受ける条件は、以下2点である。

  • Commons Collectionsライブラリ v3系またはv4系がクラスパス上に存在すること
  • シリアライズされたオブジェクトを外部から受けとっていること

 注意すべきは、明示的にCommons CollectionsライブラリのAPIを使っていなくても、ライブラリがクラスパス上に存在するだけで影響を受ける点だ。理由については後述する。

 攻撃者は、細工したオブジェクトをシリアライズして前記条件を満たすアプリケーションなどに送信することで、受信側のサーバ上で任意のコードを実行することができる。シリアライズされたオブジェクトを受け取るサービスがインターネットからアクセス可能な場合は、遠隔から攻撃が可能である。

 攻撃の仕組みを解説する前に、まずは本問題を説明する上でキーとなるシリアライズ、デシリアライズについて簡単に説明しよう。

シリアライズ・デシリアライズとは

 シリアライズとは、プログラムで扱うオブジェクトの状態を保持したまま送受信したり、ファイルへ読み書きを行ったりするために、オブジェクトをバイト列などに変換することである。デシリアライズはその逆だ。シリアライズ時には、対象オブジェクトから参照されているオブジェクトもまたシリアライズ対象となる。ポイントは、デシリアライズ時にデシリアライズ対象クラスが実装しているreadObjectメソッドが実行されるところにある。対象オブジェクトから別のオブジェクトを参照している場合は、各オブジェクトのreadObjectメソッドが順次実行され、オブジェクトが復元される。

図1 シリアライズ・デシリアライズ処理
図1 シリアライズ・デシリアライズ処理

 攻撃者はこれを悪用し、readObjectメソッドが実行された際にRuntime.exec()などを使ってOSコマンドなどを実行するように細工する。

 それでは、攻撃の仕組みについて詳しく見ていこう。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
問題の詳細と攻撃の仕組み

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Javaのデシリアライズに潜むセキュリティ問題連載記事一覧

もっと読む

この記事の著者

藤本 万里子(JPCERT コーディネーションセンター)(フジモト マリコ)

一般社団法人JPCERTコーディネーションセンター 早期警戒グループ 情報セキュリティアナリスト。前職では、国内企業においてソフトウエアの開発や内部統制のためのシステム開発等を担当。 2015年4月、JPCERTコーディネーションセンター早期警戒グループに情報セキュリティアナリストとして着任。主に国...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9150 2015/12/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング