WebDAV時代のセキュリティ対策[前編]
各メソッドに内在する脅威

WebDAVはWebの利便性を大きく向上させる可能性を持っている。しかし、高機能化はセキュリティホールの原因ともなる。どこにどのような危険性があるのかを正しく認識・対処することで、利便性と安全性を両立していかなければならない。そこで、WebDAVを使ううえで必須ともいえるセキュリティ対策方法を紹介する。

宮本 久仁男<kmiya@coe.nttdata.co.jp>
NTTデータ COEシステム本部
システム技術開発部第三技術開発担当
2001/12/15

WebDAVの特徴と機能

 次世代プロトコルWebDAVの可能性で、WebDAVの技術仕様と構築・運用方法について解説しました。そのときに説明したとおり、WebDAVはHTTPを読むだけのプロトコルから書くこともできるプロトコルへと拡張したものです。その主な機能をあらためて振り返ると、

  • ファイル作成
  • ファイルへの書き込み
  • ディレクトリ作成
  • コピー
  • 移動
  • 削除
  • ロック操作

といったものが挙げられます。見てのとおり、ファイル操作に必要とされる機能が拡張されていることが分かります。この機能を何の制限もなく公開することは、「データを壊してください」というに等しい行為です。とはいえ、機能として便利なものがそろっているのも事実です。適切な制限をかけたうえで利用すれば、その威力は絶大なものとなります。

 本稿では、Apache 1.3.22+mod_dav-1.0.3(2001年11月28日時点の最新版)の組み合わせを例に、制限をかけない(もしくは破られた)際の影響とその対策について、各メソッドの機能とともに説明します。

 検証用クライアント環境としては、基本的にはtelnetによる80番ポートの接続を用いていますが、検証結果を分かりやすくするため必要に応じてWebフォルダ、SkunkDAV、cadaver(編注)などを使っています。

編注
Webフォルダ:Windows 98 SE以降およびWindows 2000から標準実装されているWebDAVクライアント機能(Windows 95やWindows NT 4.0などもIE 5.xをインストールすれば利用可能)
SkunkDAV:Java製WebDAVクライアント
cadaver:UNIX系OS用CUIベースのWebDAVクライアント
詳しくは「WebDAVクライアント/サーバ環境の構築」参照。

メソッドとステータスコードから見るセキュリティホール

 各メソッドの詳細に入る前に、WebDAVに関連するメソッドやステータスコードを概観しておきましょう。メソッドやステータスコードにはどのような種類があり、どのような危険性があるのかを大まかにつかんでおけば、後述する詳細も理解しやすいでしょう。

 まず、表1にメソッド、表2にステータスコードの種類を示します。

メソッド
機能
PROPFIND プロパティの取得
PROPPATCH プロパティの変更
MKCOL コレクションの作成
COPY コレクションを含むリソースおよびプロパティの複製
MOVE コレクションを含むリソースの移動
LOCK コレクションを含むリソースのロック
UNLOCK コレクションを含むリソースのロック解除
OPTIONS 既存のメソッドと同じ
GET 既存のメソッドと同じ
HEAD 既存のメソッドと同じ
POST 既存のメソッドと同じ
PUT リソースの作成
DELETE コレクションおよびそのコレクションに含まれるリソースの削除
表1 WebDAV関連メソッド

ステータス
意味
102 Processing リクエストは受け付けたが、まだ処理が終わっていない
207 Multi-Status 複数のステータスを持つ
422 Unprocessible Entity リクエストの書式は正しいが、その内容が間違っている
423 Locked リソースはロックされている
424 Failed Dependency あるリクエストに関連したリクエストが失敗したため、依存関係が保てない
507 Insufficient Storage 記憶領域が不足している
200 OK PROPPATCHが成功した(PROPPATCH)
201 Created リソース/コレクションが作成された(MKCOL、PUT)
コピーが成功(コピー先は新規作成)した(COPY)
移動が成功(移動先のリソースなどは新規作成)した(MOVE)
204 No Content リソース/コレクションの削除が成功した(DELETE)
コピーが成功(コピー先は既存のリソース)した(COPY)
移動が成功(移動先のリソースなどは既存)した(MOVE)
ロックが解除された(UNLOCK)
400 Bad Request ロック解除時に指定したロックトークンが不正なものだった(UNLOCK)
403 Forbidden サーバ側の設定で、コレクションの作成を許していない(MKCOL)
認証設定などで、許可されていないURL下にコレクションを作成しようとした(MKCOL)
コピー元とコピー先が同一(COPY)
何らかの理由でプロパティを変更できなかった(PROPPATCH)
移動元と移動先が同一(MOVE)
404 Not Found プロパティが見つからない(PROPFIND)
405 Method Not Allowed すでに存在する名前のコレクションを作ろうとした(MKCOL)
409 Conflict 読み取り専用など、変更できないプロパティを変更しようとした(PROPPATCH)
存在しないコレクションの下にリソースやコレクションを作ろうとした(MKCOL、PUT、COPY、MOVE)
例:http://localhost/DAV/の下にDAV2というコレクションがない状態でhttp://localhost/DAV/DAV2/DAV3を作ろうとした
412 Precondition Failed 指定したリソースがロック可能な状態ではないか、サーバがlockinfo XMLエレメントの要求を満足できなかった
プロパティの内容を保持できなかった、もしくはOverwriteヘッダの値がFである(COPY、MOVE)
415 Unsupported Media Type MKCOLのリクエストボディが受け付けられないものだった(MKCOL)
502 Bad Gateway コピー/移動先が別サーバであり、かつリソースへのアクセスができない(COPY、MOVE)
表2 新設/拡張されたステータスコード

 表2の中で、注意すべきステータスコードと考えられるセキュリティ上の脅威を表3に示します。

ステータス
メソッド
意味
想定される脅威
102 Processing COPYなど リクエストは受け付けたが、まだ処理が終わっていない 処理時間のかかるリクエストが発行される(DoS)
207 Multi-Status
-
複数のステータスを持つ ステータスの1つに、脅威となるステータスが含まれる
423 Locked LOCK リソースはロックされている 勝手にリソースがロックされる(DoS)
507 Insufficient Storage COPY、PUT 記憶領域が不足している 不正に記憶領域を使用される(DoS)
200 OK PROPPATCH PROPPATCHが成功した リソースのプロパティが改ざんされる(破壊)
201 Created MKCOL、PUT リソース/コレクションが作成された リソースが不正に作成される(不正利用)
COPY コピーが成功した(コピー先は新規作成) リソースが不正に作成される(不正利用)
MOVE 移動が成功した(移動先のリソースなどは新規作成) リソースの位置が不正に移動される(改ざん)
204 No Content DELETE リソース/コレクションの削除が成功した リソースが破壊される(破壊)
COPY コピーが成功した(コピー先は既存のリソース) コピー先のリソースが破壊される(破壊)
MOVE 移動が成功した(移動先のリソースなどは既存) 移動先のリソースが破壊される(破壊)
UNLOCK ロックを解除された 不正にロックが解除される(改ざん)
表3 注目すべきステータスコード

 また、表3には含まれませんが注意すべきメソッドとして、リソース/コレクションのプロパティの取得を行う「PROPFIND」があります。

 表3のステータスコードの大半はWebDAVで新規に追加されたメソッドに対するものですが、PUTなど一部既存のメソッドに関するものも含まれます。このように、従来のメソッドも拡張が施されていますので、新旧に関係なくあらためてメソッドの動きを見直した方がよいでしょう。

 
1/4

Index
WebDAV時代のセキュリティ対策[前編]
 各メソッドに内在する脅威
Page 1
WebDAVの特徴と機能
メソッドとステータスコードから見るセキュリティホール
  Page 2
各メソッドに内在する脅威と対策
 PROPFINDメソッド
 MKCOLメソッド
 COPYメソッド
  Page 3
 MOVEメソッド
 DELETEメソッド
 PROPPATCHメソッド
  Page 4
 LOCKメソッド
 UNLOCKメソッド
 PUTメソッド
後編の予告

Linux Square全記事インデックス


 Linux Squareフォーラム WebDAV関連記事
特集:次世代プロトコルWebDAVの可能性[前編]
技術仕様徹底解説

将来、SambaやCVSを不要にする可能性を秘めた「WebDAV」。このプロトコルの仕様から実用化までを徹底解説。今回は、技術仕様を明らかにする
特集:次世代プロトコルWebDAVの可能性[中編]
WebDAVクライアント/サーバ環境の構築
WebDAVの実装はすでに存在する。LinuxによるWebDAVサーバの構築とクライアントの整備を行い、実際に使ってみよう
特集:次世代プロトコルWebDAVの可能性[後編]
日本語ファイル名の利用とバージョン管理
日本語ファイル名を扱えるようにするほか、WebDAVの「V」を司るバージョン管理機能を実現。WebDAV解説完結編!
特集:WebDAV時代のセキュリティ対策[前編]
WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる
特集:WebDAV時代のセキュリティ対策[後編]
WebDAVの使用に際し、包括的な対策を行っておくのも重要である。何をどのように設定すればよいのかをここで明らかにする
特集:Apache 2.0でWebDAV
Apache 2.0の正式リリースでWebDAVも新たな段階に入った。一方で、1.3時代のmod_encodingがうまく機能しないという問題も浮上した
特集:Subversionによるバージョン管理
DeltaVがRFCとしてリリースされ、WebDAVのバージョン管理機能も足元か固まった。DeltaVの実装である「Subversion」を導入しよう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間