
rpcbind 0.2.4 以前、LIBTIRPC 1.0.1 以前および 1.0.2-rc から 1.0.2-rc3 まで、NTIRPC 1.4.3 以前は、XDR 文字列のメモリ割り当て時に最大 RPC データサイズを考慮しません。このため、リモートの攻撃者が細工した UDP パケットをポート 111 に送信することで、サービス拒否(その後の解放を伴わないメモリ消費)を引き起こす可能性があります。別名 rpcbomb と呼ばれます。
CVE リンク https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8779
git clone https://github.com/drbothen/GO-RPCBOMB.git
go build RPCBomb.go
コンパイルされた RPCBomb.exe には、攻撃者が攻撃を任意に調整できるようにするいくつかのスイッチが用意されています。
これは必須フラグです。ターゲットシステムを設定します。デフォルトは必須です。
これは必須ではないフラグです。割り当てを試みるバイト数を設定します。デフォルトは 5999999999 です。
これは必須ではないフラグです。RPC Bind が実行されているポートを設定します。デフォルトはポート 111 です。
これは必須ではないフラグです。送信する UDP パケット数、つまり割り当てバイト数を要求する回数を設定します。デフォルトは 1 です。
これは必須ではないフラグです。UDP パケットを並行して送信するために使用する子スレッドの数を設定します。デフォルトは 1 です。
クレジットは、この脆弱性を最初に報告し、この Golang エクスプロイトのベースとなったサンプルの Ruby エクスプロイトコードを作成した Guido Vranken に帰属します。コードは https://github.com/guidovranken/rpcbomb にあります。
元のレポートは https://guidovranken.wordpress.com/2017/05/03/rpcbomb-remote-rpcbind-denial-of-service-patches/ で確認できます。