Reino: Code Quality

Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.

Portability Flaw: Native SQL

Abstract
El uso de SQL nativo provoca problemas de portabilidad.
Explanation
Los sistemas SAP están diseñados para ser independientes de la plataforma. Open SQL, el dialecto SQL portátil de SAP, hace que las aplicaciones sean independientes de un controlador JDBC de un determinado proveedor de base de datos. El uso de Open SQL elimina las complejidades de la base de datos subyacente y proporciona una interfaz común a programas de aplicaciones para todas las operaciones de base de datos. Sin embargo, SQL nativo es específico de la base de datos subyacente y, por lo tanto, su uso en otras plataformas podría provocar a una ejecución incorrecta de la lógica de las aplicaciones y conducir potencialmente a una denegación de servicio.
Ejemplo 1: el siguiente código usa SQL nativo:


...
import java.sql.PreparedStatement;
import com.sap.sql.NativeSQLAccess;

String mssOnlyStmt = "...";
// variant 1
PreparedStatement ps =
NativeSQLAccess.prepareNativeStatement(
conn, mssOnlyStmt);
. . .
// variant 2
Statement stmt =
NativeSQLAccess.createNativeStatement(conn);
int result = stmt.execute(mssOnlyStmt);
. . .
// variant 3
CallableStatement cs =
NativeSQLAccess.prepareNativeCall(
conn, mssOnlyStmt);
. . .
References
[1] Standards Mapping - CIS Azure Kubernetes Service Benchmark 1
[2] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 5
[3] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 1
[4] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[5] Standards Mapping - Common Weakness Enumeration CWE ID 474
desc.structural.java.portability_flaw_native_sql