In RubyGem excon before 0.71.0, there was a race condition around persistent connections, where a connection which is interrupted (such as by a timeout) would leave data on the socket. Subsequent requests would then read this data, returning content from the previous response. The race condition window appears to be short, and it would be difficult to purposefully exploit this.
The product does not maintain or incorrectly maintains control over a resource throughout its lifetime of creation, use, and release.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Excon | Excon_project | * | 0.71.0 (excluding) |
Ruby-excon | Ubuntu | bionic | * |
Ruby-excon | Ubuntu | disco | * |
Ruby-excon | Ubuntu | eoan | * |
Ruby-excon | Ubuntu | trusty | * |
Ruby-excon | Ubuntu | xenial | * |
Resources often have explicit instructions on how to be created, used and destroyed. When code does not follow these instructions, it can lead to unexpected behaviors and potentially exploitable states. Even without explicit instructions, various principles are expected to be adhered to, such as “Do not use an object until after its creation is complete,” or “do not use an object after it has been slated for destruction.”