Перевірка цілісності прошивки OpenWrt
Сучасний Інтернет — це середовище з високим рівнем загроз. Зокрема, поширеними стали атаки на ланцюжки постачання (supply chain attacks), коли зловмисники компрометують процес завантаження програмного забезпечення чи оновлень. Тому вкрай важливо повністю перевіряти будь-яке ПЗ перед встановленням.
Для OpenWrt це означає розуміння структури веб-сервера, що надає бінарні файли. Приклад для релізу 21.02.0 (x86-64):
- https://downloads.openwrt.org/releases/21.02.0/ — всі файли релізу 21.02.0
- https://downloads.openwrt.org/releases/21.02.0/packages/ — пакети для релізу 21.02.0
- https://downloads.openwrt.org/releases/21.02.0/targets/ — прошивки для різних архітектур
- https://downloads.openwrt.org/releases/21.02.0/targets/x86/ — прошивки для архітектури x86
- https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/ — прошивки для x86/64 + індекс-файл із SHA256-хешами
- https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums — SHA256-хеші для кожного файлу
- https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums.asc — GPG-підпис для файлу sha256sums
Ланцюжок перевірки:
- GPG-ключ підписує файл sha256sums.asc
- Цей підпис підтверджує достовірність файлу sha256sums
- SHA256-хеш у sha256sums підтверджує цілісність кожного файлу прошивки
УВАГА: всі посилання повинні бути https:// , а не http:// — протокол HTTP легко перехопити чи підробити.
Щоб повністю перевірити файл прошивки, потрібно завантажити:
- Файл прошивки
- Файл sha256sums
- Файл sha256sums.asc
- Публічний GPG-ключ OpenWrt
Кроки:
- Перевірити підпис файлу sha256sums
- Використати його для перевірки SHA256-хешу файлу прошивки
Не рекомендується пропускати перевірку підпису, навіть якщо ви “впевнені”, що джерело надійне.
Ніколи не прошивайте пристрій, якщо підпис не вірний або хеш не збігається — це може зіпсувати пристрій або відкрити його для атак.
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-підпису
Перевірка хешу:
- Перейдіть у браузері до каталогу прошивки (обріжте URL до останнього `/`)
- Знайдіть файл, який ви завантажили
- Скопіюйте його SHA256-хеш із колонки
У Windows можна використовувати:
- Вбудовану утиліту certutil (без графічного інтерфейсу)
- Зовнішні програми, наприклад: MD5 & SHA Checksum Utility
Використання 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:
- Відкрийте Terminal → перейдіть до каталогу з файлом
- Виконайте:
shasum -a 256 ./Downloads/openwrt-...img.gz
- Вивід буде такий:
c41212b58775...f09824 openwrt.img.gz
- Перевірте, що хеш збігається з тим, що вказано на сторінці завантаження