com.h3xstream.findsecbugs.injection.trust.TrustBoundaryViolationAttributeDetector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of findsecbugs-plugin Show documentation
Show all versions of findsecbugs-plugin Show documentation
Core module of the project. It include all the FindBugs detectors.
The resulting jar is the published plugin.
/**
* Find Security Bugs
* Copyright (c) Philippe Arteau, All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
*/
package com.h3xstream.findsecbugs.injection.trust;
import com.h3xstream.findsecbugs.injection.BasicInjectionDetector;
import com.h3xstream.findsecbugs.taintanalysis.Taint;
import edu.umd.cs.findbugs.BugReporter;
import edu.umd.cs.findbugs.Priorities;
/**
*
* Trust Boundary Violation is fancy name to describe tainted value passed directly to session attribute.
* This could be an expected behavior that allow an attacker to change the session state.
*
*
* When the attribute name is dynamic, it is a lot more suspicious than when it is a dynamic value.
* setAttribute( suspiciousValue, "true")
* vs
* setAttribute( "language" , commonDynamicValue)
*
*
* For this reason, the trust boundary violation was split in two detector.
*
*
* @see TrustBoundaryViolationValueDetector
*/
public class TrustBoundaryViolationAttributeDetector extends BasicInjectionDetector {
public TrustBoundaryViolationAttributeDetector(BugReporter bugReporter) {
super(bugReporter);
loadConfiguredSinks("trust-boundary-violation-attribute.txt", "TRUST_BOUNDARY_VIOLATION");
}
/**
* All or nothing :
*
* - If the taint to sink path is found, it is mark as high
* - If the source is not confirm, it is mark as low. This is will be the most common case.
*
* @param taint Taint state
* @return High or low confidence
*/
@Override
protected int getPriority(Taint taint) {
if (taint.isTainted()) {
return Priorities.NORMAL_PRIORITY;
}
else if (!taint.isSafe()) {
return Priorities.LOW_PRIORITY;
}
else {
return Priorities.IGNORE_PRIORITY;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy