テンプレート上のシンボリックリンクはセキュリティ上の問題ですか?はいの場合、なぜですか?


35

Magentoは、シンボリックリンク経由でテンプレートを使用しないことをお勧めします。

Advanced > Developer > Template Settings > Allow Symlinks

警告!この機能を有効にすることは、潜在的なセキュリティリスクを表すため、実稼働環境では推奨されません。

今日まで、私はここでリスクを見ることはできません。

  • リスクは何ですか?

8
これは共有ホストでのリスクであるとしか想像できませんが、そもそもeコマースに使用すべきではありません。
ベンマーク14

3
@ベンチマーク。これを答えにしてみませんか?
マリウス

2
非常に良い質問@ファビ!
user487772 14

3
他の人がより完全な答えを提供することは知っていました。私は
正しかった

3
@benmarksこのWebサイトでは、質問ごとに高い回答率が必要です;-)
user487772 14

回答:


40

シンボリックリンクは必ずしも悪いわけではありません。

まず第一に:symlinkターゲットを開こうとすると、ターゲットのファイル許可が有効になります。symlinkターゲットの読み取り/書き込み/実行が許可されていない場合、何も起こりません。

ただし、ドキュメントルートの外部でファイルを実行できる場合があります(実際にファイルを使用してやりたいこともありますよね?)。この問題は、suEXEC環境ではなく、共有ホスティング上のユーザーapacheまたはwww-dataユーザーが異なるアカウントからのファイルの提供を担当している場合に発生する可能性があります。システムユーザーは別の顧客のファイルにアクセスすることはできませんが、apache/www-dataほとんどの場合、ユーザーはすべての共有アカウントに対する読み取り権限を持ちます。これは、あるユーザーが共有ホスト上の別のユーザーのファイルにアクセスできるシナリオです。自分のユーザーではなく、apache/www-dataユーザーを使用してブラウザ経由でファイルにアクセスします。要約すると、このシナリオでは、他のユーザーのファイルにアクセスできます=> bad。

次に悪いのは、攻撃者が/ etc / passwdなどのファイルにもシンボリックリンクを作成し、このデータをダウンロードしてこの情報を処理できることです。これは、シンボリックリンクだけでなく、不適切なサーバー構成(これらのファイルへのアクセスが厳密に制限されている)までもあります。したがって、シンボリックリンクを使用しないことで、さらに起こりうる攻撃を防ぐことができます。

シンボリックリンク自体がセキュリティリスクであるだけでなく、サーバー構成の問題でもあります。


5
偉大な説明は-これは、「ご自身の責任で使用」、基本的に、正しい答えである
philwinkle

2
おそらく言及する価値があります(ただし、「アップグレードへの嫌悪感」環境ではセキュリティ関連のバグと常にバランスが取れています)-Magentoは、シンボリックリンクを強く抑止することはapp/design、他のマイナーなエクスプロイトと組み合わせた場合、フォルダー外のテンプレートおよびレイアウトファイルのエクスプロイトに関連していましたが、管理者ユーザーが特権の昇格やその他のサーバーの悪用に使用する可能性があります。
アランストーム14

1
Apache httpdでシンボリックリンクをサポートするSymLinksIfOwnerMatch場合は、の代わりにオプションを使用することを検討してFollowSymlinksください。
hakre

15

はい、そうです。ウェブサーバーは通常、「シンボリックリンクをたどらない」設定、または少なくとも「同じユーザーのターゲットのシンボリックリンクのみをたどる」設定を持っているのは、webserver / phpが通常より多くの権限で実行されるためです。

そして、ウェブサーバーは通常、目に見える/ etc / shadowのようなことを避けようとするので、include()を介してテンプレートが解析されるため、ファイルを完全に制御できない場合に非常に強力なセキュリティリークが発生する可能性があるため、magentoテンプレートはさらに危険です。

あなたは、他の問題もあると主張するかもしれませんが、誰もがすべての潜在的な攻撃シナリオを本当に知っています。

また、メディアディレクトリとシンボリックリンクに関するセキュリティ修正がしばらく前にあったため、攻撃シナリオの可能性を確認する必要があります。


1
他の誰かがあなたのサーバー上でシンボリックリンクを作成できるなら、あなたはすでにそれよりも大きな問題に直面しています。つまり、以下のベンのコメントをご覧ください。誰が共有ホスティングでMagentoをホストするのでしょうか?最近の共有ホスティングで誰が何かをホストするのか、そしてその理由は?:)
Sven

3
単にそれをする人がいるからです。他の人が合理的に行動することを期待することはできません。これを行う人は常に存在し、一般的なサーバー構成に関して間違いを犯す人は常に存在します。
フライングマナ14

14

これは共有ホストでのリスクであるとしか想像できませんが、そもそもeコマースに使用すべきではありません。


1
残念ながら、かなり頻繁に使用されます。
ピョートルカミンスキー14

2
技術的には、PCIセキュリティ評議会の基準によると、パブリッククラウドはマルチテナントであるため、それでも「リスク」と見なされます。
philwinkle

4

MagentoパッチSUPEE-9767には、APPSEC-1281:symlinksを介したリモートコード実行が含まれています。そのため、テンプレートのSymlinksはセキュリティ上の問題です。

タイプ:
リモートコード実行(RCE)

CVSSv3の深刻度:
8.8(高)

既知の攻撃:
はい。攻撃者は管理者アクセスを取得した後、構成保護を無効にし、悪意のあるコードをアップロードしています。

説明:
構成設定でAllowSymlinksオプションを使用すると、悪意のあるコードを含む画像のアップロードが可能になります。このオプションはデフォルトで無効になっていますが、構成設定を保存するアクセス権を持つ攻撃者はこのオプションを有効にして、リモートでコードを実行できます。

影響を受ける製品:
1.9.3.3より前のMagento CE、および1.14.3.3より前のMagento EE

修正先:
CE 1.9.3.3、EE 1.14.3.3、SUPEE-9767

レポーター:
ウィルコ・ニーエンハウス


0

許可することはお勧めしません。シンボリックリンクが有効になっている間、jsロードエラーに直面していました。
沢山の;

TypeError:$ .widgetは関数ではありません

正常にロードされたページに対して4〜5のリフレッシュを試行する必要があります。
閉じた後、初めてリソースのロードが遅くならず、jsエラーがなくなった可能性があります。

PS:シンボリックリンクを無効にした後、static.phpを変更するたびにファイルのデプロイされたコピーを削除して、コピーしてください。


1
申し訳ありませんが、理解できません。動作する前に4〜5回更新する必要がありますか?これはシンボリックリンクと何の関係がありますか?
ファビアンBlechschmidt

シンボリックリンクを無効にする前に:)私の英語で申し訳ありません。
rbostan

magento2について話していますか?その後、私は理解します、私は理解しません-2についての手がかりはまだありません。
ファビアンBlechschmidt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.