What is Java?
1995年5月にリリースされたJavaは世界で最も人気のあるプログラミング言語で、すべてのエンタープライズデスクトップの95%以上がJavaで実行されています。 Jave は、開発者が「write once, run anywhere」(WORA)、つまり、Java で書かれたコードが Java をサポートするすべてのプラットフォームで実行でき、さらに再コンパイルする必要がないように設計されています。
Java は、コンカレントで、クラスベースの、オブジェクト指向の汎用プログラミング言語で、高速、安全、信頼性が高く、最も人気のある Web サイトからモバイル機器、ゲーム機から企業のデータセンターまで、あらゆる場所で見かけることができます。 GNU General Public Licenseの下でライセンスされ、Javaは無料でダウンロードできます。
のアニメーションに携わった Joe Palrang によって作成されたもので、C++, C#, Eiffel, Mesa, Modula-3, Objective-C など多数のプログラミング言語の影響を受け、 Groovy、 Hack、 Haxe、 Kotlin、 PHP、 Python、 Scala など多くの人気のあるプログラミング言語開発において重要な役割を担っています。 世界には900万人以上のJava開発者がおり、彼らが集まって国を作れば、人口で世界第95位の国となり、都市を作れば世界第20位タイとなる。
Why Was Java Initially Created?
1990年代初頭、ネットワーク コンピューティングの力を日常生活に拡張することは急進的なビジョンと考えられており、James Gosling率いる「グリーン チーム」として知られるSun Microsystemのエンジニア集団は、Javaの作成によりコンシューマ デバイスとコンピュータを統合して、コンピュータに次の波をもたらすことでこのビジョンを実現しようと努めました。 また、このプロジェクトの言語は、当初ゴスリングのオフィスの外にある木の名前からOakと呼ばれていたが、JavaコーヒーにちなんでJavaと改名された。
インタラクティブ テレビに関しては Java は先行していましたが、インターネットが普及し始めたのと同時に登場したため、この新しいテクノロジーと完全に一致することになりました。 1995年にNetscape NavigatorインターネットブラウザがJava技術を取り入れることが発表され、それ以来、主要なウェブブラウザはJavaアプレットを実行する機能を取り入れています。
ほとんどのコーディング言語と同様に、 Javaの開発はいくつかの原則によって導かれ、 それがJavaの誕生と継続的な開発に影響を与えた。
- それは「シンプル、オブジェクト指向、身近」でなければならない。
- 「高性能」であること。
- 「インタプリタ、スレッド、動的」であること。
Major Java Frameworks and their Security Threats:
Struts
Struts は Java EE Web アプリケーションを開発するために使用する、アクションベースの無償オープンソース Model-view-Controller (MVC) フレームワークである。 2000年5月にリリースされたStrutsは、Craig McClanahanによって書かれ、Apache Foundationに寄贈されました。Strutsの背後にある主な目標は、モデル(データベースと対話するアプリケーションロジック)とビュー(クライアントに表示するHTMLページ)およびコントローラ(ビューとモデルの間で情報を渡すインスタンス)を分離することです。
Struts を使用して構築されたアプリケーションが直面する主なセキュリティ上の懸念は、リモートでのコード実行です。 2010 年に、人気のある Struts フレームワークである Struts2 は 18,000 以上の組織から 100 万回以上ダウンロードされ、
悪意のあるパーティが任意の Struts2 Web アプリケーション上で任意のコードを実行できるユニークなクラスの弱点が含まれていました。
Spring MVC
Spring MVC は Spring アプリケーション フレームワークで、プレゼンテーション層とリクエスト処理層、およびリクエスト処理層とモデルの間の分離が不十分であるという、他の人気のあるフレームワークに見られる設計上の欠陥への対応として Spring 開発者により書かれたものです。 Strutsと同様に、Spring MVCもアクションベースのフレームワークです。 2011年、Spring MVC は Struts とともに、CVE-2012-3451 のために最もダウンロードされた脆弱なライブラリの 1 つとみなされ、このバージョンは 2011-2012 年に 43,000 以上の組織から 1800 万回以上ダウンロードされた
Google Web Toolkit (GWT)
開発者が Java で複雑な JavaScript フロントエンド アプリを作成し維持できるオープンソース ツールセットとして、Google Web Toolkit は無料で、世界中の数多くの開発者によって使用されています。 GWTは、ブラウザの癖やXMLHttpRequest、JavaScriptに関する高度な知識がなくても、高性能なWebアプリケーションを生産的に開発できるように設計されています。 GWTはJavaScriptのコードを生成するため、GWTアプリケーションは、JavaScriptアプリケーションが直面するすべての脅威から保護される必要があります。
Hibernate
Hibernate ORM (単に Hibernate として知られている) は、Java 言語用のオブジェクト リレーショナル マッピング フレームワークです。 Java クラスをデータベース テーブルにマッピングし、Java データ型から SQL データ型にマッピングするために設計されています。 Hibernateを含むアプリケーションは、文字列を連結してSQL(HQL)クエリを生成した場合、SQLインジェクションの脅威にさらされる可能性があります。 これらから保護する 1 つの方法は、すべての SQL または HQL で名前付きパラメータを使用することです。
OWASP ESAPI
OWASP ESAPI(OWASP Enterprise Security API)は、無料のオープンソース Web アプリケーション セキュリティ制御ライブラリで、開発者が低リスクのアプリケーションをより簡単に記述できるようにする一方、プログラマが既存のアプリケーションにセキュリティを後付けで簡単に追加できるよう設計されたライブラリです。
Java Server Faces (JSF)
Java Community Process により標準化された Java Server Faces (JSF) は、Web アプリケーション用のコンポーネントベースのユーザー インターフェイスを構築するための Java 仕様です。 OWASP によると、「JSF は独自のセキュリティモデルを実装せず、代わりに標準的な JEE セキュリティに依存しています。 これは、アプリケーションサーバのセキュリティモデル、JAAS、または他のACL実装のいずれも、統合の努力なしにJSFフレームワークで使用できることを意味します。” JSFを実装したアプリケーションのセキュリティ上の懸念は、アクセス制御と認可の問題です。
JSP
JavaServer Pages (JSP) は Servlet API 上に構築されており、リクエストを受信するとコンパイルされ実行される Java コードを埋め込むことができます。 JSP コードに対する一般的な脅威は、クロスサイト・スクリプティング (XSS) です。
Java セキュリティの脆弱性
Java プラットフォームには、Java アプリケーションのセキュリティを向上させるために設計された多数の機能がありますが、開発者にとっては、ソフトウェア開発ライフサイクルの初期段階で、Java コードに脆弱性がないことを確認することが非常に重要です。 クラスや変数へのアクセスを制限しない、クラスをファイナライズしない、パッケージスクープに依存する、などのJavaセキュリティ上の間違いを避けることは、Javaコードを保護する上で最も良いスタート地点です。また、開発者はJavaコードとJavaフレームワークが直面する一般的なセキュリティ脅威を熟知しておくことも重要です。 開発中の Java コードのセキュリティに関する詳細については、「9 Security mistakes every Java Developer must avoid here」を参照してください。
High-Risk Java Security Vulnerabilities:
世界中のすべてのエンタープライズ デスクトップの 95% 以上が Java を実行しており、Java コードにおける脆弱性が実稼働環境に侵入し悪意のある者によって利用されると、重大な結果につながります。 以下は、Javaで書かれたアプリケーションが直面する高リスクの脅威のリストです。
- Code Injections
- Command Injections
- Connection String Injection
- LDAP Injection
- Reflected XSS
- Resource(リソース)
- Reflected XSS(Reflected XSS Injection
- Second Order SQL Injection
- Stored XSS
- XPath Injection
Command Injection(Command Injection)
Secure your Java
Checkmarx の CxSAST.Inc は、Checkmarx が提供する CxSAST.Inc, 静的コード解析ソリューションは、Javaテストソリューションの中でも、Javaコードをセキュリティやコンプライアンスの問題から守るだけでなく、アプリケーションセキュリティの成熟度に関して組織の発展に貢献するツールとして傑出しています。
CxSAST は、SDLC の各段階で利用可能な一般的な開発プログラムのほとんどとシームレスに統合されているので、開発者がすでに使用しているツールで動作します。 CxSAST は、インクリメンタル・コードスキャンや最適な修正箇所などの機能により、あらゆる継続的インテグレーション継続的開発 (CICD) 環境に理想的です。
Javaコードに脆弱性が検出されると、CxSAST は最適な修正箇所を特定するだけではなく、攻撃ベクトルの仕組みを開発者が理解するためのリソースや、今後同様の誤りを確実に回避するための修正アドバイスも提供します。