Pesquisadores extraem chave mestra de criptografia de PLCs da Siemens
Por Lucian Constantin
CSO Escritor Sênior, CSO |
Pesquisadores de segurança descobriram uma maneira de extrair uma chave de criptografia global que foi codificada nas CPUs de várias linhas de produtos de controladores lógicos programáveis (PLC) da Siemens, permitindo que eles comprometam suas comunicações e autenticação seguras. A Siemens aconselha todos os clientes a atualizar o firmware dos dispositivos afetados, bem como o software TIA Portal que os engenheiros usam para se comunicar com eles e implantar seus programas.
De acordo com pesquisadores de segurança da Claroty, a Siemens introduziu a criptografia assimétrica em suas CPUs SIMATIC S7-1200/1500 PLC há quase uma década para proteger sua configuração, programas e comunicações. No entanto, a empresa optou por fazer isso usando uma chave privada global codificada para todos os dispositivos dessas famílias de produtos porque, naquela época, a distribuição dinâmica de chaves e o gerenciamento não eram uma prática comum e um fardo potencial para os clientes.
“Desde então, no entanto, os avanços em tecnologia, pesquisa de segurança e um cenário de ameaças em rápida mudança tornaram essas chaves criptográficas codificadas um risco inaceitável”, disseram os pesquisadores em seu relatório. “Um ator mal-intencionado capaz de extrair uma chave global codificada pode comprometer a segurança de toda a linha de produtos do dispositivo de maneira irreparável”.
De acordo com a Claroty, os PLCs Siemens S7-1200 e S7-1500 usam várias chaves. Uma chave "por família" é compartilhada por todos os dispositivos de uma linha de produtos e uma chave "por modelo/firmware" é usada para criptografar configurações e manter a integridade do código, e uma chave de conexão que é usada no processo de autenticação, bem como para criptografar as comunicações com os clientes. A chave de conexão é derivada das chaves de configuração e é usada para criptografia baseada em curva elíptica.
Isso significa que os invasores obtêm a chave de configuração, eles podem potencialmente descriptografar a senha do usuário da configuração de um PLC, bem como lançar ataques man-in-the-middle, mesmo que não tenham acesso para ler a configuração criptografada.
O problema é que essa chave de configuração familiar não é armazenada no firmware do dispositivo – o sistema operacional em execução no dispositivo – mas na própria CPU, portanto, sua leitura requer acesso para interagir diretamente com a CPU por meio de opcodes. Isso só precisa ser feito uma vez em um dispositivo porque todos compartilham a chave.
No ano passado, os pesquisadores da Claroty encontraram uma vulnerabilidade de execução remota de código (CVE-2020-15782) afetando os PLCs S7 que permitiam a execução de código nativo nos dispositivos. Normalmente, os programas ou a lógica que os engenheiros escrevem e implantam nos PLCs por meio do software de engenharia especializado são executados em uma caixa de proteção no sistema operacional do PLC. O CVE-2020-15782 permitiu que os pesquisadores ignorassem essa camada de segurança e lessem e gravassem diretamente em qualquer endereço de memória normalmente protegido no PLC.
“Usando a permissão de leitura DA [acesso direto à memória] que obtivemos, fomos capazes de extrair todo o firmware do PLC criptografado (SIMATIC S7-1500) e mapear suas funções”, disseram os pesquisadores. "Durante o processo de mapeamento, encontramos uma função que lia a chave privada no PLC. Uma vez que tínhamos o endereço da função, reescrevemos a funcionalidade de opcodes específicos do MC7+ com nosso código shell, forçando-os a chamar a função nativa que lê a chave privada . Em seguida, copiamos a chave para um endereço de memória conhecido e a lemos a partir daí. A execução da função substituída nos deu a chave privada completa do PLC."
A interação com os PLCs da Siemens requer uma senha, mas as permissões que o cliente concede ao dispositivo são definidas por quatro níveis de proteção que podem ser configurados. Se o nível de proteção for inferior a três, um invasor pode extrair a configuração do CP sem nenhuma permissão especial. Essa configuração contém o hash da senha, mas é criptografada. No entanto, se tiverem a chave privada global, os invasores podem descriptografar o hash da senha e usá-lo para autenticar no PLC com privilégios mais altos.