Verificando o binário do firmware OpenWrt
A internet atual é um ambiente de alta ameaça. Em particular, ataques à cadeia de suprimentos, nos quais um invasor compromete o processo de download de software e atualizações, são frequentes. Portanto, é importante verificar completamente qualquer software que você baixar antes de instalá-lo e usá-lo.
Fazer isso para o OpenWrt requer a compreensão da organização do servidor web que fornece os binários que você instala. Usando a versão 21.02.0 para o x86-64 como exemplo, a estrutura é:
- https://downloads.openwrt.org/releases/21.02.0/ - todos os arquivos para a versão 21.02.0
- https://downloads.openwrt.org/releases/21.02.0/packages/ - todos os pacotes para a versão 21.02.0
- https://downloads.openwrt.org/releases/21.02.0/targets/ - todo o firmware para a versão 21.02.0
- https://downloads.openwrt.org/releases/21.02.0/targets/x86/ - todo o firmware para o conjunto de instruções
x86 - https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/ - todo o firmware para produtos que compartilham o Arquitetura
64e um arquivo de índice contendo uma tabela com colunas para nomes de arquivos abreviados, hash SHA256, tamanho do arquivo e data de criação de cada um dos arquivos de firmware. - https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums - um arquivo contendo hashes SHA256 para cada um dos arquivos de firmware para produtos que compartilham a arquitetura
x86/64 - https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums.asc - uma assinatura GPG separada para o arquivo
sha256sumscriada pela chave privada de assinatura 21.02.0.
A chave de assinatura 21.02.0 verifica a assinatura no arquivo sha256sums.asc.
A assinatura no arquivo sha256sums.asc verifica a integridade do arquivo sha256sums.
O hash SHA256 no arquivo sha256sums verifica a integridade dos arquivos individuais no diretório 64.
O mesmo se aplica a todas as outras arquiteturas suportadas.
Observe que as URLs acima são todas https: e não http: - alguns dos links relevantes em https://openwrt.org são http:, mas se você encontrar um, deve alterá-lo para https: antes de usar a URL.
Conexões http: são vulneráveis a interceptação e corrupção.
Para verificar completamente um arquivo de firmware, é necessário baixar:
- O próprio arquivo de firmware
- O arquivo
shasums - O arquivo
sha256sums.asc - A chave de assinatura pública
As etapas são:
- Verificar a assinatura do arquivo
sha256sums. - Use o arquivo
sha256sumspara verificar o hash SHA256 do arquivo de firmware.
Se você assumir que não foi vítima de um ataque à cadeia de suprimentos e que ninguém comprometeu o site downloads.openwrt.org ou sua conexão com ele, é possível realizar uma verificação parcial omitindo a verificação de assinatura.
Isso não é recomendado.
Se a verificação de assinatura falhar ou se os hashes SHA256 não corresponderem, não atualize o firmware baixado. Seu download pode estar corrompido e bloquear seu roteador, ou pode ser malware e expor sua rede a ransomware.
Linux
Para obter a chave GPG correta, consulte Chaves públicas e impressões digitais GPG do OpenWrt
Observe que as versões 23.05 são assinadas com a “Chave PGP para compilações de snapshots autônomas (obsoleta)”.
# Download files cd /tmp curl --progress-bar -o openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz \ https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz curl --progress-bar -o sha256sums \ https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums curl --progress-bar -o sha256sums.asc \ https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums.asc # Import GPG public key gpg --receive-keys 88CA59E88F681580 # Check GPG public key fingerprint gpg --fingerprint 88CA59E88F681580 # Verify GPG signature gpg --status-fd 1 --with-fingerprint --verify sha256sums.asc sha256sums 2>&1 | grep -e Good # Verify SHA256 checksums sha256sum --ignore-missing -c sha256sums 2> /dev/null | grep -e OK
Para sistemas Linux, existe um script chamado download-check-artifact.sh que automatiza o processo. Certifique-se de especificar a URL usando HTTPS. Além disso, edite o script antes de executá-lo e substitua o descontinuado sks-keyservers.net por keyserver.ubuntu.com ou keys.openpgp.org ou pgp.mit.edu.
Aqui está uma gravação editada de uma sessão usando o script após adicionar a chave de assinatura pública ao chaveiro:
# download-check-artifact.sh https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz 1) Downloading image file ========================= [progress bar] 2) Downloading checksum file ============================ [progress bar] 3) Downloading the GPG signature ================================ [progress bar] 4) Verifying GPG signature ========================== gpg: Signature made Thu Sep 2 09:39:21 2021 MSK gpg: using RSA key 667205E379BAF348863A5C6688CA59E88F681580 gpg: Good signature from "OpenWrt Build System (PGP key for 21.02 release builds) <pgpsign-21.02@openwrt.org>" [ultimate] Primary key fingerprint: 6672 05E3 79BA F348 863A 5C66 88CA 59E8 8F68 1580 5) Verifying SHA256 checksum ============================ openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz: OK Verification done! ================== Firmware image placed in '~/Downloads/OpenWrt/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz'. Cleaning up.
Se o script retornar um código de erro, verifique o código-fonte para obter uma explicação da causa do erro.
Windows
Veja também: Verificando a assinatura GPG
As somas de verificação são armazenadas na visualização de pastas da página do servidor de download. Obtenha-as seguindo estes passos:
- Lembre-se da URL usada para baixar a imagem do firmware, por exemplo,
https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz - Remova tudo o que estiver após a última
/e abra a URL no seu navegador, por exemplo,https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/ - Encontre o arquivo que você baixou. A string na coluna
sha256sumé a soma de verificação, por exemplo,c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824
Software para verificar somas de verificação:
- As versões mais recentes do Windows possuem uma ferramenta integrada para calcular somas de verificação sha256, chamada
certutil, mas ela não possui uma interface gráfica de usuário, então teremos que usar a linha de comando para interagir com ela. - Versões mais antigas do Windows precisam baixar uma ferramenta sha256, por exemplo, Utilitário de Verificação de Soma MD5 e SHA (a versão gratuita).
Para usar o certutil integrado:
- Clique no ícone do Windows, digite “cmd” e pressione Enter.
- Execute (assumindo que você baixou o arquivo para a pasta Downloads):
certutil -hashfile "%USERPROFILE%\Downloads\openwrt-file-name-here" sha256
- Isso imprimirá um checksum como este (nome do arquivo seguido por uma string com letras e números),
SHA256-Hash do arquivo C:\Usuários\NOME DE USUÁRIO\Downloads\openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz: c4 12 12 b5 87 75 68 6a d5 ed 38 90 4c 07 98 89 9e 6b 66 4e 98 56 c4 88 31 f1 ef ce 85 f0 98 24
- Remova os espaços da saída deste checksum, por exemplo: Usando a função replace no bloco de notas:
c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824
- Verifique se a string de checksum sem espaços em branco corresponde àquela que você encontra no campo sha256sums na página de download que você acessou seguindo as instruções acima.
macOS
Veja também: Verificando a assinatura GPG
As somas de verificação são armazenadas na visualização de pastas da página do servidor de download. Obtenha-as seguindo estes passos:
- Lembre-se da URL usada para baixar a imagem do firmware, por exemplo,
https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz - Remova tudo após a última
/e abra a URL no seu navegador, por exemplo,https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/ - Encontre o arquivo que você baixou. A string na coluna
sha256sumé a soma de verificação, por exemplo,c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824
O Mac possui uma ferramenta integrada para verificar somas sha256, mas não possui interface gráfica, então teremos que usar o Terminal para interagir com ela.
- Clique no ícone do Finder no Dock.
- Clique em Aplicativos na lista de Favoritos.
- Encontre a pasta Utilitários e clique para abri-la.
- Localize o Terminal e clique duas vezes no ícone para abrir o programa.
- Localize o Terminal e clique duas vezes no ícone para abrir o programa. - Abra uma janela de terminal e execute (supondo que você baixou o arquivo na área de trabalho):
shasum -a 256 ./Desktop/file-name-here
- Ele exibirá algo assim (string com letras e números seguidos do nome do arquivo):
c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824 openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz
- Verifique se a string de soma de verificação corresponde à que você encontra no campo sha256sums na página de download que você acessou seguindo as instruções acima.