Перейти к содержанию

Проверка SHA256

В закрытом контуре целостность поставки подтверждается контрольными суммами SHA256. Рядом с каждым архивом публикуется файл SHA256SUMS; те же суммы публикуются на странице релиза. Цифровых подписей нет — только хеш.

Что подтверждает SHA256

Совпавший хеш означает, что файл не изменился при переносе. Он не подтверждает авторство: если злоумышленник заменил и архив, и SHA256SUMS, проверка это не обнаружит. По возможности сверяйте сумму по двум независимым источникам (например, GitHub Releases и внутреннее зеркало) и храните эталонную сумму отдельно от архива.

Где взять эталонные суммы

  • рядом с архивом — файл SHA256SUMS;
  • на странице релиза GitHub — https://github.com/itphx/synth/releases/tag/v<version>;
  • на странице релиза GitVerse — https://gitverse.ru/itphx/synth/releases.

GitHub Releases — канонический источник ассетов. В GitVerse публикуются ссылки на релиз, реестр Docker/Helm и — best-effort — сами ассеты: API GitVerse может отвечать 500, поэтому отсутствие файла там не означает, что релиз не вышел. Если ассет недоступен в GitVerse, берите его из GitHub Releases.

Linux

Перейдите в каталог с архивом и файлом SHA256SUMS:

cd <bundle-dir>
sha256sum -c SHA256SUMS

Для одного файла:

sha256sum synth-<version>-linux-x64.tar.gz

Ожидаемый результат — строка с именем файла и OK. Команда sha256sum входит в coreutils и есть во всех поддерживаемых дистрибутивах.

macOS

В macOS нет sha256sum; используйте shasum:

cd <bundle-dir>
shasum -a 256 -c SHA256SUMS

Для одного файла:

shasum -a 256 synth-<version>-darwin-arm64.tar.gz

Для Intel используйте synth-<version>-darwin-x64.tar.gz.

Windows

PowerShell, один файл:

Get-FileHash .\synth-<version>-win-x64.zip -Algorithm SHA256

Сверьте вывод с соответствующей строкой SHA256SUMS вручную. Проверка всего файла сумм:

Get-Content .\SHA256SUMS | ForEach-Object {
    $expected, $file = $_ -split '\s+\*?', 2
    $actual = (Get-FileHash -Path $file -Algorithm SHA256).Hash
    if ($actual -ne $expected.ToUpper()) {
        Write-Error "FAIL: $file"
    } else {
        "OK: $file"
    }
}

Альтернатива без PowerShell:

certutil -hashfile synth-<version>-win-x64.zip SHA256

certutil выводит хеш в верхнем регистре без разделителей — сравнивайте с SHA256SUMS с учётом регистра.

Allowlist по хешу

Если в контуре используется allowlist приложений, заносите туда хеш конкретного артефакта, а не имя файла или каталог:

Среда Как ограничить запуск
Linux Пакетная политика (например, fapolicyd) или allowlist в системе управления конфигурацией по SHA256
macOS Политика MDM (PPPC/Application Management) по хешу или пути; для локальной машины — одобрение конкретного приложения
Windows WDAC или AppLocker: правило по хешу файла; SmartScreen не отключать глобально
Контейнеры Проверка digest загруженного образа, если образ переносился через реестр

Хеш меняется с каждым релизом

При обновлении бандла обновляйте и allowlist. Не добавляйте в исключения целые каталоги или шаблоны имён — это сводит проверку к нулю.

Предупреждения macOS Gatekeeper

Если архив скачан из сети, macOS может пометить его карантином. При запуске появляется сообщение вида «Synth cannot be opened because the developer cannot be verified».

Что делать:

  1. Проверьте SHA256 архива и распакованных файлов.
  2. Убедитесь, что путь установки совпадает с ожидаемым.
  3. Для локального запуска одобрите конкретный артефакт средствами macOS, если это разрешено политикой организации. Не снимайте карантин рекурсивно с каталогов и не отключайте Gatekeeper.

  4. В управляемом парке добавьте приложение в allowlist MDM по хешу/пути.

Не отключайте Gatekeeper глобально

spctl --master-disable и отключение SIP снижают защиту всей машины. Для закрытого контура добавьте конкретный артефакт в allowlist по хешу (MDM) или одобрите его средствами ОС, если это разрешено политикой.

Предупреждения Windows SmartScreen

Так как установщик и бинарники не подписаны, SmartScreen может показать «Windows protected your PC».

Что делать:

  1. Проверьте SHA256 архива.
  2. В управляемом парке используйте allowlist WDAC/AppLocker по хешу.
  3. Локальное одобрение запуска — только если это разрешено политикой организации, после проверки хеша.

Не отключайте SmartScreen и Defender глобально

Постоянное отключение защиты или добавление всего каталога в исключения не является способом установки. Если политика организации запрещает запуск неподписанных файлов, согласуйте allowlist по хешу с ИБ.

Если сумма не совпала

  1. Не запускайте файл.
  2. Повторите перенос: проверьте, не изменился ли размер архива, не оборвалась ли передача.
  3. Сверьте сумму с другим источником (GitHub Releases, внутреннее зеркало).
  4. Если сумма расходится на двух источниках — обратитесь к поставщику сборки: это признак повреждения или подмены.

Что дальше