SiYuan Desktop:インポートされた.sy.zipコンテンツに保存されたXSSにより、任意のコマンド実行が可能
プラットフォーム
go
コンポーネント
github.com/siyuan-note/siyuan/kernel
修正バージョン
0.0.0-20260329142331-918d1bd9f967
### 概要 脆弱性により、細工されたブロック属性値が、HTMLエンティティが生の特殊文字と混在している場合に、サーバー側の属性エスケープをバイパスできます。攻撃者は、悪意のあるIAL値を`.sy`ドキュメントに埋め込み、それを`.sy.zip`としてパッケージ化し、被害者に通常の`インポート -> SiYuan .sy.zip`ワークフローを通じてインポートさせることができます。ノートが開かれると、悪意のある属性が元のHTMLコンテキストから抜け出し、イベントハンドラーを挿入し、保存されたXSSが発生します。Electronデスクトップクライアントでは、このXSSはリモートコード実行に到達します。これは、挿入されたJavaScriptがNode/Electron APIへのアクセス権を持って実行されるためです。 ### 詳細 この問題は、`kernel/filesys/tree.go`の`escapeNodeAttributeValues`のロジックの回帰によって発生します。 以前は、エスケープロジックは、値をエスケープする必要があるかどうかを判断する前に、`parse.IAL2Map(...)`を使用して`node.KramdownIAL`を変換していました。その変換は最初に既存のエンティティをエスケープ解除したため、次のような混合値: ``` &" onmouseenter="alert('IAL-XSS') ``` は、依然として安全でないと認識され、正しくエスケープされました。 ロジックは、生の`KramdownIAL`値を直接検査するように変更されました。新しい`needsEscapeForValue`実装は、すぐに表示されると`false`を返します
修正方法
公式パッチはありません。回避策を確認するか、アップデートを監視してください。