Reino: Encapsulation
Encapsulamento consiste em traçar limites fortes. Em um navegador web, isso pode significar que seu código para dispositivos móveis não pode ser abusado por outros códigos para dispositivos móveis. No servidor, pode significar a diferenciação entre dados validados e não validados, entre os dados de dois usuários ou entre os dados que os usuários podem ou não acessar.
Unsafe Mobile Code: Inner Class
Abstract
O programa viola os princípios de codificação segura para o código móvel utilizando uma classe interna.
Explanation
Classes internas introduzem silenciosamente várias preocupações de segurança devido à forma como são convertidas em códigos de bytes Java. No código-fonte Java, parece que uma classe interna pode ser declarada para ser acessível somente pela classe delimitadora, mas o código de bytes Java não tem nenhum conceito de uma classe interna e, portanto, o compilador deve transformar uma declaração de classe interna em uma classe de mesmo nível com acesso em nível de
Exemplo 1: O seguinte código de Applet Java utiliza uma classe interna por engano.
O código móvel, nesse caso um Applet Java, é o código que é transmitido através de uma rede e executado em uma máquina remota. Como os desenvolvedores de códigos móveis têm pouco ou nenhum controle sobre o ambiente em que seus códigos serão executados, preocupações especiais de segurança tornam-se relevantes. Uma das maiores ameaças ambientais resulta do risco de o código móvel ser executado correr lado a lado com outro código móvel potencialmente mal-intencionado. Como todos os navegadores da Web populares executam código de várias fontes juntos na mesma JVM, muitas das diretrizes de segurança do código móvel estão concentradas em impedir a manipulação do estado e do comportamento dos seus objetos por adversários que têm acesso à mesma máquina virtual na qual o programa está sendo executado.
package
à classe externa original. Mais insidiosamente, como uma classe interna pode acessar os campos private
na respectiva classe delimitadora, assim que uma classe interna se tornar uma classe de mesmo nível no código de bytes, o compilador converterá os campos private
acessados pela classe interna em campos protected
.Exemplo 1: O seguinte código de Applet Java utiliza uma classe interna por engano.
public final class urlTool extends Applet {
private final class urlHelper {
...
}
...
}
O código móvel, nesse caso um Applet Java, é o código que é transmitido através de uma rede e executado em uma máquina remota. Como os desenvolvedores de códigos móveis têm pouco ou nenhum controle sobre o ambiente em que seus códigos serão executados, preocupações especiais de segurança tornam-se relevantes. Uma das maiores ameaças ambientais resulta do risco de o código móvel ser executado correr lado a lado com outro código móvel potencialmente mal-intencionado. Como todos os navegadores da Web populares executam código de várias fontes juntos na mesma JVM, muitas das diretrizes de segurança do código móvel estão concentradas em impedir a manipulação do estado e do comportamento dos seus objetos por adversários que têm acesso à mesma máquina virtual na qual o programa está sendo executado.
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 - Web Application Security Consortium Version 2.00 Insufficient Authorization (WASC-02)
desc.structural.java.unsafe_mobile_code_inner_class