CVE-2024-29415: Popular Node.js Package ‘node-ip’ Exposes Millions to Potential SSRF Attacks
2024/06/03 SecurityOnline — 人気の node-ip npm パッケージに、深刻な SSRF (Server-Side Request Forgery) の脆弱性 CVE-2024-29415 が発見された。このパッケージは、シンプルなコマンドライン・ツールを介して、コンピュータの IPv4 アドレスを取得するように設計されており、毎週 1,900 万件以上のダウンロードを誇っている。

この 脆弱性CVE-2023-42282 は、node-ip パッケージが、特定の IP アドレスを分類する際の方法に起因する。具体的に言うと、パブリック IP アドレスとプライベート IP アドレスを区別するための、isPublic() 関数に欠陥が存在する。この関数は、一部のプライベート IP アドレスを誤ってパブリックとして分類するため、SSRF 攻撃を受けやすくなる。この脆弱性 CVE-2024-29415 は、パッケージのバージョン 2.0.1 以下に存在する。
不適切に分類された、問題のある IP アドレスは以下の通りである:
- 127.1
- 01200034567
- 012.1.2.3
- 000:0:0000::01
- ::fFFf:127.0.0.1
これらの誤分類は、一連のアドレスを、isPublic() 関数が正しく解釈しないために発生する。この脆弱性の悪用に成功した攻撃者は、パッケージを悪用して内部システムに不正アクセスする可能性を手にする。
CVE-2024-29415 の脆弱性は、以前に発見された脆弱性 CVE-2023-42282 の不完全な修正と関連している。これらの脆弱性の根本的な原因は、正規化された解析結果を返さない API の設計自体にある。不正なオリジナルの入力に依存しているユーザーは、パーサーの不一致に遭遇する可能性があり、セキュリティ・ギャップにつながる。
現在のところ、オリジナルの node-ip パッケージに対しては、公式なパッチは提供されていない。ユーザーからのパッチ案が、同パッケージの GitHub リポジトリの issue #144 で入手可能ではあるが、パッチの作者は最近の問題に無反応であり、このパッケージはメンテナンスが行き届いていないと見るべきだ。
状況の深刻さとメンテナンスの不備を考慮すると、node-ip パッケージのユーザーに対して強く推奨されるのは、同様の機能を提供し、積極的に開発/サポートされる代替パッケージへの移行である。現時点で利用しているパッケージが、この脆弱性の影響を直接に受けていないように見えても、より安全で活発にメンテナンスされているソリューションへの移行が賢明である。
node-ip パッケージの利用を継続したい場合には、isPublic()/isPrivate()/isLoopback() 関数が、機密性の高いネットワーク・リクエストのガードに使用されていないことを確認するために、コードベースを徹底的に見直すことが極めて重要となる。このレビューには、リクエストを送信する前段として、ユーザー入力から提供される IPアドレスの、正確なプライベート/パブリック識別も含まれる。
さらに、”Server-Side Request Forgery Prevention – OWASP Cheat Sheet” で詳述されている、ベスト・プラクティスを取り入れることで、さらなる安全策を導入することも可能だ。
node-ip に深刻な脆弱性とのことですが、サポート体制が弱体化しているという点が気になります。したがって、代替の手段が推奨されていますが、具体的なパッケージ名が記載されているわけでもありません。ご利用のチームは、利用の継続と代替への移行を、ぜひ、ご検討ください。よろしければ、Node.js で検索も、ご利用ください。
You must be logged in to post a comment.