[ 
https://issues.apache.org/jira/browse/TINKERPOP-3278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18099850#comment-18099850
 ] 

ASF GitHub Bot commented on TINKERPOP-3278:
-------------------------------------------

GumpacG commented on code in PR #3578:
URL: https://github.com/apache/tinkerpop/pull/3578#discussion_r3669202180


##########
THREAT_MODEL.md:
##########
@@ -394,7 +398,12 @@ Per-surface trust table:
   allow-list (`registrationRequired=true`), so it is not an 
arbitrary-instantiation sink, and a break within
   that locked config is a `VALID` bug like any deserializer. **Running Gryo 
unlocked
   (`registrationRequired=false`) is not a safe boundary against untrusted 
bytes and is the user's
-  responsibility.** (A few registered types use Java native serialization, a 
gadget caveat even when locked.)
+  responsibility.** A few registered types are also serialized with Kryo's 
`JavaSerializer`, which reads by way of
+  `ObjectInputStream.readObject()` and is a gadget caveat even when locked. As 
of 3.7.7 the mappers the IO paths

Review Comment:
   Fixed, thanks!





> Gryo IO unsafe Java deserialization
> -----------------------------------
>
>                 Key: TINKERPOP-3278
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3278
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: io
>    Affects Versions: 4.0.0, 3.7.7, 3.8.2
>            Reporter: Guian Gumpac
>            Priority: Major
>
> Gryo registers several {{TraversalStrategy}} types (and 
> {{{}TraversalExplanation{}}}) with Kryo's {{{}JavaSerializer{}}}, so reading 
> a Gryo document deserializes attacker-controlled bytes via 
> {{{}ObjectInputStream.readObject(){}}}.
> Affected: {{gremlin-core}} Gryo IO ({{{}GryoVersion{}}}/{{{}GryoMapper{}}}), 
> consumed by {{{}io(){}}}, {{{}GryoReader{}}}, {{{}GryoWriter{}}}, 
> {{{}GryoIo{}}}, and the Hadoop Gryo IO formats. Gryo 1.0 and 3.0.
> {{JavaSerializer.read()}} wraps the Kryo input in a 
> {{java.io.ObjectInputStream}} and calls {{{}readObject(){}}}, which 
> reconstructs and runs an arbitrary {{Serializable}} object graph during 
> decoding, before any graph-level validation. Reading a Gryo file from an 
> untrusted source is therefore an unsafe-deserialization sink: it can cause 
> denial of service and, on a classpath with a usable gadget chain, arbitrary 
> code execution. Gryo is not on the wire, so the surface is untrusted files 
> and OLAP inputs ({{{}io().read(){}}}, {{gryo}} graph persistence, 
> Hadoop/Spark).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to