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

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

MOVEメソッド

脅威:

  • 勝手にリソースやコレクションを移動/破壊されてしまう
     既存のリソースに対する上書きを実施されることで、コンテンツが破壊されることが考えられる(リスト7)。

$ ls -l /home/davnoauth/     ←元の状態は?
total 56
-rw-r-----   1 share   share     7533 Nov 28 17:55 DAVSec.txt
-rw-r-----   1 share   share     7659 Nov 28 17:55 DAVSec.txt~
-rw-r-----   1 share   share    13880 Nov 28 17:55 DAVSec_.lzh
-rw-r-----   1 share   share     1155 Nov 28 17:55 FIG.txt
-rw-r-----   1 share   share      284 Nov 28 17:55 FIG.txt~
-rw-r-----   1 share   share    14821 Nov 28 21:44 davsec20011126.lzh
drwxr-x---   2 share   share       48 Nov 28 20:46 sample/
$ telnet localhost 80
(中略)
MOVE /davnoauth/FIG.txt HTTP/1.1 ←FIG.txtというファイルを移動
Accept-Language: ja, en-us;q=0.2
Destination: http://tripmachine/davnoauth/davsec20011126.lzh ←移動先(上書き)
Overwrite: T           ←上書き許可
Depth: infinity
Translate: f
User-Agent: Mage Hoge DAV 1.1
Host: tripmachine
Content-Length: 0
Connection: Keep-Alive

HTTP/1.1 204 No Content      ←レスポンス開始(MOVE成功)
(中略)
Content-Type: text/plain
                  ←レスポンス終了
Connection closed by foreign host.
$ ls -l /home/davnoauth/     ←その後は?
(FIG.txtはMOVEされたため存在しない)

total 40
-rw-r-----   1 share   share     7533 Nov 28 17:55 DAVSec.txt
-rw-r-----   1 share   share     7659 Nov 28 17:55 DAVSec.txt~
-rw-r-----   1 share   share    13880 Nov 28 17:55 DAVSec_.lzh
-rw-r-----   1 share   share      284 Nov 28 17:55 FIG.txt~
-rw-r-----   1 share   share     1155 Nov 28 17:55 davsec20011126.lzh ←FIG.txtのファイル内容に置き換わる
drwxr-x---   2 share   share       48 Nov 28 20:46 sample/
$
リスト7 MOVEメソッドを使ったコンテンツの破壊

 また、リソース名やコレクション名を変更されてしまうことで、コンテンツの依存関係が崩されるといった事態も考えられます。

対策:

  • MOVEリクエストの発行を制限する
     PROPFINDやMKCOLなどの制限と同様の設定を行うことで、リクエストを制限可能。

DELETEメソッド

脅威:

  • 勝手にリソースやコレクションを削除されるリスト8

$ ls -l /home/davnoauth/         ←メソッド発行前の様子は?
total 40
-rw-r-----   1 share   share     7533 Nov 28 17:55 DAVSec.txt
-rw-r-----   1 share   share     7659 Nov 28 17:55 DAVSec.txt~
-rw-r-----   1 share   share    13880 Nov 28 17:55 DAVSec_.lzh
-rw-r-----   1 share   share      284 Nov 28 17:55 FIG.txt~
-rw-r-----   1 share   share     1155 Nov 28 17:55 davsec20011126.lzh ←存在する
drwxr-x---   2 share   share       48 Nov 28 20:46 sample/
$ telnet localhost 80
(中略)
DELETE /davnoauth/davsec20011126.lzh HTTP/1.1 ←リクエスト開始/davsec20011126.lzhを消してみる
Accept-Language: ja, en-us;q=0.2
Overwrite: T
Depth: infinity
Translate: f
User-Agent: Mage Hoge DAV 1.1
Host: tripmachine
Content-Length: 0             ←リクエスト終了
   
                 ←空行(リターン)入力
HTTP/1.1 204 No Content          ←レスポンス開始(成功)
(中略)
Content-Type: text/plain
                      ←レスポンス終了
Connection closed by foreign host.     ←タイムアウト
$ ls -l /home/davnoauth/ ←davsec20011126.lzhは消えている
total 36
-rw-r-----   1 share    share        7533 Nov 28 17:55 DAVSec.txt
-rw-r-----   1 share    share        7659 Nov 28 17:55 DAVSec.txt~
-rw-r-----   1 share    share       13880 Nov 28 17:55 DAVSec_.lzh
-rw-r-----   1 share    share         284 Nov 28 17:55 FIG.txt~
drwxr-x---   2 share    share          48 Nov 28 20:46 sample/
$
リスト8 DELETEメソッドの発行によるファイルの削除

対策:

  • DELETEリクエストの発行を制限する
     PROPFINDやMKCOLなどの制限と同様の設定を行うことで、リクエストを制限可能。

PROPPATCHメソッド

脅威:

  • リソースやコレクションのデッドプロパティを勝手に追加/改ざん/破壊されてしまう

 SkunkDAVクライアントで、改ざん前のデッドプロパティの値を表示している様子を画面3に、改ざんの様子をリスト9に、改ざん後のデッドプロパティの様子を画面4に示します。

画面3 PROPPATCHによるプロパティ変更例(画像をクリックすると拡大表示します)

$ telnet localhost 80
(中略)
PROPPATCH /davnoauth/DAVSec.txt HTTP/1.1
Host: tripmachine
Connection: close, TE
TE: trailers, deflate, gzip, compress
User-Agent: Skunkzilla/1.0 RPT-HTTPClient/0.3-2
Accept-Encoding: deflate, gzip, x-gzip , compress, x-compress
Content-type: application/octet-stream
Content-length: 200

<?xml version="1.0" ?><skunk:propertyupdate xmlns:skunk="DAV:"><skunk:set><skunk:prop>
<ns92:moge xmlns:ns92="http://teketou/xmlns">mage</ns92:moge> ←デッドプロパティの改ざん内容
</skunk:prop>
</skunk:set></skunk:propertyupdate>


HTTP/1.1 207 Multi-Status
Date: Wed, 28 Nov 2001 13:40:18 GMT
Server: Apache/1.3.22 (Unix) DAV/1.0.3
Connection: close
Transfer-Encoding: chunked
Content-Type: text/xml; charset="utf-8"

12a
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:ns1="http://teketou/xmlns"
 xmlns:ns0="DAV:">
(中略)
</D:multistatus>

0

Connection closed by foreign host.
$
リスト9 デッドプロパティの改ざん

画面4 改ざん後のデッドプロパティ(画像をクリックすると拡大表示します)

対策:

  • PROPPATCHリクエストの発行を制限する
     PROPFINDやMKCOLなどの制限と同様の設定を行うことで、リクエストを制限可能。
3/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 記事ランキング

本日 月間