Reino: Encapsulation
La encapsulación consiste en crear límites fuertes. En un explorador web esto puede suponer la seguridad de que tu codificación móvil no se vea comprometido por otro código móvil. En el servidor puede significar la diferenciación entre los datos validados y los que no lo están, entre los datos de un usuario y los de otro, o entre los diferentes usuarios, los datos que pueden ver y los que no.
Unsafe Mobile Code: Inner Class
Abstract
El programa infringe los principios de codificación segura para código móvil usando una clase interna.
Explanation
Las clases internas introducen discretamente varios problemas de seguridad por la forma en que se traducen en código de bytes Java. En el código fuente Java, parece ser que una clase interna se puede declarar para que sea accesible solo para clase envolvente. Sin embargo, como el código de bytes de Java no tiene concepto de clase interna, el compilador debe transformar una declaración de clase interna en una clase del mismo nivel, con un nivel de acceso de
Ejemplo 1: el siguiente código Applet de Java utiliza incorrectamente una clase interna.
El código móvil, en este caso un Applet de Java, es el código que se transmite por una red y se ejecuta en un equipo remoto. Como los desarrolladores de código móvil tienen poco o ningún control sobre el entorno en el que su código se va a ejecutar, aparecen preocupaciones especiales en materia de seguridad. Una de las mayores amenazas del entorno proceden del riesgo de que el código móvil se ejecute a la par con otro código móvil, potencialmente malintencionado. Como todos los exploradores web más populares ejecutan código desde varios orígenes juntos en el mismo JVM, muchas de estas instrucciones de seguridad para el código móvil se centran en evitar la manipulación del estado y el comportamiento de sus objetos por parte de adversarios que tienen acceso a la misma máquina virtual en la que se ejecuta su programa.
package
a la clase externa original. Es más, como una clase interna puede acceder a campos private
en su clase envolvente, una vez que una clase interna se convierte en otra del mismo nivel en código de bytes, el compilador convierte los campos private
a los que accede la clase interna en campos protected
. Ejemplo 1: el siguiente código Applet de Java utiliza incorrectamente una clase interna.
public final class urlTool extends Applet {
private final class urlHelper {
...
}
...
}
El código móvil, en este caso un Applet de Java, es el código que se transmite por una red y se ejecuta en un equipo remoto. Como los desarrolladores de código móvil tienen poco o ningún control sobre el entorno en el que su código se va a ejecutar, aparecen preocupaciones especiales en materia de seguridad. Una de las mayores amenazas del entorno proceden del riesgo de que el código móvil se ejecute a la par con otro código móvil, potencialmente malintencionado. Como todos los exploradores web más populares ejecutan código desde varios orígenes juntos en el mismo JVM, muchas de estas instrucciones de seguridad para el código móvil se centran en evitar la manipulación del estado y el comportamiento de sus objetos por parte de adversarios que tienen acceso a la misma máquina virtual en la que se ejecuta su programa.
References
[1] G. McGraw Securing Java. Chapter 7: Java Security Guidelines
[2] Standards Mapping - Common Weakness Enumeration CWE ID 492
[3] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-000213, CCI-002165
[4] Standards Mapping - NIST Special Publication 800-53 Revision 4 AC-3 Access Enforcement (P1)
[5] Standards Mapping - NIST Special Publication 800-53 Revision 5 AC-3 Access Enforcement
[6] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.8
[7] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.8
[8] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.8
[9] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.8
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[11] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 6.2.4
[12] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 5.4 - Authentication and Access Control
[13] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 5.4 - Authentication and Access Control
[14] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 5.4 - Authentication and Access Control, Control Objective C.2.3 - Web Software Access Controls
[15] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[16] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[17] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[18] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[19] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[20] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[21] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[22] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[23] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[24] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[25] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[26] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[27] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[28] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[29] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[30] Standards Mapping - Security Technical Implementation Guide Version 6.2 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[31] Standards Mapping - Web Application Security Consortium Version 2.00 Insufficient Authorization (WASC-02)
desc.structural.java.unsafe_mobile_code_inner_class