AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 35 Bitcoin

Merge bitcoin/bitcoin#34914: contrib: replace deprecated --deep codesign flag, fix accidental --verify skip on ci

Public commit record

What the developer wrote

Authored by merge-script

100/100 · Strong
Merge bitcoin/bitcoin#34914: contrib: replace deprecated --deep codesign flag, fix accidental --verify skip on ci

da7d7dbc7c0040d5e91fe21e19fdc1cb3b8ea7b2 contrib: remove deprecated --deep codesign flag (Sjors Provoost)
ad4eeaf859c447894e83c855bcff63bb70f58be4 ci: avoid modifying GOAL in 03_test_script.sh (Sjors Provoost)

Pull request description:

Replace the deprecated `codesign --deep` with explicit, and minimal, per-component signing of Frameworks, Plugins and the top-level bundle.

The CI signature check introduced in #34787 is updated to use `--strict`.

Can be tested with:

```sh
cmake -B build -DBUILD_GUI=ON
# delete artifacts before rebuilding the `deploy` target
rm -rf build/Bitcoin-Qt.app build/bitcoin-macos-app.zip
cmake --build build -t deploy
codesign --verify --deep --strict --verbose=4 build/dist/Bitcoin-Qt.app
```

Fixes #32486, supersedes #33592 (this is a condensed version)

Additionally this PR modifies `03_test_script.sh` to avoid modifying `GOAL` in place. That was causing the `codesign --verify` step to get skipped entirely.

ACKs for top commit:
fanquake:
ACK da7d7dbc7c0040d5e91fe21e19fdc1cb3b8ea7b2 - I think we should try and cleanup `macdeployqtplus` somewhat, but that can happen in future.
willcl-ark:
Light ACK da7d7dbc7c0040d5e91fe21e19fdc1cb3b8ea7b2

Tree-SHA512: 54e6d38a327a9a241d842728390770e7819d45180c69c288f1e26c5706aff8ebedbb4f608c4a45b2b186e3369181b116aa82134a38fcaabf3af3711be14b9863
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
The short version

What changed, and why it matters

This change fixes how Bitcoin Core's macOS app bundle is digitally signed during automated builds. It replaces an outdated 'deep' signing method with explicit signing of each framework, plugin, and the main app bundle. It also fixes a CI script bug that was accidentally skipping the signature verification step entirely, and makes that verification stricter. The practical security effect is that macOS is more likely to detect tampered or improperly signed release binaries, and the build pipeline now actually performs that check.

Recommended action

Treat this as a hardening and build-integrity fix. Ensure the updated macdeployqtplus is used for all macOS release builds and that CI logs confirm the codesign --verify --deep --strict step runs and passes. No immediate user action is required, but release managers should verify the next macOS binary's signature with `codesign --verify --deep --strict --verbose=4`.

Security signals we found

01

Fixes accidental skip of macOS code-signature verification in CI

02

Replaces deprecated codesign --deep with explicit per-component signing

03

Adds --strict to CI signature verification

04

Addresses signature invalidation from strip/install_name_tool on frameworks and plugins

05

Fixes GitHub issue #32486

Risk score

Why this scored 35/100

Our methodology →
Potential impact 8/30
Exploitability 5/25
Stealth signal 6/15
Affected reach 5/15
Confidence 7/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.