界: API Abuse

API 是调用方和被调用方之间的约定。最常见的 API 滥用是由于调用方未能遵守此约定的终止导致的。例如,如果某个程序在调用 chroot() 后未能调用 chdir(),则违反了用于指定如何安全地更改活动根目录的约定。库滥用的另一个典型示例是期望被调用方向调用方返回可信的 DNS 信息。在这种情况下,调用方通过对被调用方行为做出某种假设(返回值可用于身份验证目的)滥用其 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 - CIS Azure Kubernetes Service Benchmark 1
[3] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 1
[4] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 4
[5] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[6] Standards Mapping - Common Weakness Enumeration CWE ID 246
[7] Standards Mapping - OWASP API 2023 API8 Security Misconfiguration
desc.semantic.java.j2ee_badpractices_sockets