再現の手順
Angularのバージョン1.3.0から、正規表現によるサービス拒否(ReDoS)攻撃が可能になりました。このパッケージは正規表現を使ってng-srcsetディレクティブの値を分割するため、悪意のある行為者が安全でない正規表現を注意深く作成すると、壊滅的なバックトラックを引き起こし、システムリソースを独占する可能性がある。このエクスプロイトを実証する概念実証がStackBlitzで公開されている。
問題への対処
この脆弱性に対する修正は、AngularJS XLTS/NESのバージョン1.9.1および1.5.19で利用可能です。
学習と予防
ReDoS攻撃は、ターゲットとなるシステムが、長い時間がかかる正規表現パターンマッチを解決しようとします(それによって、システムの正当なユーザーへのサービスを拒否します)。これはサービス拒否(DDoS)攻撃の一種です。
この攻撃では、正規表現エンジンがマッチを見つけようとする一連のステップを実行する。これらのステップの中には、すぐに実行できるものもあれば、特に失敗するステップにはかなり時間がかかるものもある。この場合、ブラウザが攻撃者によって注意深く作られた正規表現を解決しようとすると、ブラウザは代替のマッチを試すために後戻りするため、結果を返すのに非常に長い時間を費やす可能性があります。
結論
この脆弱性で説明されている修正は1.9.1に含まれており、Angular 1.5を使用しているHeroDevs AngularJSネバーエンディングサポートのクライアントもすぐに利用可能です。HeroDevsのネバーエンディングサポートをご希望の方は、今すぐ営業チームまでご連絡ください。
リソース
NIST 2024-21490エントリー
弊社がサポートするオープンソースソフトウェアに新たな脆弱性が修正された場合、いつでもアラートを受け取ることができます。