WebDAV時代のセキュリティ対策[前編]
− 各メソッドに内在する脅威 −
NTTデータ COEシステム本部
システム技術開発部第三技術開発担当
2001/12/15
■LOCKメソッド
●脅威:
- ファイルに勝手にロックをかけられ、WebDAV経由での操作が不可能になる
cadaverを使ってロックをかけている様子をリスト10に、ロックをかけられたことを知らずにSkunkDAV経由でロックをかけようとした様子を画面5に示します。
dav:/davnoauth/> lock DAVSec.txt |
リスト10 cadaverによるLOCKメソッドの使用 |
画面5 他者の操作ができない例(画像をクリックすると拡大表示します) |
●対策:
- LOCKメソッドの発行を制限する
PROPFINDやMKCOLなどの制限と同様の設定を行うことで、リクエストを制限可能。
また、すでにロックがかけられてしまった場合はロックデータベースファイルを削除する(リスト11)ことでロックを解除することが可能です。
# ls -al |
リスト11 ロックデータベースファイルの場所と削除 |
この状態で、例えば新規にロックをかけた(画面6)場合、ロックデータベースファイルは新たに作成されます。
画面6 ロック操作の例(画像をクリックすると拡大表示します) |
■UNLOCKメソッド
●脅威:
- ロックをかけた以外の人がUNLOCKによって解除を実施してしまう
LOCKメソッドでかけたロックをUNLOCKメソッドで開放するためには、Lockトークンが必要になります。対応するLockトークンは、LOCKリクエストに対応したレスポンス中で返却されますが、このトークンが不正に取得されてしまうとロックをかけた以外の人でもUNLOCKによるロック解除の実施が可能になります。画面6にてSkunkDAVでLOCKメソッドを発行しているときの通信内容をリスト12に示します。
LOCK /davnoauth/DAVSec.txt HTTP/1.1 |
リスト12 LOCKメソッド実施中の通信内容 |
上記の例では、Lockトークンは以下のような文字列になっています。
opaquelocktoken:f04fe558-1dd1-11b2-8c12-8e456d58de06 |
この文字列をLockトークンに指定してUNLOCKリクエストを発行することで、ロックの解除が可能です。これを用いて不正にロックを解除している様子をリスト13に示します。
$ cadaver http://localhost/davnoauth/ |
リスト13 Lockトークンさえ分かればUNLOCKが可能 |
また、ロックが解除されたことを知らないSkunkDAVからロックを解除しようとすると、画面7のような画面が表示がされます(注)。
画面7 SkunkDAVでロックを解除しようとすると表示される画面(画像をクリックすると拡大表示します) |
注:タイムアウトによるロック解除もあり得るので、ロックを解除した覚えがなくても解除されていることはあります。 |
●対策:
- UNLOCKメソッドの発行を制限する
PROPFINDやMKCOLなどの制限と同様の設定を行うことで、リクエストを制限可能。
また、Lockトークンが奪取されること自体がよいことではないので、あまりにもLOCKが解除されるという状態が続いたら、ネットワークの不正盗聴などが行われている可能性も視野に入れてください。
■PUTメソッド
●脅威:
- 勝手にファイルを作成されてしまう(リスト14)
- 既存のリソースに対して上書きされると、リソースが破壊される(リスト15)
# telnet localhost 80 |
リスト14 PUTメソッドによる新規ファイルの作成 |
# telnet localhost 80 |
リスト15 既存ファイルに対する上書き |
●対策:
- PUTメソッドの発行を制限する
PROPFINDやMKCOLなどの制限と同様の設定を行うことで、リクエストを制限可能。
後編の予告
前編では、各メソッドの動作・危険性と、それに応じた対処方法を中心に解説しました。メソッドの動作を知ることで、防御方法が浮き彫りになったと思います。
後編では、より包括的にセキュリティを確保する方法を紹介します。「ダイジェスト認証」を使ったより安全な認証方法やmod_dav固有の問題とその対策方法など、WebDAVの利点を生かしたままセキュリティを強化できることをお伝えします。
4/4
|
|
||||||||
|
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フォーラム全記事インデックス |
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|