Hello,
OWASP ZAP fails to import some OAS that contain recursive schema. It happens in ZAP (latest version, 2.11.1), but according to the stack trace, it seems that it is caused by swagger-parser.
I am unsure how to reproduce that in swagger-parser directly :
2022-06-13 16:30:01,587 [ZAP-ProxyThread-78] ERROR UncaughtExceptionLogger - Exception in thread "ZAP-ProxyThread-78"
java.lang.StackOverflowError: null
at io.swagger.v3.parser.util.ResolverFully.resolveSchema(ResolverFully.java:413) ~[?:?]
at io.swagger.v3.parser.util.ResolverFully.resolveSchema(ResolverFully.java:350) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
at io.swagger.v3.parser.util.ResolverFully.resolveSchema(ResolverFully.java:413) ~[?:?]
at io.swagger.v3.parser.util.ResolverFully.resolveSchema(ResolverFully.java:350) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
at io.swagger.v3.parser.util.ResolverFully.resolveSchema(ResolverFully.java:413) ~[?:?]
at io.swagger.v3.parser.util.ResolverFully.resolveSchema(ResolverFully.java:350) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
Here's an OAS that crashes ZAP :
---
components:
parameters:
p_one:
in: query
schema:
"$ref": "#/components/schemas/NestedObject"
style: deepObject
p_two:
in: query
schema:
"$ref": "#/components/schemas/NestedObject"
style: deepObject
schemas:
NestedObject:
additionalProperties:
oneOf:
- "$ref": "#/components/schemas/NestedObject"
- not:
type: object
type: object
info:
title: Schema component Recursion
version: 1.0.0
openapi: 3.0.0
paths:
"/first":
delete:
parameters:
- "$ref": "#/components/parameters/p_two"
get:
parameters:
- "$ref": "#/components/parameters/p_two"
- "$ref": "#/components/parameters/p_one"
"/second":
get:
parameters:
- "$ref": "#/components/parameters/p_one"
servers:
- url: "/api"
Hello,
OWASP ZAP fails to import some OAS that contain recursive schema. It happens in ZAP (latest version, 2.11.1), but according to the stack trace, it seems that it is caused by swagger-parser.
I am unsure how to reproduce that in swagger-parser directly :
Here's an OAS that crashes ZAP :