特定のバッファーに対して、AMSI は対応するバッキング ファイル名を提供する場合があります。 ENS はファイル名を使用して、特定のファイルまたはスクリプトをスキャンから除外するかどうかを決定できます。
AMSI によって提供されるバッファ属性は、アプリケーション固有のものです。 たとえば、JavaScript および VBScript エンジンは一貫してファイル名を提供する傾向があり、その結果、ENS は除外を尊重することがよくあります。 ただし、PowerShell バッファーに提供される AMSI 属性は、同じように一貫性がありません。 ファイル名が
AMSI_ATTRIBUTE として返される場合と、返されない場合があります。 PowerShell スクリプトがオンアクセス スキャナーの除外によってスキャンされるように選択されていない場合でも、ENS はファイル名を含まない 2 番目のスキャン要求を受け取ります。
バッファがスキャン用に提供される場合、バッファに付属する
AMSI_ATTRIBUTE_CONTENT_NAME 属性は、対応するファイル名を常に提供するとは限りません。 ファイル名が内部スクリプト名に対応している場合があります (たとえば、
Microsoft.PowerShell.Utility.psd1)。 その結果、バッファをファイル名と確実に関連付けることができません。
AMSI_ATTRIBUTE 列挙のドキュメントには、コンテンツ名の値にいくつかの異なる識別子が含まれている可能性があると記載されているため、Microsoft はこの動作を設計上考慮していますが、ファイル名は 1 つのオプションにすぎません。
PowerShell は、実行されるすべてのスクリプト ブロックの元のソースを追跡しません。 たとえば、テキスト スクリプトを含むスクリプト ファイルは、それらのテキスト スクリプト ブロックを AMSI に送信します。 ただし、PowerShell には、テキスト スクリプト ブロックが定義されているスクリプト ファイルのファイル名は含まれていません。
この動作は、Microsoft の AMSI の設計に従って予想されます。 ENS の除外によって、バッファーをファイル名と確実に関連付けることはできません。