
marimoは、オープンソースのPythonノートブックです。
Pythonノートブックというと、Jupyter Notebookをイメージする人が多いのではないでしょうか。
ジャンルとしては同じです。
対話型の実行環境を提供し、可視化を実施しやすくし、開発効率を向上させます。
しかしJupyter Notebookを使う中では、悩みも多くありました。
なかでも最大の悩みは、.ipynbのJSON構造に悩まされるという点ではないでしょうか。
marimoは、この部分がJupyter Notebookとは異なっており、コードの変更履歴が把握しやすく、gitでの管理も容易な仕組みに仕上がっています。
このようなこともあり、注目が高まっています。
注目が高まるのは、通常の利用者だけではありません。
脆弱性が案内され、そのほんのわずかに時間が経過した段階で、その脆弱性を悪用する活動が確認されました。
- CVE-2026-39987
これは、CVSSベーススコアが9.3の脆弱性です。
marimoのバージョン0.20.4以前のバージョンで認証なしでリモートコード実行が可能になります。
この問題がある状態においては、marimoは、WebSocketエンドポイント「/terminal/ws」が適切な認証チェックなしに対話型ターミナルを公開し、認証されていないクライアントからの接続を許可してしまうことが原因で発生します。
この状態になると、システムは攻撃者に対して、marimoの実行権限と同じ権限で動作する完全な対話型シェルをリモートに提供した状態になってしまいます。
この脆弱性は、公開時点では悪用が開始されていなかったと考えられています。
しかし公開からわずか10時間くらいのタイミングで、すでに悪用する活動が確認されました。
攻撃者は公開された脆弱性の情報をもとに、マルウェアを作成したと考えられます。
リモートからの接続を実現できた攻撃者は、侵害先環境での3分程度の短い時間の活動で、認証情報の取得を実施します。
この種の脅威ではマルウェアを使って自動的に認証情報を収集する取り組みが多く確認されていますが、今回の観測されている例では、マルウェアによる活動ではなく、攻撃者自身が直接活動して認証情報を収集したと考えられています。
現在確認されている侵害活動の中では、攻撃者は永続的なシステムを構築したり、暗号通貨マイニングツールやバックドアを仕掛けたりしようとはしなかったと思われるため、活動時間が短いことやマルウェアを残していないということも作用して、侵害された状態になったことを検出することは容易ではなさそうです。
marimoの利用者は多くいることでしょう。
利用環境が最初から0.23.0だった、という利用者は全体の中でほとんどいたと思われません。
ということは、marimoの利用者のほとんどの環境が侵害対象となっているということを意味します。
あなたのmarimoは、いつ0.23.0に更新が完了しましたか?
‘/terminal/ws’の利用有無をログで確認する、認証情報を変更する、などの活動をセットで考えて対処することが必要に思えます。
Marimo OSS Python Notebook RCE: From Disclosure to Exploitation in Under 10 Hours
https://www.sysdig.com/blog/marimo-oss-python-notebook-rce-from-disclosure-to-exploitation-in-under-10-hours
| この記事をシェア |
|---|