界: API Abuse

API は、呼び出し元と呼び出し先の間のコントラクトです。最も一般的な API の不正使用の形態は、呼び出し元がこのコントラクトの終わりを守らないことによって発生します。たとえば、プログラムが chroot() を呼び出した後に chdir() を呼び出すのに失敗すると、アクティブなルート ディレクトリを安全に変更する方法を指定したコントラクトに違反することになります。ライブラリの悪用のもう 1 つの良い例は、呼び出し先が信頼できる DNS 情報を呼び出し元に返すことを期待することです。この場合、呼び出し元は、呼び出し先の API の動作 (戻り値が認証目的に使用できること) についてある種の仮定をすることで、呼び出し先の API を悪用します。また、相手側から、呼び出し元と呼び出し先のコントラクトを違反することもできます。例えば、コーダーが SecureRandom をサブクラス化し、ランダムではない値を返した場合、コントラクトに違反することになります。

EJB Bad Practices: Use of Class Loader

Abstract
プログラムはクラスローダーを使用しているので、Enterprise JavaBeans 仕様に違反しています。
Explanation
Enterprise JavaBeans 仕様に従い、bean を提供する場合は、bean が移植性を持ち、あらゆる EJB コンテナで整合性のある動作をするように作成された一連のプログラミングガイドラインに従う必要があります [1]。

この場合、プログラムは次の EJB ガイドラインに違反しています。

「enterprise bean はクラスローダーの作成、現在のクラスローダーの取得、コンテキストクラスローダーの設定、セキュリティマネージャの設定、新規セキュリティマネージャの設定、JVM の停止、または入力、出力、エラーストリームの変更を行ってはなりません。」

この仕様が正当化される要件は次のとおりです。

「これらの関数は EJB コンテナ専用です。enterprise bean にこれらの関数の使用を許可すると、セキュリティを危険にさらすだけでなく、ランタイム環境を適切に管理するコンテナの能力が低減するおそれがあります。」
References
[1] The Enterprise JavaBeans 2.1 Specification Sun Microsystems
[2] Standards Mapping - CIS Azure Kubernetes Service Benchmark 1
[3] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 2
[4] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 6
[5] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[6] Standards Mapping - Common Weakness Enumeration CWE ID 578
desc.structural.java.ejb_bad_practices_use_of_classloader