Open m-pyon23 opened 2 years ago
私もApache, .htaccessの挙動(許可設定の適用優先度など)にあまり明るくないため、誤解があればご指摘いただきたいところもあります
Apacheドキュメント セクションのマージ方法 https://httpd.apache.org/docs/2.4/sections.html#mergin
マージの順番は以下のようになっています:
- Directory (正規表現無し) と .htaccess を同時に (.htaccess が許可されていれば、それが Directoryを上書きします)
- DirectoryMatch と Directory ~
- Files と FilesMatch を同時に
- Location と LocationMatch を同時に
上記によると、.htaccessはDirectory相当として扱われ、かつFiles/FilesMatchの方が後に評価されるとのこと。
よってサブディレクトリの.htaccessにdeny from all を書いても、FilesMatchのAllow from all
の方が優先される…と解釈しています。
セキュリティチェックプラグインやセキュリティチェックシート等で var, vendor 等の露出対策として.htaccessの配置が紹介されていますが、この対策が意味をなさないことになるのではないかと思います
概要(Overview)
サブディレクトリに以下のような.htaccessを配置しても、アクセス拒否が行われない。
4.0.6対応の中で行われた以下の.htaccessのFileMatchブロックの記述による許可設定が優先されているため?
該当のFileMatch記述を削除すると、再度サブディレクトリの.htaccessによるアクセス拒否が機能するようになります
https://github.com/EC-CUBE/ec-cube/pull/5073/commits/e689164e09ed43deab0b139c86416cd515ceb70c#diff-270939b4fba4be968ab78e23dc0207eb893744491980a25c99a27c809a82ddabR13
本体開発のみでは問題とならない理由
本体の現状としては、サブディレクトリの.htaccessが機能しなくなっても
RewriteRule "^vendor/" - [F]
等の記述で二重に守られているため、支障がない状況と思います。ただ、カスタマイズで独自にフォルダを作成する場合等の落とし穴になりやすいと感じるため、回避できた方がうれしい (もちろん独自にそのようなカスタマイズする場合はサブディレクトリの.htaccessのみに頼らず、vendor等と同様RewriteRule等で多重に対策すべきとは思いますが)
期待する内容(Expect) or 要望 (Requirement)
サブディレクトリに以下を記述した.htaccessを配置すると、該当ディレクトリへのアクセスが拒否されること
再現手順(Procedure)
以下のようなURLでアクセスすると、アクセス出来てしまう。
該当のFileMatch記述をコメントアウトすると、403エラーになるようになる
環境 (environment)
関連情報 (Ref)
備考
本件、事前にEC-CUBEサポートへ連絡し、本体の脆弱性としては扱わない旨確認済