Preactは軽量なウェブ開発フレームワークであり、Virtual DOM要素が任意のJSONから構築されるのを防ぐためのJSONシリアライズ保護機能を備えています。Preact 10.26.5で導入された回帰により、この保護機能が緩和されました。JSONペイロードからの値が文字列であると想定され、そのまま変更せずにPreactの子要素として渡されるアプリケーションでは、特別に細工されたJSONペイロードが有効なVNodeとして誤って扱われる可能性があります。この一連の失敗が発生するとHTMLインジェクションにつながり、CSPやその他の手段で緩和されていなければ任意のスクリプト実行を許す恐れがあります。影響を受けるPreactのバージョンを使用するアプリケーションは、次の条件をすべて満たす場合に脆弱になります。第一に、ユーザーが変更可能なデータソース(API、データベース、ローカルストレージなど)からの未サニタイズの値を変更せずにレンダーツリーに直接渡していること。第二に、それらの値を文字列と想定しているが、データソースがJSON文字列ではなく実際のJavaScriptオブジェクトを返す可能性があること。第三に、データソースが型のサニタイズを行わず、文字列とオブジェクトを区別せずに生のオブジェクトを保存または返すか、もしくはデータソースが侵害されている(例:汚染されたローカルストレージ、ファイルシステム、データベース)ことです。バージョン10.26.10、10.27.3、10.28.2でこの問題は修正されており、これらのパッチバージョンではJSON解析されたオブジェクトが有効なVNodeとして扱われないように以前の厳格な等価性チェックが復元されています。すぐにアップグレードできない場合は、入力タイプの検証、ネットワークデータのキャストまたは検証、外部データのサニタイズ、Content Security Policy(CSP)の利用などの他の緩和策も利用できます。
|