User Tools

Site Tools


ja:rule:fle:シンボリックリンクを検証する

シンボリックリンクを検証する

ファイルシステムを利用した攻撃手法にシンボリックリンクを利用した手法がある。このためアクセスしているファイルがファイルそのものなのか、シンボリックリンクなのか、検証しなければならない。

攻撃例:/tmp/myfileが/home/victim/.bashrcへのシンボリックリンクだった場合、書き込みを許可すると不正な読み書きを許可してしまう。

非適合コード例

検証なしのファイルアクセス

$data = file_get_contents('/tmp/myfile');
'/tmp/myfile'のように誰でもアクセス可能かつ容易に推測可能なファイルの場合、意図的な不正な読み書き、レースコンディションによる情報漏洩などの問題の原因になる場合がある。

適合コード例

実体ファイルであることを検証

if (readlink('/tmp/myfile') !== FALSE) {
    throw new Exception('Symlink is not allowed');
}
 
$data = file_get_contents('/tmp/myfile');

例外

信頼できるファイルのみが配置されている場合、検証を省略可能。

リスク評価

[ルール/推奨事項のリスク評価]

[評価例 - 英語表記に統一]

Rule Severity Likelihood Remediation Cost Priority Level
IDS05-J medium unlikely medium P4 L3

関連ガイドライン

参考文献

ja/rule/fle/シンボリックリンクを検証する.txt · Last modified: 2017/10/26 09:53 by yohgaki

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki