
以下があります:
exploit/ は「エクスプロイト」です(単にQEMUをクラッシュさせるだけです)。mock/ には、機能を削減したQEMUのバージョンが含まれています。脆弱性のみが残されています。patch/ には、実行中のQEMUインスタンスにパッチを当てるプログラムが含まれています。主なポイントは、デバッグシンボルもディスク上の元の実行ファイルも必要としないことです。そのため、このプログラムが期待通りに動作するためには、いくつかの情報を提供する必要があります。すべてのライブパッチの主なアイデアは、command_to_handler 配列を変更して、各コマンドが「未実装」関数を指すようにすることです。プロセスが ptrace によって部分的に停止されている間(メインスレッドのみ)、これは脆弱性を修正する安全な方法と思われます(フロッピーコントローラがもう動作しなくても気にしない限り)。
この種のパッチが機能するのは、command_to_handler が静的で初期化されていない変数であり、そのため書き込み可能な BSS セグメントに配置されるからです。また、PIE を除けば、このセグメントのメモリ上の位置はコンパイル時に既知です。残念ながら、QEMU は通常 PIE としてコンパイルされるため、そのようにはなりません。
もちろん、自己責任で使用してください。実行中のプロセスを変更すると、世界に大混乱を引き起こす可能性があります!
より詳細な情報はこちらで入手できます:http://vincent.bernat.im/en/blog/2015-hotfix-qemu-venom.html
ライブパッチをよりよく理解するために、いくつかのリンクを紹介します: