Estou tentando endurecer um site contra ataques envolvendo o seqüestro de sessão. O site é executado com o Nginx na frente de um aplicativo node.js. Como uma das contramedidas, o objetivo é configurar o Nginx para associar IDs de sessão do aplicativo a sessões SSL. Para isso, eu uso o seguinte módulo de terceiros: link , que implementa o conceito conforme descrito nos seguintes artigo .
Eu reconstruí o Nginx com sucesso com o módulo, mas estou tendo dificuldades para fazer com que ele funcione corretamente (ou mesmo consistentemente, para esse efeito). Não importa o que eu tente, o proxy também:
1) Uma incompatibilidade de soma de verificação:
2014/12/17 21:17:32 [debug] 3113#0: *1 ssl_session_master_key: 25a913d0524eb78d8433fdd5f5cf930a9a948ce09f5bfd8d
2014/12/17 21:17:32 [debug] 3113#0: *1 Session Binding Proxy encryption/decryption key: 80F426773F639A33C3279B55BDE9842D3767844DA026AEFF523C08DA03257A00
2014/12/17 21:17:32 [debug] 3113#0: *1 Session Binding Proxy Handler searching for: connect.sid
2014/12/17 21:17:32 [debug] 3113#0: *1 Session Binding Proxy Handler in string: __insp_wid=1037948077; __insp_nv=true; __insp_ref=d; __insp_norec_sess=true; _ga=GA1.2.999148523.1418831731; __insp_slim=1418846762624; connect.sid=s%3AMnIX0bsYtYJV7LSIYPrf53S1LMQnWoo2.HpVHL9F3tQ%2BlawYAE49gmE%2FIz3wUjJhd0Fh7QgBQOTw
2014/12/17 21:17:32 [debug] 3113#0: *1 Encrypted cookie value: H
2014/12/17 21:17:32 [info] 3113#0: *1 Session Binding Proxy: SHA256 checksum mismatch., client: 82.173.175.112, server: www.somehost.com, request: "GET /api/init?timestamp=1418847452710 HTTP/1.1", host: "www.somehost.com", referrer: "https://www.somehost.com/"
2014/12/17 21:17:32 [debug] 3113#0: *1 ssl_session_master_key: 25a913d0524eb78d8433fdd5f5cf930a9a948ce09f5bfd8d
2014/12/17 21:17:32 [debug] 3113#0: *1 Session Binding Proxy Filter IV: F66F734D7C905BEE
2014/12/17 21:17:32 [debug] 3113#0: *1 Session Binding Proxy encryption/decryption key: 80F426773F639A33C3279B55BDE9842D3767844DA026AEFF523C08DA03257A00
2) Erros de alocação de memória no log, combinados com o travamento de trabalhadores Nginx:
2014/12/17 12:55:05 [emerg] 32348#0: *51 malloc(9837586053127471180) failed (12: Cannot allocate memory), client: 62.140.137.158, server: www.somehost.com, request: "GET /api/timeline/2014-12-17 HTTP/1.1", host: "www.somehost.com"
2014/12/17 12:55:05 [emerg] 32348#0: *52 malloc(7770600577343422540) failed (12: Cannot allocate memory), client: 62.140.137.158, server: www.somehost.com, request: "GET /api/timeline/2014-12-17 HTTP/1.1", host: "www.somehost.com"
2014/12/17 12:55:05 [emerg] 32348#0: *53 malloc(12574651495842054220) failed (12: Cannot allocate memory), client: 62.140.137.158, server: www.somehost.com, request: "GET /api/timeline/2014-12-17 HTTP/1.1", host: "www.somehost.com"
2014/12/17 12:55:06 [alert] 32119#0: worker process 32348 exited on signal 11 (core dumped)
3) Comportamento inconsistente da própria webapp. Isso é bastante óbvio, considerando os erros mencionados acima. Mas, também com um site muito mais simples do que o aplicativo real, parece que não consigo fazer o módulo funcionar corretamente.
4) O Session-Binding-Proxy tem uma opção para definir explicitamente o 'session_binding_proxy_key'. Quando é omitido, o módulo gera uma chave na inicialização do Nginx como deveria. Ao definir explicitamente a chave para um valor inválido, iniciar o Nginx gera um erro e se recusa a iniciar (conforme esperado). No entanto, ao definir a chave para uma chave válida, o módulo não parece honrar a configuração e ainda usa uma chave gerada.
Escusado será dizer que, sem o Session-Binding-Proxy tudo funciona como esperado. Mas no entanto eu configuro as configurações de SBP, parece que não funciona.
Alguém tem uma idéia do que poderia estar errado? Alguém tem o Session-Binding-Proxy em execução como esperado? Qualquer ajuda seria muito apreciada.