On 11/07/2012 4:31 p.m., Alex Rousskov wrote:
> Last call! Will merge into trunk tomorrow unless I hear otherwise.
>
> Thank you,
>
> Alex.
Sorry. Kept forgetting to check thus when I was near a machine which 
could download and decrompress attachments.
A quick check brings up a few things. I don't have time to do a proper 
deep check of this sized patch.
cache_cf.cc
  * "ssl-bump on https_port configuration requires either tproxy or 
intercepted"
   --> "tproxy or intercept" (no 'ed'). This also applies to the 
debugs() message.
* why is is  FATAL: error to have old ssl_bump allow/deny values in the 
config?
   can we auto-convert the "allow" to client-first and deny to bump-none 
with very loud ERROR: messages instead? we can calculate what the 
implicit negate would have been and add it explicitly with another loud 
warning.
src/cf.data.pre:
* Please use "IF " instead of "IFDEF " for the new inline #if macro. It 
is confusing to tell whether any particular one should be IFDEF<space>  
or IFDEF<colon>.
* Why does https_port ssl-bump depend on tproxy mode? (this contradicts 
the "either tproxy or intercepted" messages noted above)
  The destination IP:port is also available in the same place(s) on 
intercept mode from 3.2 onward.
  NP: this affects the fake request comment documentation "using 
tproxy-provided destination IP and port"
src/client_side.h:
* setServerBump(Ssl::ServerBump *srvBump) has no else condition 
reporting or handling when setting fails.
src/client_side_request.cc:
* in doCallouts, instead of adding repeated tests of 
!calloutContext->error. Can you please wrap if(!calloutContext->error) { 
... }  around the whole section of callouts
* Why are error pages delayed until after bumping? have you investigated 
how this interacts with deny_info redirection to 4xx and 5xx pages? 
(particularly 403 and 511 "web login required" splash pages)
src/errorpage.cc:
*  ErrorState::detailError(int detailCode) implementation looks like a 
GCC "warning: parameter shadows member" in the making.
   Please make that an inline function and rename parameter detailCode 
to dCode or something.
src/forward.cc:
* It seems that selectPeerForIntercepted() is permitting pinned 
destinations to pass-thru when Host header is non-validated.
   Malicious intercepted clients now only need to send www-auth 
credentials for a connection-auth scheme (triggering pinning) to be able 
to make poisoning attacks on any followup pipelined request.
eg:
   GET / HTTP/1.1
   Host: cahoots.server
   WWW-authenticate: NTLM fake
   \r\n
   GET /poisoned-URI/ HTTP/1.1
   Host: victim.site
  + I have not had time to investigate this re-pinning mechanism that 
has been added. Is there potential for the malicious client and cahoot 
server to trigger it and change to an unvalidated destination? or does 
it simply re-open the Comm::Connection (same destination IP)?
  + Please ensure the pinning is only permitted on bumped requests. And 
I'm not certain they are completely safe either given that we already 
have bug reports indicating domains A and B being sent through a CONNECT 
to server for A.
  * If possible a check to validate that the Host matches the CONNECT 
authority-URI would be great.
* "TODO: move into a method before merge" - please enact or remove TODO.
src/url.cc:
* this breaks the canonical URI "cache" when URL parsing is changing the 
request URL pieces. Please revert.
Amos
Received on Wed Jul 11 2012 - 12:38:51 MDT
This archive was generated by hypermail 2.2.0 : Thu Jul 12 2012 - 12:00:03 MDT