iTerm2 anuncia atualização crítica de segurança
(iterm2.com)- O iTerm2 3.5.11 é uma versão compilada em 2 de janeiro de 2025, e a atualização imediata é recomendada devido a uma correção crítica de segurança relacionada à integração com SSH
- O escopo de impacto inclui usuários das versões 3.5.6 a 3.5.10 que usaram o recurso de integração com SSH e de todas as versões beta posteriores à 3.5.6
- Quando o bug ocorre, a entrada e a saída são registradas em /tmp/framer.txt no host remoto, e outros usuários do mesmo host remoto podem ler esse arquivo
- As condições são o uso de
it2sshou, em um perfil, Command estar definido como"SSH"e"SSH Integration"estar selecionado, além de haver Python 3.7 ou superior no caminho de busca padrão do host remoto - Os usuários devem atualizar para a 3.5.11 e, em seguida, excluir
/tmp/framer.txtnos hosts remotos afetados
Escopo de impacto e condições de ocorrência
- O iTerm2 3.5.11 é uma versão que inclui uma correção crítica de segurança, e a atualização imediata é recomendada
- As versões potencialmente afetadas são as seguintes, quando o recurso de integração com SSH foi usado
- 3.5.6
- 3.5.7
- 3.5.8
- 3.5.9
- 3.5.10
- Todas as versões beta posteriores à 3.5.6
- O bug faz com que o recurso de integração com SSH registre a entrada e a saída em
/tmp/framer.txtno host remoto- Esse arquivo pode ser lido por outros usuários do host remoto
- O problema ocorre quando todas as condições a seguir são verdadeiras
- O comando
it2sshé usado - Ou, em
Settings > Profiles > General, o menu pop-up Command está definido como"SSH", e"SSH Integration"está selecionado na caixa de diálogo de configurações de SSH- As configurações
"Login Shell","Command"e"Custom Command"não estão incluídas nessa condição
- As configurações
- O host remoto tem Python 3.7 ou superior instalado no caminho de busca padrão
- O comando
Atualização e verificação
- Os usuários devem atualizar imediatamente para o iTerm2 3.5.11
- Nos hosts remotos afetados, o arquivo
/tmp/framer.txtdeve ser excluído - O código que grava arquivos de log na integração com SSH foi removido e não será lançado novamente em uma versão pública
- O valor SHA-256 do arquivo zip é o seguinte
655e32b4a9466104f1b0d8847e852515bc332bdf434801762e01b9625caa43e2
- Para verificar o arquivo zip, é possível usar
https://keybase.io/verify
2 comentários
Fiquei surpreso ao conferir, e vi que a minha versão é 3.4.3. Como ultimamente não tenho usado muito o terminal, nem dei muita atenção a isso, então também não tenho atualizado direito.
Opiniões no Hacker News
Parece um caso de depuração com print() que foi parar em produção
https://github.com/gnachman/iTerm2/commit/63ec2bb0b95078a97a...
https://github.com/gnachman/iTerm2/blame/5db0f74bf647f6d53ea...
O commit que desligou o modo verbose foi este, imediatamente antes de remover todo o log do framer: https://github.com/gnachman/iTerm2/commit/014ba7ec40fc790f65...
O commit que ativou o modo VERBOSE foi este: https://github.com/gnachman/iTerm2/commit/5db0f74bf647f6d53e...
Provavelmente, durante a implementação ou depuração, alguém mudou para
VERBOSE=1e esqueceu de voltar paraVERBOSE=0antes do commitconsole.infoDepuração com print em si é aceitável e há momentos para usá-la, mas é bom ter salvaguardas para não deixá-la para trás por engano. É um erro realmente fácil de cometer
É bem sério que, por causa de um bug no recurso
SSH integration, entradas e saídas tenham sido registradas no arquivo/tmp/framer.txtdo host remoto, e que esse arquivo pudesse ser lido por outros usuários do host remotoEsse tipo de arquivo pode ter ficado até em máquinas às quais você se conectou por SSH no passado, mas às quais agora não tem mais permissão de acesso
it2ssh, ou, em Settings > Profiles > General, o menu pop-up Command estava definido como"SSH"e"SSH Integration"estava marcado."Login Shell","Command"e"Custom Command"não se aplicamAinda assim, se você é do tipo que usa
sshcomo comando padrão do terminal em vez debashouzsh, há uma boa chance de também usar muitos recursos incomuns em outros apps, então deveria se preocupar não só com o iTerm, mas com outras superfícies de ataque tambémUso o iTerm2 há muito tempo, tanto para trabalho quanto para uso pessoal, e pretendo continuar usando e doar novamente, como já fiz antes
Sempre solto um pequeno suspiro quando vejo uma frase como “lamento profundamente este erro e tomarei medidas para garantir que isso nunca aconteça novamente”
O ponto central é que medidas são essas, e nem sei bem o que deveria ser feito para impedir que algo assim aconteça de novo. Talvez seja possível criar uma ferramenta automatizada que execute todos os recursos, capture chamadas de sistema e verifique se eles não abrem nem escrevem arquivos, mas, em um app com GUI, isso parece tão difícil que imagino que nem tentariam. Medidas menores do que isso parecem insuficientes para garantir que não volte a acontecer
Na prática, parece difícil para um programador fazer muito melhor do que isso; nesse caso, é injusto colocar toda a responsabilidade sobre essa única pessoa
Mas não acho que a brevidade signifique que ele não entenda a gravidade do erro. Ainda assim, espero que depois saia um post de blog aprofundado tratando desse tipo de detalhe de acompanhamento
Seria pior não pedir desculpas, e também seria pior não dizer que tomará medidas para evitar recorrência. Seria até estranho se todas as medidas já estivessem prontas agora. Primeiro é preciso A) corrigir o bug, B) distribuir a versão corrigida, C) comunicar o bug e a distribuição da correção, e depois D) fazer a análise post-mortem; misturar tudo isso pareceria uma abordagem com o processo desorganizado
Também seria estranho afirmar que é possível impedir todos os bugs ou toda escrita acidental em arquivos. É impossível provar que nunca se escreve em arquivos
Um bom ponto de partida é remover o log de SSH, como de fato foi feito, e investigar formas automatizadas de verificar acesso a arquivos. No desenvolvimento para macOS há muitas ferramentas muito à frente das ferramentas comuns do ecossistema, então talvez existam métodos como uma documentação técnica dos anos 1990 para especificar um
NSArrayde caminhos permitidos de acesso, ou a integração dtrace embutida no Instruments. Rodar isso no CI e garantir cobertura de testes é algo próximo do melhor que dá para fazerA questão parece ser se você lê “tomarei medidas para garantir que isso nunca aconteça novamente” como “tomarei medidas até poder garantir, absoluta e 100% eternamente, que isso nunca voltará a acontecer”. Para pessoas jovens e influenciáveis, eu diria: este post de blog é excelente, e há muito pouco que poderia ser feito melhor aqui
A medida possível é usar isso como lição para ficar mais cuidadoso ao entrar nesse caminho
console.log, e acho que eu adotaria exatamente esse caminhoImpedir que um estado inválido exista é um princípio bastante útil
Em geral deve ser questão de preferência pessoal, mas em 2025 existe algum motivo realmente convincente para usar iTerm2 em vez do Terminal padrão do macOS?
Recebi muitas recomendações, mas fiquei cauteloso por causa de preocupações de segurança e privacidade, como esse bug de SSH
Outro ponto é que, se eu fechar uma aba ou janela por engano e apertar ⌘z em poucos segundos, a janela reaparece como se não tivesse sido fechada
E o contraste mínimo de cores também é bom. Se o tema de cores do terminal e o tema de cores do programa em execução se combinarem mal e ficarem ilegíveis, o iTerm consegue detectar isso e sobrescrever automaticamente com cores de maior contraste
Mas esses são apenas os meus recursos essenciais. O iTerm é um monstro inchado, como o Word, com milhares de recursos. Nem todo mundo precisa de todos eles, e também não há consenso sobre quais recursos são necessários
Também procurei por
terminalem várias notas de versão do macOS, mas não encontrei nada. Alguém sabe onde essas informações são divulgadas? Elas não são divulgadas?[1] https://developer.apple.com/documentation/macos-release-note...
[2] https://support.apple.com/en-us/120283
[3] https://support.apple.com/en-in/109035
[4] https://support.apple.com/en-us/106337
Eu queria que ficasse azul ao fazer SSH para a máquina da empresa e roxo ao fazer SSH para a máquina de casa. Tentei fazer isso no terminal padrão, mas havia problemas confusos dependendo de como a sessão terminava, e as pessoas recomendaram o iTerm2 dizendo que ele resolvia isso. Pelo menos no meu caso, resolveu mesmo
Também ouvi muita gente dizer que https://ghostty.org/ é bom, mas ainda não conferi
Além disso, li a pergunta errado como “quais são as alternativas”
Para mim, só o fato de poder usar um modo de tela cheia diferente da tela cheia nativa do macOS já vale a pena. Mas talvez existam só umas sete pessoas no mundo que considerem isso importante
Tenho muita empatia pelo desenvolvedor que mantém o iTerm com relativamente pouco dinheiro. Ele já recebeu críticas demais por causa da integração com IA
Ao mesmo tempo, agora estou bem preocupado se posso continuar usando o iTerm
Ao acessar ambientes de HPC, às vezes você só tem permissão de acesso por um curto período, precisa limpar os dados manualmente depois do uso e espera que não haja vazamento de dados. Se eu tivesse usado a integração SSH do iTerm no último ano enquanto trabalhava com dados de pesquisa contendo informações pessoais, eu teria ficado em uma situação complicada. Talvez tivesse de mandar um e-mail constrangedor para o administrador pedindo para verificar se havia logs e se eram meus, e depois anunciar publicamente que houve vazamento de dados
Uso alguns recursos avançados, mas agora me pergunto se ainda posso usar algo além das funções básicas. Nesse caso, talvez seja melhor usar outro terminal. Ainda não encontrei um terminal multiplataforma que pareça tão nativo no MacOS quanto o iTerm, incluindo o Ghostty
É parecido com abandonar um carro porque um pneu furou uma vez. Considerando as vantagens e os recursos que ele oferece, o iTerm talvez ainda seja a melhor escolha
Se um indivíduo precisa verificar pessoalmente a segurança de todo o sistema e de todo software que usa, então essa organização não tem segurança
Um administrador de sistemas competente e com conhecimento de segurança consegue configurar facilmente para que os arquivos criados via SSH não tenham, por padrão, permissões de leitura para todos. Também pode colocar outros mecanismos de bloqueio que isolem completamente os arquivos dos usuários, e até desativar totalmente pastas globais graváveis como
/tmp/Se alguém reclamar que você usou software com falha de segurança, você deve perguntar por que o sistema deles é tão vulnerável em termos de segurança
Alguns anos atrás, relatei um problema em que o iTerm2 vazava histórico de buscas sensíveis para o arquivo de configuração, e o problema foi corrigido rapidamente
Mas ainda hoje é possível encontrar pessoas vazando sem querer o histórico de buscas em repositórios públicos de dotfiles
[1]: https://gitlab.com/gnachman/iterm2/-/issues/8491
[2]: https://github.com/search?q=NoSyncSearchHistory+path%3A*.pli...
A sugestão de “simplesmente não use o iTerm2” não faz muito sentido para mim
Esse tipo de problema pode acontecer em qualquer projeto, e trocar de ferramenta não oferece uma proteção significativa. Pelo contrário, muitas vezes as práticas de segurança ficam mais fortes depois de incidentes assim. É parecido com aquela piada antiga sobre demitir o engenheiro que cometeu o erro, em que o gerente responde: “Por que eu o demitiria? Ele acabou de aprender uma lição inesquecível”
Olhando para o histórico do iTerm2, não parece que ele tenha tido problemas de segurança críticos com frequência, nem que vá repetir o mesmo erro. Se isso se repetir, aí dá para reavaliar
O app Terminal do macOS é mais simples e recebe atualizações com menos frequência, então pode parecer de menor risco. Mas ele é de código fechado, então não dá para auditá-lo, e isso também tem seus próprios riscos. No fim, toda ferramenta tem trade-offs, e a escolha precisa equilibrar os recursos necessários com os riscos potenciais
Muita gente tem essas duas crenças como razoáveis. É uma visão bem mais sutil do que dizer “todo projeto pode ter bugs”. Esse tipo de visão em preto e branco não ajuda muito na avaliação de risco
O iTerm2 ficou cada vez mais complexo e inchado demais, e também parece ter problemas de segurança demais
Faz tempo que não procuro um novo emulador de terminal no macOS, mas parece que chegou a hora
O GNU Screen também parece estar parado, então talvez seja hora de fazer a migração para o tmux, algo que eu vinha adiando
Pessoalmente, não sinto que o iTerm2 se encaixe em nenhuma das duas
Ainda não vi outro terminal oferecer suporte a tmux no mesmo nível
O que falta no Terminal que faria outro app melhorar o uso diário?
Vale a pena dar uma olhada no Zellij, um multiplexador de terminal feito em Rust. Gosto especialmente de como ele facilita descobrir os atalhos de teclado. É quase o que eu sempre sonhei para uma TUI
Isso se aplica só à integração com SSH, e não ao caso de simplesmente executar
"ssh"no iTerm?Não encontrei o arquivo
/tmp/framer.txtnos hosts em que me conectei usando ssh comumEsta última condição provavelmente é verdadeira na maioria das distribuições corporativas. Por exemplo, o RHEL 9 vem com Python 3.9 instalado por padrão