Anúncio fechado

Há poucos dias, a Apple lançou o centésimo Atualização do iOS 7.0.6, sobre o lançamento do qual informamos. Muitos podem ter ficado surpresos com o fato de a atualização também ter sido lançada para iOS 6 (versão 6.1.6) e Apple TV (versão 6.0.2) mais antigos. Este é um patch de segurança, então a Apple não poderia se dar ao luxo de atualizar apenas uma parte de seus dispositivos. Além do mais, esse problema também afeta o OS X. De acordo com a porta-voz da Apple, Trudy Muller, uma atualização do OS X será lançada o mais rápido possível.

Por que há tanto entusiasmo em torno desta atualização? Uma falha no código do sistema permite que a verificação do servidor seja contornada na transmissão segura na camada relacional do modelo de referência ISO/OSI. Especificamente, a falha é uma implementação SSL incorreta na parte onde ocorre a verificação do certificado do servidor. Antes de entrar em mais explicações, prefiro descrever os conceitos básicos.

SSL (Secure Socket Layer) é um protocolo usado para comunicação segura. Ele alcança segurança por meio de criptografia e autenticação das partes comunicantes. A autenticação é a verificação da identidade apresentada. Na vida real, por exemplo, você diz seu nome (identidade) e mostra sua identidade para que a outra pessoa possa verificá-la (autenticar). A autenticação divide-se então em verificação, que é apenas um exemplo do bilhete de identidade nacional, ou identificação, quando a pessoa em questão pode determinar a sua identidade sem que você a apresente previamente.

Agora eu chegaria brevemente ao certificado do servidor. Na vida real, o seu certificado poderia ser, por exemplo, um cartão de identificação. Tudo é baseado em criptografia assimétrica, onde cada sujeito possui duas chaves – privada e pública. A beleza reside no fato de que a mensagem pode ser criptografada com a chave pública e descriptografada com a chave privada. Isto significa que apenas o proprietário da chave privada pode descriptografar a mensagem. Ao mesmo tempo, não há necessidade de se preocupar em transferir a chave secreta para ambas as partes comunicantes. O certificado é então a chave pública do sujeito complementada com suas informações e assinada pela autoridade certificadora. Na República Checa, uma das autoridades certificadoras é, por exemplo, Česká Pošta. Graças ao certificado, o iPhone pode verificar se realmente está se comunicando com o servidor determinado.

SSL usa criptografia assimétrica ao estabelecer uma conexão, a chamada Aperto de mão SSL. Nesta fase, o seu iPhone verifica se está se comunicando com o servidor determinado e, ao mesmo tempo, com a ajuda da criptografia assimétrica, é estabelecida uma chave simétrica, que será utilizada para todas as comunicações subsequentes. A criptografia simétrica é mais rápida. Conforme já escrito, o erro já ocorre durante a verificação do servidor. Vamos dar uma olhada no código que causa essa vulnerabilidade do sistema.

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa,
SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen)

{
   OSStatus err;
   …

   if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
       goto fail;
   if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
       goto fail;
       goto fail;
   if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
       goto fail;
   …

fail:
   SSLFreeBuffer(&signedHashes);
   SSLFreeBuffer(&hashCtx);
   return err;
}

Na segunda condição if você pode ver dois comandos abaixo vou falhar;. E esse é o obstáculo. Este código então faz com que o segundo comando seja executado no estágio em que o certificado deve ser verificado vou falhar;. Isso faz com que a terceira condição seja ignorada if e não haverá nenhuma verificação do servidor.

As implicações são que qualquer pessoa com conhecimento desta vulnerabilidade pode oferecer ao seu iPhone um certificado falso. Você ou seu iPhone, você pensará que está se comunicando criptografado, enquanto há um invasor entre você e o servidor. Tal ataque é chamado ataque man-in-the-middle, que se traduz aproximadamente em tcheco como ataque man-in-the-middle ou homem entre. Um ataque usando essa falha específica no OS X e no iOS só pode ser executado se o invasor e a vítima estiverem na mesma rede. Portanto, é melhor evitar redes Wi-Fi públicas caso você não tenha atualizado seu iOS. Os usuários de Mac ainda devem ter cuidado com as redes às quais se conectam e quais sites visitam nessas redes.

É inacreditável como um erro tão fatal poderia ter chegado às versões finais do OS X e iOS. Poderia ter sido um teste inconsistente de código mal escrito. Isso significaria que tanto o programador quanto os testadores cometeriam erros. Isso pode parecer improvável para a Apple e, portanto, surgem especulações de que esse bug é na verdade um backdoor, o chamado. porta dos fundos. Não é à toa que dizem que os melhores backdoors parecem erros sutis. No entanto, estas são apenas teorias não confirmadas, por isso assumiremos que alguém simplesmente cometeu um erro.

Se você não tem certeza se seu sistema ou navegador está imune a esse bug, visite a página gotofail. com. Como você pode ver nas imagens abaixo, o Safari 7.0.1 no OS X Mavericks 10.9.1 contém um bug, enquanto no Safari no iOS 7.0.6 está tudo bem.

Recursos: iMore, Reuters
.