脆弱性のあるオープンソースライブラリの記事に出くわしました。
この記事では、「Spring Expression Language(SpEL)は、攻撃者が機密性の高いシステムデータ、アプリケーション、およびユーザーCookieを取得できるようにするHTTPパラメーターの送信を通じて悪用される可能性がある」と述べています。
誰かがこれにもっと光を当てることができますか?
脆弱性のあるオープンソースライブラリの記事に出くわしました。
この記事では、「Spring Expression Language(SpEL)は、攻撃者が機密性の高いシステムデータ、アプリケーション、およびユーザーCookieを取得できるようにするHTTPパラメーターの送信を通じて悪用される可能性がある」と述べています。
誰かがこれにもっと光を当てることができますか?
Aspect Securityによる発見は2013年1月に発見されましたが、SpringSourceが公開した修正は、これが最初に発見された2011年に利用可能になりました。AspectSecurityのDanAmodioは、リモートでコードが実行される可能性についてSpringSourceに通知しました。
SpringSourceは、Aspect Securityの調査結果でセキュリティレポート12-06-2012を更新しましたが、元のアドバイザリに記載されている修正/緩和策は引き続き適用可能です:http ://support.springsource.com/security/cve-2011-2730
この脆弱性は、SpringFrameworkのバージョンにのみ影響します。
•3.0.0から3.0.5-ここで3.0.6にアップグレードすると、問題が解決します。•2.5.0から2.5.6.SEC02(コミュニティリリース)-2.5.6.SEC03にアップグレードすると、問題が解決します。•2.5.0から2.5.7.SR01(サブスクリプションのお客様)-2.5.7.SR02にアップグレードすると、問題が解決します。
これは、今後すべてのバージョンで修正されています。SpringFrameworkの現在のリリースは3.2で、2012年12月にリリースされました。
ありがとう、
-Pieter(SpringSource)
リンク先の記事がおそらく参照しているSpELのこのアスペクトセキュリティ/マインドセキュリティ評価(google docs link )をチェックしてください(SpELの特定のケースについて)。
これらは、特定のSpringJSPタグがEL式を二重に評価する方法を説明しています。このような場合、ユーザーはSpELの形式でサーバーにデータを送信できる可能性があります。たとえば、値${bean.val}
(URLエンコード)を含む要求パラメーターとして送信できます。
http://...?exp=$%7Bbean.val%7D
JSPページ内では、式はそれ自体が安全な${param.exp}
テキストに解決されます。${bean.val}
ただし、その式がSpring JSTLタグの属性内にある場合、その解決された値は、たとえばspring:message
タグで再度評価される可能性があります。
<spring:message message="${param.exp}" />
その結果、メソッドを評価するタグに値${bean.val}
が渡されます。したがって、クライアントによって送信され、サーバー上で実行されているコードがあります。spring:message
bean.getVal()