Falhas do tipo CWE-1322

1 resultado

Uso de código bloqueante em contexto não-bloqueante

Ocorre quando um desenvolvedor usa operações síncronas (bloqueantes) dentro de um contexto assíncrono ou event-driven, como callbacks de Node.js, handlers de eventos ou corrotinas. Isso congela a execução da thread única, impedindo que outras requisições ou eventos sejam processados, degradando drasticamente a performance ou causando travamento total da aplicação.

Exemplo

Um servidor Express.js que faz um SQL.query() síncrono (bloqueante) dentro de uma rota handler para consultar dados, em vez de usar callbacks ou promises assíncronas. Enquanto aquela query executa, nenhuma outra requisição HTTP pode ser atendida, deixando todos os clientes esperando.

Como mitigar

Use sempre operações assíncronas (async/await, promises, callbacks) em contextos non-blocking. Para I/O, prefira bibliotecas não-bloqueantes (pg em vez de driver síncrono, fetch em vez de http síncrono). Valide no code review se há operações síncronas desnecessárias em paths críticos de event-driven code.