Reino: API Abuse

Un API es un contrato entre un autor de llamada y un receptor de llamada. Las formas de abuso de API más comunes los produce el autor de llamada cuando no consigue atender su fin de este contrato. Por ejemplo, si un programa no consigue llamar chdir() después de llamar chroot(), se viola el contrato que especifica cómo cambiar el directorio de origen activo de una forma segura. Otro buen ejemplo de un abuso de manual es esperar que el receptor devuelva una información de DNS de confianza al autor de llamada. En este caso, el autor de llamada abusa el API del receptor haciendo determinadas suposiciones sobre su comportamiento (que el valor de retorno se puede usar con fines de autenticación). También se puede violar el contrato entre el autor de llamada y el receptor desde el otro lado. Por ejemplo, si un codificador envía SecureRandom y devuelve un valor no aleatorio, se viola el contrato.

J2EE Bad Practices: Sockets

Abstract
La comunicación basada en socket de las aplicaciones web es susceptible a errores.
Explanation
El estándar J2EE permite el uso de sockets solo para la comunicación con sistemas existentes cuando no hay ningún protocolo de nivel superior disponible. Para que pueda crear su propio protocolo de comunicación, debe hacer frente a complejos problemas de seguridad, entre los que se incluyen:

- Señalización en banda frente a fuera de banda

- Compatibilidad entre versiones del protocolo

- Seguridad de canal

- Administración de errores

- Restricciones de red (firewalls)

- Administración de sesiones

Sin un análisis importante por parte de un experto en seguridad, lo más probable es que un protocolo de comunicación personalizado presente problemas de seguridad.

Muchos de los mismos problemas se aplican a la implementación personalizada de un protocolo estándar. Aunque, por lo general, hay más recursos disponibles que solucionan los problemas de seguridad relacionados con la implementación de un protocolo estándar, estos recursos también están disponibles para los usuarios malintencionados.
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