Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

From: http://www.hpenterprisesecurity.com/vulncat/en/vulncat/java/j2ee_badpractices_leftover_debug_code.htmlAccording to J2EE Bad Practices: Leftover Debug Code [Hewlett-Packard 2015]:

A common development practice is to add "back door" code specifically designed for debugging or testing purposes that is not intended to be shipped or deployed with the application. When this sort of debug code is accidentally left in the application, the application is open to unintended modes of interaction. These back door entry points create security risks because they are not considered during design or testing and fall outside of the expected operating conditions of the application.

The most common example of forgotten debug code is a main() method appearing in a web application. Although this is an acceptable practice during product development, classes that are part of a production J2EE application should not define a main().

Noncompliant Code Example

In this noncompliant code example, the Stuff class have has main() function that tests its methods. While Although useful for debugging, if this function is left in production code (for a web application, for example), then an attacker can invoke Stuff.main() directly, gaining access to Stuff's test methods.

Code Block
bgColor#FFcccc
class Stuff {
  private static final bool DEBUG = False;
  // otherOther fields and methods
  public static void main(String args[]) {
    Stuff.DEBUG = True;
    Stuff stuff = new Stuff();
    // Test stuff
  }
}

...

Leaving extra entry points into production code could allow an attacker to gain special access to the program.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

ENV06-J

high

High

probable

Probable

low

Low

P18

L1

Automated Detection

This rule is not amenable to automated static analysis.

Bibliography

...

ToolVersionCheckerDescription
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V

JAVA.DEBUG.MEDF

Method Enables Debug Features (Java)

SonarQube
Include Page
SonarQube_V
SonarQube_V
S2653Detects main in Servlets and EJBs


Bibliography


...

Image Modified Image Modified Image Modified