Table of Contents

Перевірка цілісності прошивки OpenWrt

Сучасний Інтернет — це середовище з високим рівнем загроз. Зокрема, поширеними стали атаки на ланцюжки постачання (supply chain attacks), коли зловмисники компрометують процес завантаження програмного забезпечення чи оновлень. Тому вкрай важливо повністю перевіряти будь-яке ПЗ перед встановленням.

Для OpenWrt це означає розуміння структури веб-сервера, що надає бінарні файли. Приклад для релізу 21.02.0 (x86-64):

Ланцюжок перевірки:

УВАГА: всі посилання повинні бути **https:// **, а не http:// — протокол HTTP легко перехопити чи підробити.

Щоб повністю перевірити файл прошивки, потрібно завантажити:

Кроки:

Не рекомендується пропускати перевірку підпису, навіть якщо ви “впевнені”, що джерело надійне.

Ніколи не прошивайте пристрій, якщо підпис не вірний або хеш не збігається — це може зіпсувати пристрій або відкрити його для атак.

Linux

Публічні ключі GPG OpenWrt: OpenWrt GPG public keys and fingerprints

Увага: реліз 23.05 підписано застарілим ключем “PGP key for unattended snapshot builds (deprecated)”

# Завантаження файлів
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
 
# Імпорт GPG-ключа
gpg --receive-keys 88CA59E88F681580
 
# Перевірка відбитка ключа
gpg --fingerprint 88CA59E88F681580
 
# Перевірка GPG-підпису
gpg --status-fd 1 --with-fingerprint --verify sha256sums.asc sha256sums 2>&1 | grep -e Good
 
# Перевірка SHA256-хешу
sha256sum --ignore-missing -c sha256sums 2> /dev/null | grep -e OK

Також є скрипт download-check-artifact.sh, який автоматизує процес. Перед запуском оновіть у скрипті сервер ключів із sks-keyservers.net на keyserver.ubuntu.com, keys.openpgp.org або pgp.mit.edu.

Сесія з використанням скрипта:

# ./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) Завантаження образу
2) Завантаження sha256sums
3) Завантаження підпису
4) Перевірка GPG-підпису
gpg: Good signature from "OpenWrt Build System (PGP key for 21.02 release builds)"
5) Перевірка SHA256
...: OK

Перевірка завершена!
Файл прошивки збережено в '~/Downloads/OpenWrt/...'

Windows

Див. також: Перевірка GPG-підпису

Перевірка хешу:

  1. Перейдіть у браузері до каталогу прошивки (обріжте URL до останнього `/`)
  2. Знайдіть файл, який ви завантажили
  3. Скопіюйте його SHA256-хеш із колонки

У Windows можна використовувати:

Використання certutil:

certutil -hashfile "%USERPROFILE%\Downloads\openwrt-...img.gz" sha256

Вивід буде приблизно такий:

SHA256-Hash of file C:\Users\User\Downloads\openwrt.img.gz:
c4 12 12 b5 87 75 68 6a ...

Приберіть пробіли та порівняйте з SHA256 із сайту завантаження.

macOS

Див. також: Перевірка GPG-підпису

Інструкції аналогічні Windows:

  1. Відкрийте Terminal → перейдіть до каталогу з файлом
  2. Виконайте:
shasum -a 256 ./Downloads/openwrt-...img.gz
  1. Вивід буде такий:
c41212b58775...f09824  openwrt.img.gz
  1. Перевірте, що хеш збігається з тим, що вказано на сторінці завантаження