Impact
Remotely triggerable DoS in find-my-way when it is used with Node's HTTP/2 server.
The short version is that lookup() passes req.method into find(), and find() indexes this.trees[method]. Since this.trees is a normal object, HTTP/2 method values like constructor, toString, or __proto__ can resolve inherited object properties instead of returning undefined. The code then treats that value like a router node and crashes when it reaches currentNode.prefix.length.
Patches
Upgrade to v9.7.0.
Workarounds
Do not use find-my-way with HTTP/2 servers, or validate that the http method is valid beforehand.
References
Impact
Remotely triggerable DoS in find-my-way when it is used with Node's HTTP/2 server.
The short version is that
lookup()passesreq.methodintofind(), andfind()indexesthis.trees[method]. Sincethis.treesis a normal object, HTTP/2 method values like constructor,toString, or__proto__can resolve inherited object properties instead of returning undefined. The code then treats that value like a router node and crashes when it reachescurrentNode.prefix.length.Patches
Upgrade to v9.7.0.
Workarounds
Do not use find-my-way with HTTP/2 servers, or validate that the http method is valid beforehand.
References