Saiba mais sobre o livro de Benny Czarny, «Cybersecurity Upside Down»

Saiba mais
Utilizamos inteligência artificial para as traduções dos sítios e, embora nos esforcemos por garantir a exatidão, estas podem nem sempre ser 100% precisas. Agradecemos a sua compreensão.

Protegendo os sistemas OT contra ataques remotos: Como MetaDefender OT Security™ protege o controlador Micrologix™ 1400 do CVE-2021-22659

Por OPSWAT
Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20
Participantes do programa de bolsas de estudo OPSWAT

A proteção dos sistemas de controlo industrial e dos ambientes OT contra ataques remotos é mais crítica do que nunca, especialmente com vulnerabilidades como a CVE-2017-14469 e agora a CVE-2021-22659 que visam o controlador Micrologix 1400 da Rockwell Automation, amplamente utilizado. Os estudantes do Programa de Bolsas de Estudo OPSWAT testaram esta vulnerabilidade num ambiente controlado, realçando a necessidade de segurança.

Neste blogue, exploramos a forma como os alunos demonstraram como os atacantes podem explorar a vulnerabilidade para causar falhas nos sistemas e como a falta de validação de entrada adequada pode ser aproveitada para interromper as operações do PLC.

O que é um PLC? Explicação sobre o Micrologix 1400 da Rockwell Automation

Um PLC (Programmable Logic Controller - Controlador Lógico Programável) é um computador industrial concebido para automatizar processos através do controlo de máquinas e outras operações industriais. Funciona em ambientes difíceis e está programado para executar tarefas específicas com base na entrada de sensores. O controlador MicroLogix 1400 da Rockwell Automation é um PLC compacto e modular, normalmente utilizado em aplicações de pequena e média dimensão. Conhecido pela sua rentabilidade e flexibilidade, suporta vários protocolos de comunicação e oferece opções de E/S digitais e analógicas para interface com dispositivos.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

A programação é normalmente feita utilizando o software da Rockwell Automation através da lógica ladder, permitindo aos utilizadores criar sequências de controlo. O MicroLogix 1400 é versátil, adequado para tarefas como o controlo de máquinas e a automatização de processos. A sua modularidade permite aos utilizadores expandir e personalizar o sistema com base em requisitos de aplicação específicos.

Introdução ao CVE-2021-22659

Em janeiro de 2021, a Rockwell Automation recebeu um relatório de Parul Sindhwad e do Dr. Faruk Kazi, do COE-CNDS do Instituto Tecnológico Veermata Jijabai (VJTI), na Índia, relativo a uma vulnerabilidade no controlador MicroLogix™ 1400. Eles identificaram uma falha de segurança na versão 21.6 e anteriores que permite que um atacante remoto não autenticado envie um pacote Modbus especialmente criado, permitindo que o atacante recupere ou modifique valores aleatórios no registo. Se explorada com sucesso, esta falha pode levar a um estouro de buffer, resultando numa condição de negação de serviço. O LED FAULT piscará a VERMELHO e as comunicações poderão ser perdidas. A recuperação da condição de negação de serviço requer que a falha seja eliminada pelo utilizador.

A NVD avaliou esta vulnerabilidade de segurança como sendo de gravidade elevada.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Fases de ataque

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Um atacante remoto, não autenticado, com acesso à rede do vulnerável PLC MicroLogix 1400 pode enviar um pacote especialmente criado para modificar os valores no registo. Isto poderia potencialmente causar uma condição de negação de serviço para o dispositivo, resultando em corrupção do sistema e tempo de inatividade. Um incidente deste tipo pode perturbar significativamente as operações de fabrico e outras actividades comerciais da organização.

Protocolo Modbus

Desenvolvido pela Modicon em 1979, o protocolo Modbus é uma estrutura de mensagens concebida para estabelecer a comunicação cliente-servidor entre dispositivos inteligentes. Originalmente concebido para ser utilizado com os PLCs da Modicon, tornou-se desde então um protocolo de comunicação padrão para a comunicação entre dispositivos electrónicos industriais.

Existem protocolos Modbus para Ethernet (Modbus TCP) e linhas de série (Modbus RTU e Modbus ASCII). O Modbus RTU (Remote Terminal Unit) transmite diretamente dados em formato binário através de comunicação série, e o Modbus TCP (Transmission Control Protocol) incorpora os dados do protocolo Modbus em pacotes TCP para transmissão através de redes TCP/IP.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Estrutura da mensagem Modbus

O Modbus é um protocolo de pedido-resposta em que o cliente transmite um pedido a um dispositivo Modbus e o dispositivo fornece subsequentemente uma resposta.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Uma mensagem Modbus enviada de um primário para um secundário contém o endereço do secundário, o "comando" (por exemplo, "ler registo" ou "escrever registo"), os dados e uma soma de verificação (LRC ou CRC).

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Os endereços de dados são utilizados nas mensagens de consulta Modbus quando se lêem ou modificam dados. O Modbus define quatro tipos de dados: Bobina, Estado de entrada, Registo de entrada e Registo de retenção. Dois deles armazenam valores on-off (1-bit) chamados Bobinas e Entradas Discretas, e dois armazenam valores numéricos como palavras de 16-bit chamadas Registos. Cada um deles é só de leitura ou de leitura/escrita.

Tipo de dados

Acesso

Descrição

Bobina

Leitura-escrita

Saídas de bit único.

Entrada discreta

Só de leitura

Entradas de bit único.

Registo de entrada

Só de leitura

Registos de entrada de 16 bits.

Registo de retenção

Leitura-escrita

Registos de saída de 16 bits.

Existem três categorias de códigos de função Modbus:

  • Códigos de função pública - De 1 a 127, exceto para os códigos definidos pelo utilizador.
  • Códigos de função definidos pelo utilizador - em duas gamas, de 65 a 72 e de 100 a 110.
  • Códigos de função reservados - Utilizados por algumas empresas para produtos antigos e não disponíveis para utilização pública.

Tipo de função

Nome da função

Código de função

Acesso aos dados

Acesso aos bits

Entradas físicas discretas

Ler entradas discretas

2

Bits internos ou bobinas físicas

Ler bobinas

Escrever uma única bobina

Escrever várias bobinas

1

5

15

Acesso de 16 bits

Registos de entrada física

Ler registos de entrada

4

Registos internos ou registos de saída física

Ler vários registos de retenção

Escrever um único registo de retenção

Escrever vários registos de retenção

Ler/escrever vários registos

Registo de escrita de máscaras

Fila de espera de leitura FIFO

3

6

16

23

22

24

Acesso ao registo de ficheiros

Ler registo de ficheiro

Escrever registo de ficheiro

20

21

Diagnóstico

Ler o estado da exceção

Diagnóstico

Obter contador de eventos Com

Obter registo de eventos Com

Comunicar ID do escravo

Ler a identificação do dispositivo

7

8

11

12

17

43

Outros

Interface de transporte encapsulada

43

Tipo de função: Acesso a dados
Subtipo: Acesso a bits
Categoria: Entradas discretas físicas
Nome da função: Ler entradas discretas
Código da função: 2

Tipo de função: Acesso a dados
Subtipo: Acesso a bits
Categoria: Bits internos ou bobinas físicas
Nome da função: Ler bobinas
Código da função: 1

Tipo de função: Acesso a dados
Subtipo: Acesso a bits
Categoria: Bits internos ou bobinas físicas
Nome da função: Gravar bobina única
Código da função: 5

Tipo de função: Acesso a dados
Subtipo: Acesso a bits
Categoria: Bits internos ou bobinas físicas
Nome da função: Gravar várias bobinas
Código da função: 15

Tipo de função: Acesso a dados
Subtipo: Acesso de 16 bits
Categoria: Registos de entrada físicos
Nome da função: Ler registos de entrada
Código da função: 4

Tipo de função: Acesso a dados
Subtipo: Acesso de 16 bits
Categoria: Registos internos ou registos de saída física
Nome da função: Leitura de vários registos de retenção
Código da função: 3

Tipo de função: Acesso a dados
Subtipo: Acesso de 16 bits
Categoria: Registos internos ou registos de saída física
Nome da função: Gravação num único registo de retenção
Código da função: 6

Tipo de função: Acesso a dados
Subtipo: Acesso de 16 bits
Categoria: Registos internos ou registos de saída física
Nome da função: Gravação em vários registos de retenção
Código da função: 16

Tipo de função: Acesso a dados
Subtipo: Acesso de 16 bits
Categoria: Registos internos ou registos de saída física
Nome da função: Leitura/gravação de vários registos
Código da função: 23

Tipo de função: Acesso a dados
Subtipo: Acesso de 16 bits
Categoria: Registos internos ou registos de saída física
Nome da função: Registo de escrita de máscara
Código da função: 22

Tipo de função: Acesso a dados
Subtipo: Acesso de 16 bits
Categoria: Registos internos ou registos de saída física
Nome da função: Ler fila FIFO
Código da função: 24

Tipo de função: Acesso a dados
Subtipo: Acesso a registos de ficheiros
Nome da função: Ler registo de ficheiro
Código da função: 20

Tipo de função: Acesso a dados
Subtipo: Acesso a registos de ficheiro
Nome da função: Gravar registo de ficheiro
Código da função: 21

Tipo de função: Diagnóstico
Nome da função: Ler estado de exceção
Código da função: 7

Tipo de função: Diagnósticos
Nome da função: Diagnóstico
Código da função: 8

Tipo de função: Diagnóstico
Nome da função: Obter contador de eventos COM
Código da função: 11

Tipo de função: Diagnósticos
Nome da função: Obter registo de eventos COM
Código da função: 12

Tipo de função: Diagnósticos
Nome da função: Reportar ID do escravo
Código da função: 17

Tipo de função: Diagnóstico
Nome da função: Ler identificação do dispositivo
Código da função: 43

Tipo de função: Outros
Nome da função: Transporte de interface encapsulada
Código da função: 43

Exploração

Análise de vulnerabilidade

Através da análise, os nossos bolseiros de pós-graduação OPSWAT descobriram que, durante a comunicação Modbus TCP, o protocolo não possui autenticação e encriptação para os pacotes transmitidos. Além disso, a validação de entrada no PLC MicroLogix 1400 não é implementada corretamente. Consequentemente, um atacante remoto pode analisar o pacote Modbus TCP através de packet sniffing e enviar qualquer pedido ao PLC sem autenticação através do protocolo Modbus TCP. Devido à falta de validação de entrada do dispositivo PLC MicroLogix 1400, um atacante remoto autenticado pode enviar um grande número de pacotes com valores aleatórios, causando potencialmente a falha do PLC.

Sobreposição de registos

Inicialmente, tentámos capturar os pacotes Modbus TCP utilizados para ler ou escrever registos no PLC. Para tal, examinámos os pacotes gerados por uma aplicação denominada Modbus Poll, que facilita a leitura e a escrita de registos no PLC MicroLogix 1400.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Utilizando o Wireshark para capturar todos os pacotes da interface de rede, foi possível identificar o pacote Modbus TCP para escrever um único registo:

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20
Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Com base na estrutura dos pacotes detectados, desenvolvemos um script Python simples para enviar pacotes TCP solicitando a escrita de um registo no PLC alvo. Neste cenário, o endereço IP do PLC é 192.168.93.89.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

O registo do PLC foi alterado depois de receber o nosso pacote malicioso não autenticado.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20
Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

No Micro Logix 1400, a maioria das instruções matemáticas utiliza três parâmetros: Fonte A, Fonte B e Destino

Os valores da Fonte A e da Fonte B podem vir de dois registos de 16 bits denominados N13:3 e N13:4. Além disso, os valores nestes registos de 16 bits, tais como N13:3 e N13:4, estão limitados ao intervalo de -32,768 a +32,767. Se os valores de N13:3 e N13:4 forem grandes, o resultado da instrução de correspondência pode exceder o intervalo máximo do tipo de dados, causando potencialmente uma falha no PLC. Consequentemente, para induzir uma falha no PLC, é necessário escrever grandes valores aleatórios em todos os registos, incluindo N13:3 e N13:4. Para o conseguir, modificámos o nosso script Python da seguinte forma:

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Simular o ataque

Para simular um ataque real, os nossos bolseiros de pós-graduação OPSWAT tentaram induzir uma avaria no PLC MicroLogix 1400 localizado nos laboratórios CIP OPSWAT , partindo do princípio de que tanto o atacante como o PLC estão na mesma rede e são capazes de comunicar entre si.

No estado operacional normal do PLC MicroLogix 1400 da OPSWAT Labs, com o PLC no modo REMOTE RUN, todos os valores dos registos são válidos e estão dentro do intervalo designado para os seus tipos de dados, indicando que o programa do utilizador está a funcionar corretamente.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Após a execução do nosso script Python, vários pacotes Modbus TCP serão enviados para o PLC, solicitando a escrita de grandes valores aleatórios em todos os registos sem autenticação:

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Depois de receber estes pedidos de pacotes maliciosos, os valores de todos os registos, incluindo N13:3 e N13:4, são definidos para 16.990. O resultado da operação ADD nos registos N13:3 e N13:4 excede o intervalo válido de um registo de 16 bits. Este problema provoca um excesso de número inteiro, conduzindo a uma falha e interrompendo o funcionamento do PLC, como indicado pelo estado FAULTED.

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Os nossos bolseiros graduados OPSWAT conseguiram fazer cair o PLC MicroLogix 1400 explorando o CVE-2021-22659.

Remediação

Proteger os sistemas OT contra ataques remotos: Como a « MetaDefender OT Security™» protege o controlador Micrologix™ 1400 contra o CVE-20

Face a vulnerabilidades como a CVE-2021-22659, a correção abrangente é crucial para proteger os sistemas OT e ciber-físicos. De seguida, apresentam-se algumas das principais estratégias que podem ser utilizadas para evitar a propagação de ataques:

  1. Deteção de CVEs conhecidos: Verificar regularmente as redes em busca de vulnerabilidades como a CVE-2021-22659.
  2. Monitoramento de comportamentos anômalos: Identificação de aumentos incomuns na frequência de comunicação com o PLC Micrologix 1400, o que pode sugerir um ataque em andamento de transferência de dados não autorizada.
  3. Identificação de novas ligações de dispositivos: O sistema deve detetar quando um novo dispositivo se liga ao PLC.
  4. Segmentação da rede: O isolamento dos dispositivos afectados pode ajudar a evitar a propagação lateral dos ataques, minimizando assim o impacto.

MetaDefender OT Security da OPSWATatende a essas necessidades detectando CVEs, monitorando continuamente a rede em busca de comportamentos incomuns e identificando conexões não autorizadas. Utilizando IA, aprende padrões de tráfego normais, estabelece um comportamento de base e implementa políticas para alertar anomalias. Isto permite respostas instantâneas e informadas a potenciais ameaças.

No caso de um ataque que explora o CVE-2021-22659, MetaDefender OT Security integra-se com o MetaDefender Industrial Firewall para bloquear comunicações suspeitas com base em regras definidas. O firewall usa IA para aprender padrões de tráfego regulares e aplicar políticas para evitar conexões não autorizadas.

Ao combinar estas capacidades de deteção, alerta e segmentação de rede, o MetaDefender OT Security torna-se o mecanismo de defesa ideal para ambientes industriais, reduzindo significativamente o risco e o impacto das ciberameaças em ambientes de tecnologia operacional.

Explore como a plataforma de segurança cibernética de defesa em profundidade da OPSWATpode melhorar e amadurecer a sua postura. Fale com um especialista hoje para uma demonstração gratuita.

Mantenha-se atualizado com OPSWAT!

Inscreva-se hoje mesmo para receber as últimas novidades da empresa, histórias, informações sobre eventos e muito mais.