| 開発者 | OGNLテクノロジー |
|---|---|
| 安定リリース | 3.0.8 / 2013年9月24日 |
| リポジトリ |
|
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| プラットフォーム | Java仮想マシン |
| タイプ | 表現言語 (EL) |
| ライセンス | BSDライセンス |
| Webサイト | http://commons.apache.org/ognl/ |
オブジェクト グラフ ナビゲーション言語(OGNL) は、 Java用のオープン ソース式言語 (EL)です。Java 言語でサポートされているすべての式よりも単純な式を使用しながら、プロパティの取得と設定 (JavaBeans にある定義済みの setProperty メソッドと getProperty メソッドを使用)や、Java クラスのメソッドの実行が可能です。また、配列の操作も簡単に行えます。
これは、タグライブラリを式言語として 使用するJava EEアプリケーションで使用することを目的としています。
OGNLは、OGNL TechnologyのLuke BlanshardとDrew Davidsonによって作成されました。[1] OGNLの開発はOpenSymphonyによって継続されましたが、2011年に終了しました。[2] OGNLは現在、 Apache Commonsの一部として開発されています。
OGNLテクノロジー
OGNL は、プロパティ名を使用してフロントエンド コンポーネントとバックエンド オブジェクト間の関連付けをマッピングする方法として始まりました。これらの関連付けにさらに多くの機能が集まるにつれて、Drew Davidson はキー値コーディング言語 (KVCL) を作成しました。その後、Luke Blanshard はANTLRを使用して KVCL を再実装し、OGNL という名前を使い始めました。このテクノロジは、Java コンパイラ コンパイラ ( JavaCC )を使用して再度再実装されました。
OGNL は、Javaリフレクションとイントロスペクションを使用して、ランタイム アプリケーションのオブジェクト グラフに対処します。これにより、コンパイル時の設定に依存せずに、オブジェクト グラフの状態に基づいてプログラムの動作を変更できます。また、オブジェクト グラフを変更することもできます。
OGNL を使用するプロジェクト
- WebWork とその後継のStruts 2
- タペストリー(4 以前)
- スプリングウェブフロー
- アパッチクリック
- MyBatis - SQL マッパー フレームワーク
- Thymeleaf - Java XML/XHTML/HTML5 テンプレート エンジン
- FreeMarker - Java テンプレート エンジン
OGNL のセキュリティ問題
OGNL は実行可能コードを作成または変更できるため、それを使用するフレームワークに重大なセキュリティ上の欠陥をもたらす可能性があります。 [要出典] Apache Struts 2 の複数のバージョンが、OGNL のセキュリティ上の欠陥に対して脆弱です。[3] 2017 年 10 月現在、Struts 2 の推奨バージョンは 2.5.13 です。[4]古いリビジョンにはセキュリティ上の脆弱性が文書化されているため、ユーザーは最新バージョンにアップグレードすることをお勧めします。たとえば、Struts 2 バージョン 2.3.5 から 2.3.31、および 2.5 から 2.5.10 では、リモートの攻撃者が任意のコードを実行できます。[5] Atlassian Confluence は繰り返し[6] [7] OGNL のセキュリティ問題の影響を受けており、任意のリモート コード実行が可能になり、すべてのユーザーに更新が必要になりました。
参照
外部リンク
- OGNL 3.x メンテナンス ブランチ
- OGNL 4.x ホームページ (Apache)
- Apache Struts CVE-2013-2134 OGNL 式インジェクション脆弱性
参考文献
- ^ "ognl.org", OGNL Technology, Inc、2008年10月25日時点のオリジナルよりアーカイブ、2013年11月5日閲覧
- ^ “OpenSymphony, RIP (2000 - 2011)”. Open Symphony . 2013年9月5日時点のオリジナルよりアーカイブ。 2011年6月1日閲覧。
- ^ 「Apache Struts : セキュリティ脆弱性のリスト」cvedetails.com . 2017年10月2日閲覧。
- ^ 「Apache Struts リリース」。struts.apache.org。2017年10 月 2 日閲覧。
- ^ Goodin, Dan (2017年3月9日). 「「大規模」攻撃による重大な脆弱性が、影響の大きいサイトを危険にさらす [更新]」. Ars Technica . 2017年10月2日閲覧。
- ^ 「[CONFSERVER-67940] Confluence Server Webwork OGNL インジェクション - CVE-2021-26084 - Atlassian 製品の機能リクエストの作成と追跡」。jira.atlassian.com 。2021年 10 月 18 日閲覧。
- ^ 「[CONFSERVER-79000] OGNLテンプレートインジェクションによる認証されていないリモートコード実行の脆弱性(CVE-2022-26134)」。jira.atlassian.com 。 2022年6月3日閲覧。
