keesspoelstra commented on pull request #8448:
URL: https://github.com/apache/trafficserver/pull/8448#issuecomment-960202372


   We have an HPACK corruption issue when we ignore response headers on H2 to 
origin, this was observed on a Pulse Secure VTM.
   
   1. Request A: Proxy sends request headers to origin
   2. Request A: Origin responds with RST stream for whatever reason
   3. Request A: Proxy deletes stream
   4. Request A: Origin sends response headers
   5. Request A: Proxy ignores and sends RST on stream
   6. Request A: Origin sends data
   7. Request A: Proxy ignores and sends RST
   8. Request B: Proxy sends request headers to origin
   9. . Request B: Origin sends response headers
   10. Request B: Proxy processes headers (HPACK)
   10. . Request B: Proxy ignores and sends RST on stream
   11. . Request B: Origin sends data
   12. . Request B: Proxy ignores and sends RST
   
   Because we ignored the response headers for **request A** in **5**, we 
missed updating the HPACK table.
   When reaching **10** and processing the response headers for **request B** 
we miss entries in our HPACK and possibly generate corrupt headers.
   If we choose to RST streams or get an RST on a stream, we should still 
process headers to keep the HPACK table intact. 
   We could also choose to send a GOAWAY when we see this happening, but 
finishing or retrying in flight transactions will be challenging if they're not 
idempotent. The subsequent response headers of an inflight POST might not be 
salvageable. 
   
   I think we're safe on the client to proxy side, as it seems that we're 
processing all request headers in sequence and never drop before HPACK 
processing.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to