====== シンボリックリンクを検証する ====== ファイルシステムを利用した攻撃手法にシンボリックリンクを利用した手法がある。このためアクセスしているファイルがファイルそのものなのか、シンボリックリンクなのか、検証しなければならない。 攻撃例:/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 | ===== 関連ガイドライン ===== ===== 参考文献 =====