
BNaveen787221 (Community Member) asked a question.
Object newJavaBean = Class.forName((new StringBuilder(String.valueOf(packageName))).append(".").append(raw).toString()).newInstance();
in the above line code showing above security vulnerability

BNaveen787221 (Community Member) asked a question.
Object newJavaBean = Class.forName((new StringBuilder(String.valueOf(packageName))).append(".").append(raw).toString()).newInstance();
in the above line code showing above security vulnerability
Ask the Community
Get answers, share a use case, discuss your favorite features, or get input from the community.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
.png)
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.
Hi @BNaveen787221 (Community Member) ,
Veracode Static Analysis reports a flaw of CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') when it can see data from outside of the application (for example from an HTTP Request but also from a file or database) going into the use of reflection.
The concern is that an attacker would be able to run unintended code on your system which could lead to system compromise.
Veracode Static Analysis will only automatically close this flaw if no dynamic data is used with the reflection APIs.
In your example this would be 'packageName' and 'raw'.
We recommend validating this dynamic data by using a list of hardcoded allowed values.
For example:
String[] allowedPackageNames = new String[]{"com.veracode"};
String validatedPackageName = "com.veracode"; // Default packageName
for (String allowedPackageName: allowedPackageNames) {
if (allowedPackageNames.equals(packageName)) {
validatedPackageName = allowedPackageName;
}
}
String[] allowedClassNames = new String[]{"EmployeeBean"};
String validatedClassName = "EmployeeBean"; // Default className
for (String allowedClassName: allowedClassNames) {
if (allowedClassNames.equals(raw)) {
validatedClassName = allowedClassName;
}
}
Object newJavaBean = Class.forName(
(new StringBuilder(
String.valueOf(validatedPackageName)))
.append(".")
.append(validatedClassName).toString())
.newInstance();
Thank you,
Boy Baukema