Olá, Juan. Meu nome é Juan também kkkj, mas pode me chamar de J. Muito pertinente sua observação técnica sobre o funcionamento de túneis. Você tocou em um ponto crítico de segurança: a confiança implícita no localhost.
Sobre a questão técnica das requisições e a Confiança no Localhost
No Crom-me, o túnel funciona criando uma ponte via WebSocket entre o servidor (VPS) e o cliente local (crom-cli). O risco que você apontou é real: como o crom-cli faz uma requisição HTTP interna para a aplicação do usuário (ex: um Flask na porta 5000), a aplicação enxerga o tráfego vindo de 127.0.0.1. Se o desenvolvedor deixar uma rota como /admin/shutdown protegida apenas por IP, qualquer pessoa com a URL do túnel poderia acessá-la.
Como podemos evoluir o Crom-me tecnicamente para resolver isso:
- Injeção de Headers no Protocolo Customizado: Atualmente, o meu
internal/tunnel/protocol.gotransporta o corpo e os headers da requisição original. O próximo passo é garantir que o servidor capture or.RemoteAddr(o IP real do atacante/visitante) e o encapsule na estrutura de dados enviada ao CLI. - Sanitização no crom-cli: O
crom-clideve ser instruído a injetar obrigatoriamente os headersX-Forwarded-ForeX-Real-IPantes de disparar a requisição contra o serviço local. Isso "avisa" a aplicação de que aquela conexão é, na verdade, um proxy. - Implementação de Trusted Proxies: No lado da aplicação, vou configurar um middleware (como o
ProxyFixno Python ou oRealIPem Go) para desconsiderar o IP local e ler o IP real, mas apenas se a requisição vier de um proxy conhecido (neste caso, o binário do Crom). - Mecânicas de Zero Trust: No longo prazo, o Crom pode implementar um "Access Control" no próprio túnel, onde o usuário define no
crom-cliquais IPs externos têm permissão para cruzar a ponte, bloqueando o acesso indesejado antes mesmo de ele chegar à rede local.
Muito obrigado pelo seu comentário, vou analise melhor posteriormente para melhor essa aplicação.
Convite
Li seu artigo sobre a exaustão com a falta de acessibilidade em ferramentas de segurança. Como desenvolvedor, seu relato foi um tapa na cara necessário. Muitas vezes, na pressa de arquitetar a rede, backend, frontend, ux... deixamos passar o básico de acessibilidade, o que exclui talentos como o seu. Sei que continuarei errando quanto a isso, por isso recomendo se integrar a pessoas que não possuem o mesmo problema que você, e tentar com elas criar um movimento, acredito ser algo fundamental, não só para inclusão, mas para não haver desperdicios de talentos como o seu, e criar as pontes para outros que não conhecem se interessar por esse caminho.
Estou construindo o ecossistema CROM, um projeto focado em infraestrutura independente e soberania técnica. Como mencionei, ainda não foquei nas partes de acessibilidade (estou na fase de criatividade e "escovação de bits" da rede e segurança), mas adoraria que esse fosse um pilar nativo do projeto, e não algo corrigido depois.
Gostaria de te fazer um convite:
Se você tiver dificuldade em navegar ou entender o site atual da https://crom.run devido às barreiras que você mesmo apontou, deixo aqui dois artigos meus no TabNews que explicam a essência do que estou montando:
Além disso, todos os artigos técnicos dos meus projetos estão no meu perfil aqui no TabNews.
Adoraria conversar com você por e-mail: [email protected]. Sua visão em Cyber Security e sua experiência com acessibilidade seriam inestimáveis para o CROM. Se tiver interesse em conhecer e, quem sabe, participar desse desenvolvimento desde a base, as portas estão abertas.
Se quiser uma call, tem o discord: https://discord.gg/4b5wqdxreZ
Um abraço,
MrJ - de Juan para Juan - Teu chará kkj