7
7
* @id cpp/external-entity-expansion
8
8
* @problem.severity warning
9
9
* @security-severity 9.1
10
- * @precision medium
10
+ * @precision high
11
11
* @tags security
12
12
* external/cwe/cwe-611
13
13
*/
@@ -30,7 +30,7 @@ abstract class XXEFlowState extends DataFlow::FlowState {
30
30
* An `Expr` that changes the configuration of an XML object, transforming the
31
31
* `XXEFlowState` that flows through it.
32
32
*/
33
- abstract class XXEFlowStateTranformer extends Expr {
33
+ abstract class XXEFlowStateTransformer extends Expr {
34
34
/**
35
35
* Gets the flow state that `flowstate` is transformed into.
36
36
*
@@ -119,10 +119,10 @@ class XercesFlowState extends XXEFlowState {
119
119
* `SAXParser.setDisableDefaultEntityResolution`. Transforms the flow
120
120
* state through the qualifier according to the setting in the parameter.
121
121
*/
122
- class DisableDefaultEntityResolutionTranformer extends XXEFlowStateTranformer {
122
+ class DisableDefaultEntityResolutionTransformer extends XXEFlowStateTransformer {
123
123
Expr newValue ;
124
124
125
- DisableDefaultEntityResolutionTranformer ( ) {
125
+ DisableDefaultEntityResolutionTransformer ( ) {
126
126
exists ( Call call , Function f |
127
127
call .getTarget ( ) = f and
128
128
(
@@ -154,10 +154,10 @@ class DisableDefaultEntityResolutionTranformer extends XXEFlowStateTranformer {
154
154
* `AbstractDOMParser.setCreateEntityReferenceNodes`. Transforms the flow
155
155
* state through the qualifier according to the setting in the parameter.
156
156
*/
157
- class CreateEntityReferenceNodesTranformer extends XXEFlowStateTranformer {
157
+ class CreateEntityReferenceNodesTransformer extends XXEFlowStateTransformer {
158
158
Expr newValue ;
159
159
160
- CreateEntityReferenceNodesTranformer ( ) {
160
+ CreateEntityReferenceNodesTransformer ( ) {
161
161
exists ( Call call , Function f |
162
162
call .getTarget ( ) = f and
163
163
f .getClassAndName ( "setCreateEntityReferenceNodes" ) instanceof AbstractDOMParserClass and
@@ -195,10 +195,10 @@ class FeatureDisableDefaultEntityResolution extends Variable {
195
195
* specifying the feature `XMLUni::fgXercesDisableDefaultEntityResolution`.
196
196
* Transforms the flow state through the qualifier according to this setting.
197
197
*/
198
- class SetFeatureTranformer extends XXEFlowStateTranformer {
198
+ class SetFeatureTransformer extends XXEFlowStateTransformer {
199
199
Expr newValue ;
200
200
201
- SetFeatureTranformer ( ) {
201
+ SetFeatureTransformer ( ) {
202
202
exists ( Call call , Function f |
203
203
call .getTarget ( ) = f and
204
204
f .getClassAndName ( "setFeature" ) instanceof Sax2XmlReader and
@@ -246,10 +246,10 @@ class DomConfigurationSetParameter extends Function {
246
246
* `DOMConfiguration` pointer returned by `DOMLSParser.getDomConfig` - and it
247
247
* is *that* qualifier we want to transform the flow state of.
248
248
*/
249
- class DomConfigurationSetParameterTranformer extends XXEFlowStateTranformer {
249
+ class DomConfigurationSetParameterTransformer extends XXEFlowStateTransformer {
250
250
Expr newValue ;
251
251
252
- DomConfigurationSetParameterTranformer ( ) {
252
+ DomConfigurationSetParameterTransformer ( ) {
253
253
exists ( FunctionCall getDomConfigCall , FunctionCall setParameterCall |
254
254
// this is the qualifier of a call to `DOMLSParser.getDomConfig`.
255
255
getDomConfigCall .getTarget ( ) instanceof GetDomConfig and
@@ -429,15 +429,15 @@ class XXEConfiguration extends DataFlow::Configuration {
429
429
override predicate isAdditionalFlowStep (
430
430
DataFlow:: Node node1 , string state1 , DataFlow:: Node node2 , string state2
431
431
) {
432
- // create additional flow steps for `XXEFlowStateTranformer `s
433
- state2 = node2 .asConvertedExpr ( ) .( XXEFlowStateTranformer ) .transform ( state1 ) and
432
+ // create additional flow steps for `XXEFlowStateTransformer `s
433
+ state2 = node2 .asConvertedExpr ( ) .( XXEFlowStateTransformer ) .transform ( state1 ) and
434
434
DataFlow:: simpleLocalFlowStep ( node1 , node2 )
435
435
}
436
436
437
437
override predicate isBarrier ( DataFlow:: Node node , string flowstate ) {
438
438
// when the flowstate is transformed at a call node, block the original
439
439
// flowstate value.
440
- node .asConvertedExpr ( ) .( XXEFlowStateTranformer ) .transform ( flowstate ) != flowstate
440
+ node .asConvertedExpr ( ) .( XXEFlowStateTransformer ) .transform ( flowstate ) != flowstate
441
441
}
442
442
}
443
443
0 commit comments