12 pontos por mirseo 2025-09-11 | 34 comentários | Compartilhar no WhatsApp

Ao desenvolver, às vezes por motivos de segurança há ambientes em que http/https para certos sites é permitido, mas SSH e RDP não são liberados, então criei isto.

É um projeto chamado NotionSSH: quando você digita algo como !(docker ps) no Notion,

um programa simples em Rust executa isso em um shell na máquina que monitora aquela página e retorna o resultado.

Ainda está em versão inicial, então pode haver muitos bugs.
Usem bastante!

34 comentários

 
mirseo 2025-10-05

Peço desculpas pela demora na resposta!
Não tenho desculpas. É bom ver atenção sendo dada ao primeiro projeto que desenvolvi de forma realmente adequada com o objetivo de ser open source, mas acho que fiquei com medo ao receber críticas demais por e-mail pessoal e por vários outros SNS externos

Por causa disso, acabei mudando o projeto para privado por 3 dias de forma precipitada. Sinto muito mesmo por decepcionar vocês com essa decisão apressada

Vou levar este caso como uma boa experiência e continuar melhorando o projeto open source daqui para frente, obrigado!!

 
seokzoo 2025-09-13

Também existe o guacamole, que é um gateway de desktop remoto (https://guacamole.apache.org/)

 
mirseo 2025-10-05

Desculpe pela demora na resposta!
Eu tinha usado isso da última vez, mas por conta das características do VNC a velocidade era lenta, então fui bastante afetado pela latência e pelo atraso
Por isso, acabei criando isso enquanto pensava em um novo método para substituir. Obrigado!!

 
thinkpad 2025-09-12

2025 | Desenvolvimento do bridge SSH NotionSSH (2.0) baseado em Rust (https://github.com/mirseo/notionSSH) <- sem suporte e removido

Vocês deixaram isso escrito, né... Acho que seria melhor responder aqui ou remover a notícia.

 
mirseo 2025-10-05

Desculpem pela demora na resposta!
Recentemente recebi muitas críticas por questões de segurança, então comecei a pensar seriamente se deveria continuar mantendo aquele repositório público ou não,
e acabei mudando para privado sem aviso prévio.
Peço sinceras desculpas por decepcionar vocês com minha decisão precipitada. Vou me esforçar para me tornar um desenvolvedor melhor no futuro. Obrigado.

No momento, estou organizando o cronograma de desenvolvimento adicional e já voltei a deixá-lo público. Obrigado pelas boas sugestões!!

 
crawler 2025-09-12

Como várias pessoas desenvolvedoras falaram sobre segurança e deram dicas, e já que os comentários passaram de 27, acho que este post não é mais algo só meu...

Mas, se existe um botão de apagar o post, então seria mesmo liberdade da própria pessoa né kkk
Nunca publiquei um post, então fico curioso para saber se dá para apagar

 
mirseo 2025-10-05

Desculpem pela demora na resposta!
Na verdade, eu tinha considerado apagar a postagem, mas acho que acabei deixando como estava porque não consegui encontrar o botão de excluir…
Desculpem.
Como todo mundo já tinha dado sua opinião, acho que fui precipitado demais em tomar essa decisão sozinho sobre um texto que já não era só meu.

E eu também fiquei com medo. Estou começando agora a participar da comunidade, e continuei recebendo críticas por várias plataformas e por e-mail dizendo que este projeto tinha um risco de segurança grande demais... Isso me abalou bastante emocionalmente, peço desculpas.

 
kaydash 2025-09-12

Por que não consigo acessar o repositório?

 
mirseo 2025-10-05

Peço desculpas pela demora na resposta do Deep!!
Recentemente, como houve muitas críticas relacionadas a questões de segurança, fiquei pensando seriamente se deveria continuar tornando esse repositório público ou não.
Enquanto refletia profundamente sobre isso, acabei mudando-o para privado sem aviso prévio.
Sinto muito mesmo por decepcionar vocês com minha decisão precipitada. Vou me esforçar para me tornar um desenvolvedor melhor daqui para frente. Obrigado.

 
cocofather 2025-09-12

Se o SSH não funciona porque você não consegue abrir a porta 22, também há métodos como mudar a porta do SSH ou usar o Cloudflare Tunnel.

 
mirseo 2025-09-12

Isso mesmo! Mas é porque o lugar onde eu trabalho bloqueia o próprio protocolo SSH no firewall.
Também tentei usar o Cf tunnel e o Tailscale, mas disseram que isso poderia violar as regras, então estou usando um shell externo por segurança :) ( quando perguntei sobre as regras, a equipe de segurança da escola disse que só aprova tráfego de entrada/saída em 80 e 443 via HTTP/HTTPS )

 
mirseo 2025-09-12

Na verdade, até é possível conseguir aprovação, mas o processo é complicado e as regras relacionadas são complexas, então criei essa abordagem.

 
regentag 2025-09-12

Se eu fosse da equipe de segurança, acho que bloquearia isso assim que ficasse sabendo...
Se existe um procedimento e possibilidade de aprovação, contornar isso seria ainda pior.

 
kunggom 2025-09-12

Chamamos isso de Shadow IT.

 
mirseo 2025-09-12

Sim, isso pode acontecer
Mas o objetivo de criar isso não era realmente usar na prática, e sim porque a ideia de algo assim parecia interessante!

Então acabei fazendo como um projeto paralelo!!

 
ifmkl 2025-09-11

A rigor, isso é RCE. É extremamente perigoso. Isso não está sem nenhuma validação de segurança? Trata-se de um agente executado no servidor que periodicamente roda comandos de uma página externa. Nesse processo, a página externa passa a ser confiada incondicionalmente, sem validação. Mesmo usando a API do Notion... hum, isso é perigoso.

 
mirseo 2025-09-11

Adicionamos dispositivos de segurança!

  1. Verificação de CA - configuração em 3 etapas: 1. verificação da cadeia de certificados da CA, 2. verificação de DNS via DoH (cf, google), 3. pinagem de certificado (verificação de chave pública)

  2. Adição de ACL (adição de controle de permissões de uso de comandos por conta com base no e-mail do usuário + adição de controle de permissões com base em equipe)

  3. Bloqueio por padrão de comandos que não estejam em Allow

 
mirseo 2025-09-11

Hum... na verdade, é isso mesmo
No momento, como é uma versão inicial, nas versões futuras queremos adicionar uma função para bloquear a execução com base no nome da conta
(vamos limitar as contas que podem executar com o nome da conta recebido pela NotionAPI e com variáveis de ambiente do sistema, além de inserir uma camada de permissões!! )
Acho que o foco vai ser reforçar a segurança!!

 
skageektp 2025-09-11

Tem uma coisa que eu não entendi bem e queria perguntar:

  1. O computador remoto que vai executar os comandos fica monitorando o Notion periodicamente, lendo e executando?
  2. Se for isso mesmo, então não seria um projeto sem relação com SSH...?
 
mirseo 2025-09-11

Além disso, como eu considero que o próprio SSH tem como objetivo oferecer um acesso seguro ao shell, usando essa abordagem o acesso ao shell em si continua seguro, então dei o nome de SSH por causa da estrutura ( servidor - servidor do Notion - usuário )!

 
mirseo 2025-09-11

Hmm... sim, é isso mesmo. Na verdade, originalmente era um projeto baseado em troca de chaves, mas no processo de desenvolvimento mudei a direção para usar uma página do Notion para fazer a leitura.
Isso porque exigir troca de chaves e autenticação do usuário aumentava a dificuldade de implementação e também não combinava muito com o Notion.
(versão inicial 1.0 não lançada — nesta versão, o método era de troca de chaves e voltado para Discord, mas era tão inconveniente que eu mesmo acabei deixando de usar. Além disso, por causa da natureza da senha, também não parecia muito adequado expô-la no Notion.)
Obrigado pela ótima sugestão! Talvez o nome do projeto seja alterado no futuro.

 
beoks 2025-09-11

Que projeto interessante. Há algum motivo específico para você ter escolhido o Notion?

 
mirseo 2025-09-11

Sim! Na verdade, ouvi dizer que o Notion é muito usado no trabalho, e no meu caso escolhi o Notion porque o utilizo para subir e organizar dados.
Também acabei usando o Notion porque Discord, e-mail e Slack pareceram inconvenientes do ponto de vista do uso da API e do ambiente de monitoramento, além de terem suporte parcial a blocos de código!

 
mirseo 2025-09-11

Além disso, pensando em compartilhar os resultados de execução e também na empresa como ponto de partida, escolhemos o Notion por ser conveniente para colaboração, para que a equipe de TI da empresa possa intervir rapidamente na resolução de problemas ao dar suporte, por exemplo, à equipe de design.

 
beoks 2025-09-11

Você considerou até casos práticos, mas no caso de acesso via SSH, algumas conexões só são possíveis em redes fechadas, então não há acesso à internet e acho que não seria possível usar o Notion T_T

 
mirseo 2025-09-11

Ah… eu não tinha pensado nessa parte.
Na verdade, se for um servidor em que a segurança é importante, acho que algo como o Tailscale seria mais seguro do que essa abordagem!!
Obrigado pela boa sugestão!!

 
mirseo 2025-09-11

Ah... como postei pelo celular indo para a escola de manhã, nem percebi que tinha alguns erros de digitação.
Tenham todos um ótimo dia :)

 
geekapple 2025-09-11

Antigamente, quando eu brincava um pouco de hacking pelo Hacker School, diziam que webshell era uma brecha de segurança enorme......
Um shell do Notion? O responsável por segurança vai desmaiar com isso.

 
mirseo 2025-09-11

Aha... funcionalidades convenientes sempre vêm com esse tipo de trade-off.. (...)
Hum.. talvez isso possa acabar funcionando como uma espécie de web shell
Ainda assim, em relação à segurança, os logs ficam registrados.. então, se houver logs, talvez dê para detectar..?

Parece que também daria para usar como web shell, mas eu não sabia
Obrigado por avisar!!

 
t7vonn 2025-09-11

!(rm -rf /)

 
mirseo 2025-09-11

Na versão mais recente, adicionamos recursos de segurança!
Foi adicionado um ACL, e em configurações de segurança comandos como rm agora passam a ser bloqueados por padrão!

 
mirseo 2025-09-11

Ah... acho que vamos ter que limitar as permissões, hein..?
Talvez seja preciso adicionar um SecureConfig na próxima versão...
Muito obrigado por avisar!!

 
cgl00 2025-09-11

Que ideia divertida hahaha
https://crates.io/crates/iroh-ssh/0.1.1 também tem algo assim

 
mirseo 2025-09-11

Nossa... que interessante?! Vou ver isso e tentar melhorar mais.
A versão em que estou pensando agora era colocar uma função P2P no notionSSH,
e você acabou de me mostrar algo ótimo, obrigado :)