界: API Abuse

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

J2EE Bad Practices: Sockets

Abstract
Web アプリケーションでのソケットベース通信はエラーが発生しやすくなります。
Explanation
J2EE 標準は、より上位のプロトコルを利用できない場合、レガシシステムでの通信目的にのみ Use of Sockets を許可します。自身の通信プロトコルを認証するには、以下を含めて難しいセキュリティ上の課題に取り組む必要があります。

- 帯域内信号と帯域外信号

- プロトコルのバージョン間の互換性

- チャネルのセキュリティ

- エラーの取り扱い

- ネットワークの制約 (ファイアウォール)

- セッション管理

セキュリティ専門家による十分な監視が行わなければ、カスタム通信プロトコルはセキュリティ問題に悩まされる可能性が高くなります。

同様の多くの問題が標準プロトコルのカスタム実装に当てはまります。標準プロトコルの実装に関連したセキュリティ問題に取り組む多くのリソースがありますが、これらのリソースは攻撃者も利用できます。
References
[1] Java 2 Platform Enterprise Edition Specification, v1.4 Sun Microsystems
[2] Standards Mapping - Common Weakness Enumeration CWE ID 246
[3] Standards Mapping - OWASP API 2023 API8 Security Misconfiguration
desc.semantic.java.j2ee_badpractices_sockets