このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
外部制御されるパスから読み込まれたライブラリ
外部制御されているパスに由来するライブラリ引数を使用
説明
この欠陥は、固定のまたは外部制御された、セキュリティで保護されていないパスからライブラリが読み込まれ、そのパス上にある 1 つ以上の場所を想定外のアクターが制御できる場合に発生します。
リスク
ライブラリの読み込みに使用されているパスを攻撃者が知っているか制御している場合、攻撃者は以下を変更できます。
プログラムで読み込まれるライブラリ。想定されたライブラリとコマンドが置き換えられる。
ライブラリが実行される環境。想定外の権限と機能が攻撃者に付与される。
修正方法
可能な場合は、ハードコードされたパス名か完全修飾パス名を使用してライブラリを読み込みます。ハードコードされたパスは、他のシステムでは機能しない可能性があります。ハードコードされたパスには一元的な場所を使用して、ソース コード内でパスを簡単に変更できるようにします。
別の解決策として、明示的なパスが要求される関数を使用します。たとえば、system()
では環境変数 PATH
を使用できるため、絶対パスは要求されません。しかし、execl()
と execv()
では絶対パスが要求されます。
チェッカーの拡張
既定では、Polyspace® は外部ソースからのデータは汚染されていると仮定します。Polyspace 解析での汚染のソースを参照してください。Polyspace 解析の現在のスコープ以外から発生したすべてのデータを汚染されたものと見なすには、コマンド ライン オプション [-consider-analysis-perimeter-as-trust-boundary]
を使用します。
例
結果情報
グループ: 汚染されたデータ |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: TAINTED_PATH_LIB |
影響度: Medium |
バージョン履歴
R2015b で導入