flawopen.com/AI Security/lmcache-multiprocess-pickle-deserialization-cve-2026-105192
CVE-2026-105192: desserialização pickle sem autenticação no modo multiprocessado do LMCache
A CVE-2026-105192 permite que um par sem autenticação, ao alcançar o transporte multiprocessado do LMCache, acione desserialização insegura de pickle. Verifique se o endpoint ZMQ é roteável, restrinja o acesso e acompanhe uma correção do fornecedor.[1], [2]
O LMCache recebe um pacote lacrado de um par da rede e o abre com um mecanismo capaz de executar instruções escondidas nele. A falha ocorre antes de o servidor verificar que tipo de mensagem o pacote declara ser.[1], [2]
Conceitos Centrais e Termos
CWE-502: desserialização insegura- O pickle do Python pode executar comportamentos ao reconstruir objetos. Não é seguro para dados enviados por um par de rede não confiável.[1], [2]
Modo multiprocessado do LMCache- Modo em que componentes do LMCache se comunicam por transporte ZeroMQ. O registro CVE descreve um endpoint ROUTER sem autenticação.[2], [5]
Extensão MessagePack- Um valor de extensão MessagePack chega a DeviceIPCWrapper.Deserialize durante a decodificação, antes da seleção do tipo de requisição.[2], [4], [3]
Limite de exposição- Segundo o registro CVE, o transporte usa localhost por padrão. Um --host roteável ou uma rede de cluster acessível altera quem pode enviar mensagens.[2], [5]
Versões afetadas- A divulgação cita as versões 0.3.9 a 0.5.5, incluindo candidatos a 0.5.6 e a branch de desenvolvimento, em 07/10/2026.[1], [2]
CWE-306: ausência de autenticação em função crítica- O registro CVE também atribui
CWE-306porque o ROUTER ZeroMQ não autentica os pares. Esse é um problema distinto no limite de transporte, separado da reconstrução insegura por pickle (CWE-502). A exposição ainda depende de um endpoint alcançável; o vínculo padrão ao localhost não é acessível remotamente por si só.[2]
Mapeamentos de frameworks
Fluxo de Ataque Passo a Paso
Condição de implantação e resposta
| Condição | Avaliação |
|---|---|
| Modo multiprocessado desativado | Este caminho da CVE não fica habilitado. |
| Modo multiprocessado com vínculo apenas em loopback | Pares remotos não devem alcançar o endpoint; verifique a rede do host e os limites locais de confiança. |
| Vínculo roteável ou porta do cluster exposta | Considere potencialmente acessível; restrinja o acesso imediatamente e avalie os privilégios do processo. |
| Versões afetadas | A divulgação cita as versões 0.3.9 a 0.5.5, incluindo candidatos a 0.5.6 e a branch de desenvolvimento, em 07/10/2026. |
Código-Fonte: Vulnerável vs. Seguro
O registro do CVE Program atribui a CVE-2026-105192 à JFrog e documenta o caminho extensão MessagePack → DeviceIPCWrapper.Deserialize → pickle.loads, o vínculo localhost padrão, a opção --host roteável e CVSS 9,8. O código upstream confirma a chamada ao desserializador. Este artigo não inclui pickle weaponizado nem afirma existir correção do fornecedor. É necessário alcançar o endpoint; o vínculo local padrão, por si só, não o torna acessível remotamente. O exemplo de código temporário desativa esse caminho de decodificação e não é um patch direto do LMCache; avalie o impacto operacional e isole a rede enquanto aguarda uma correção suportada.[2], [1], [3], [4], [5]
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
return pickle.loads(data)
@staticmethod
def Deserialize(data: bytes) -> DeviceIPCWrapper:
# Contenção temporária com falha fechada; não é um patch upstream.
raise PermissionError("LMCache peer deserialization disabled pending vendor fix")
Lista de Verificação de Segurança para Engenharia
- ✓Inventarie as implantações LMCache e identifique as que usam modo multiprocessado ou distribuído; registre versões do pacote e do contêiner.[1], [2]
- ✓Confira o endereço de vínculo ZMQ e as rotas de rede reais. Uma rede privada não basta se cargas ou locatários não confiáveis alcançarem o endpoint.[2], [5]
- ✓Até haver correção do fornecedor, desative o transporte multiprocessado quando possível ou limite-o a loopback se a operação em um único host for suficiente. Em uso multinó obrigatório, restrinja a porta a pares explicitamente confiáveis; isso reduz o alcance, mas não torna pickle seguro. Para qualquer implantação roteável futura, exija pares ZMQ autenticados (por exemplo, CURVE ou HMAC por mensagem) e substitua pickle por um formato de dados validado; uma lista de permissões no firewall não é autenticação.
- ✓Execute o serviço com usuário dedicado sem privilégios e remova capacidades desnecessárias do contêiner; o registro CVE diz que a imagem oficial executa como root.[2]
- ✓Acompanhe avisos e versões de segurança do LMCache. Atualize somente para uma versão que corrija explicitamente a
CVE-2026-105192; o material analisado não identifica uma versão corrigida.[1], [2] - ✓Procure conexões inesperadas à porta do transporte multiprocessado (5555 por padrão, segundo o registro CVE) e investigue a exposição antes de presumir comprometimento.[2], [5]
Fontes
- JFrog Security Research: CVE-2026-105192 mechanics and mitigations
- CVE Program record CVE-2026-105192 (JFrog CNA record)
- LMCache upstream: DeviceIPCWrapper deserialization source
- LMCache upstream: MessagePack extension decoding
- LMCache upstream: multiprocess ZeroMQ transport
- The Hacker News: critical LMCache pickle deserialization disclosure