Nmap Development mailing list archives
Re: [Ncat] hang on ongoing ssl negotation in brokering mode
From: Shinnok <admin () shinnok com>
Date: Wed, 15 Jun 2011 20:33:46 +0300
On 6/13/2011 11:09 PM, David Fifield wrote:
Fixed in r24036. I have a question though, regarding both posix and windows versions of this exec behaviour: Since exec invocations usually have that already available to send to the socket even if the ssl negotiation didn't finish, calls to fselect() @210 in ncat_posix.c and WaitForMultipleObjects() @387 in ncat_exec_win.c will basically return the minute they are called thus no waiting is accomplished. However I block the loops from sending that data over the socket if the ssl handshake is not completed @253 and @415 respectively. This basically means that ncat will enter an infinite loop at that point and consume the entire cpu(or a core/thread) till that handshake is completed or abandoned. Further connections work fine and all that, however the full cpu is not nice. My proposed solution is to timeout this ssl negotiation for a specific number of seconds and then drop the entire connection at question after that time is passed. I'm welcome to suggestions on this issue.Argh, and there's ncat_exec_win.c that I have to handle too, if I'm not mistaken, since I only too cake of the netexec() in ncat_posix.c? Any special comments for that David? I see there's some playing around with blocking/unblocking of the remote socket(@420) which might interfere with making this work.Yes, it should work for Windows too. You probably don't have to worry about that blocking detail.
Please find a way to factor this code into its own function. It's too much to have it repeated in each read loop. if(o.ssl&& info->ssl&& !info->ssl_accept_done){ int ret = SSL_accept(info->ssl); int sslerr = 0; if(ret == 1){ info->ssl_accept_done = 1; continue; }else sslerr = SSL_get_error(info->ssl, ret); if(ret == -1&& (sslerr == SSL_ERROR_WANT_READ || sslerr == SSL_ERROR_WANT_WRITE)){ continue; }else { if (o.verbose) { loguser("Failed SSL connection from %s: %s\n", inet_socktop(&info->remoteaddr), ERR_error_string(ERR_get_error(), NULL)); } goto loop_end; } } David Fifield
I'm working on this right now. Best regards, Shinnok _______________________________________________ Sent through the nmap-dev mailing list http://cgi.insecure.org/mailman/listinfo/nmap-dev Archived at http://seclists.org/nmap-dev/
Current thread:
- [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 06)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode David Fifield (Jun 11)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 13)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 13)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode David Fifield (Jun 13)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 15)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 16)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 16)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 16)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode David Fifield (Jun 21)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode Shinnok (Jun 13)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode David Fifield (Jun 11)
- Re: [Ncat] hang on ongoing ssl negotation in brokering mode David Fifield (Jun 13)
- Ncat accepting connections without --keep-open David Fifield (Jun 13)
- Re: Ncat accepting connections without --keep-open Shinnok (Jun 18)
- Re: Ncat accepting connections without --keep-open Shinnok (Jun 20)
- Re: Ncat accepting connections without --keep-open Shinnok (Jun 22)
- Re: Ncat accepting connections without --keep-open Shinnok (Jun 30)