セキュリティレポートを受け、Fastify Node.jsフレームワークのJSONセキュリティが向上
2020年3月10日
0 分で読めます4月9日、HackerOneの脆弱性報奨金プラットフォームでphraとして知られるFrancesco Soncina氏が、Node.js SecurityワーキンググループにサーバーサイドJavaScriptコードインジェクションの脆弱性を報告しました。この脆弱性は、Node.jsのWebアプリケーションフレームワークであるFastifyで最初に特定され、このセキュリティ問題の影響を受ける対象として報告されました。
オープンソースのFastifyプロジェクトのメンテナーの1人であるMatteo Collina氏は、報告を速やかにトリアージし、概念実証(PoC)のエクスプロイトコードを確認するよう依頼されました。このPoC攻撃では、フレームワークが読み込むJSONスキーマに埋め込まれたJavaScriptコードインジェクションを使い、リバースシェルを起動していました。
最終的に、このセキュリティレポートは比較的影響が小さいと判断されました。Fastify自体には影響しないためです。JSONスキーマはアプリケーションの設定項目としてユーザーが提供するものであり、信頼できる入力として扱われるためです。
それでも、検証済みのCVE脆弱性として登録されるかどうかにかかわらず、このようなセキュリティレポートが重要であることを強調するのは興味深く、また不可欠です。
特にこのケースでは、レポートを通じたセキュリティに関する議論は、Fastifyのメンテナーと脆弱性を開示したセキュリティ研究者との間で続いている議論を中心に展開しました。Collina氏とSoncina氏の協力と決意は、実に印象的です。2人は、JSONのレンダリングロジックに潜むあらゆるセキュリティ上の弱点を洗い出し、今後発生しうるセキュリティ問題に可能な限り耐えられるよう取り組みました。
特に注目すべき点として、このセキュリティ脆弱性レポートを受け、次の改善が行われました。
fast-json-stringifyのJSON解析がより堅牢で安全になりました。これはGitHubのこのプルリクエストに反映され、その後、バージョン1.15.3として正式にリリースされました。ドキュメントにセキュリティに関する免責事項が追加され、懸念事項とリスク領域が明確に示されました。これにより、ライブラリのユーザーはデータの扱い方を十分に理解できるようになりました。このプルリクエストで導入されました。
このレポートをまとめ、開示に向けて準備するなかで、セキュリティ情報の開示が持つ価値をもっと評価すべきだと気づきました。報告された問題はFastifyにもfast-json-stringifyにも直接的な影響はありませんでしたが、有意義な議論を促しました。何よりも、メンテナーの間でコードに関するセキュリティ上の懸念への意識が高まりました。
最後に
セキュリティ研究者やモジュールのメンテナーの皆さんに、元のレポートに記されたメッセージを紹介して締めくくります。Node.js、JavaScript、オープンソースのエコシステムを安全にするために尽力してくださっている皆さんに、改めて感謝します。




