Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release SecureDrop Workstation 1.1.0 #1209

Open
45 tasks
rocodes opened this issue Dec 3, 2024 · 13 comments
Open
45 tasks

Release SecureDrop Workstation 1.1.0 #1209

rocodes opened this issue Dec 3, 2024 · 13 comments
Milestone

Comments

@rocodes
Copy link
Contributor

rocodes commented Dec 3, 2024

Description

Release SecureDrop Workstation 1.1.0, with Fedora 41 support and other bugfixes and improvements.
Note: keyring bootstrap package support has been deferred til [1.2.0], so reopening this ticket. (https://github.com/freedomofpress/securedrop-workstation/milestone/11).

Pre-release tasks

QA / Test plan

Testers, please choose one of Clean install or Upgrade. Instructions:
https://github.com/freedomofpress/securedrop-workstation/wiki/QA-Testing#dom0-testing-securedrop-workstation-dom0-config

Clean Install (Qubes 4.2.4)

Follow Clean install (RC) setup instructions.

Upgrade (no f41 template present)

Follow Upgrade (RC) setup instructions. Do not install fedora-41-xfce template before upgrading.

  • fedora-41-xfce not present before upgrade
  • Upgrade completes successfully using updater (Replace salt updater in sd-sys-vms #1165) - check updater detail log and dom0 journal, ensure no errors
  • Basic regression testing: VMs boot, basic functionality, send-receive-decrypt-export (one tester total)
  • Rest of test plan (below)

Upgrade B: f41 template already present (@rocodes)

  • Same as test plan above, I'll do this one
  • rest of test plan

1.1.0 test plan (start in dom0)

Key validation
In dom0 /usr/share/securedrop-workstation-dom0-config, test the following validation conditions for sd-journalist.sec by running sdw-admin --validate and observing the output. #1205

  • Missing private key (sd-journalist.sec) fails validation
  • Pubkey instead of private key fails validation (test with eg sudo sed -i "s/PRIVATE/PUBLIC/g" /usr/share/securedrop-workstation-dom0-config/sd-journalist.sec) and a message that it's not a private key
  • Password-protected private key fails validation and yields descriptive error message (you may want to generate a keypair outside dom0 in an environment with pinentry, password-protect the key, then copy into dom0)

VM config

systemd units
Observe when running each (#1088):

  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

Fedora 41 bump

  • Examine output of qvm-ls | grep fedora-41-xfce: (Bump supported fedora version to 41 #1221)
  • fedora-41-xfce is present (TemplateVM), fedora-41-xfce-dvm is template for sys-net, sys-firewall
  • sd-fedora-41-dvm exists and has fedora-41-xfce template; sd-fedora-41-dvm is sys-usb template
  • qvm-check --quiet sd-fedora-40-dvm || echo "Not installed" shows "Not installed"

Correct packages

late sd-log setup (#1253)

Open terminal in sd-log:

  • and type ls ~/QubesIncomingLogs/. Various sd-* qubes should be listed
  • type tail -f ~/QubesIncomingLogs/sd-proxy/syslog.log
  • open terminal in sd-proxy and type sudo journalctl -f
  • on sd-proxy, open another teminal (to cause something to show in the systemctl journal)
  • Compare the output of the log in sd-log and in sd-proxy. They should be approximately the same.
Example of what it should look like:

Image

Uninstall (optional/one tester)
sdw-admin --uninstall then reboot or reload systemd daemon (sudo systemctl daemon-reload).

  • securedrop-related systemd units (user and system) are all removed. On the following dom0 commands it should show "... could not be found":
  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

Excluded from QA

Dev-facing

Due to test coverage

Release

See https://developers.securedrop.org/en/latest/workstation_release_management.html#release-an-rpm-package

  • Check if any security fixes need to be pulled in
  • Create release/1.1.0 branch
  • On release branch, update version and changelog, create rc tag
  • Build and reproduce RC packages, open PR on yum-test
  • merge yum-test PR, start RC QA (test plan tk)
  • Prod changelog, version bump, and prod-signed tag
  • Prod packages on yum-qa: open (draft) PR to release branch
  • Pre-release QA (yum-prod review checklist can be stepped through without approving/merging)
  • Go/no-go meeting, finalize comms roles and timeline
  • Deploy
  • Comms (blog post), docs update, socials
  • Backport + close release issue
@rocodes rocodes pinned this issue Dec 3, 2024
@nathandyer nathandyer unpinned this issue Dec 6, 2024
@rocodes rocodes closed this as completed Jan 17, 2025
@rocodes rocodes reopened this Jan 22, 2025
@rocodes rocodes added this to the 1.1.0 milestone Jan 22, 2025
@rocodes rocodes pinned this issue Jan 22, 2025
@rocodes rocodes moved this to In Progress in SecureDrop dev cycle Jan 23, 2025
deeplow pushed a commit to freedomofpress/build-logs that referenced this issue Feb 20, 2025
deeplow pushed a commit to freedomofpress/build-logs that referenced this issue Feb 20, 2025
deeplow pushed a commit to freedomofpress/securedrop-yum-test that referenced this issue Feb 20, 2025
@nathandyer
Copy link

nathandyer commented Feb 24, 2025

QA / Test plan

Testers, please choose one of Clean install or Upgrade. Instructions:
https://github.com/freedomofpress/securedrop-workstation/wiki/QA-Testing#dom0-testing-securedrop-workstation-dom0-config

Upgrade (no f41 template present) IN PROGRESS

Follow Upgrade (RC) setup instructions. Do not install fedora-41-xfce template before upgrading.

  • fedora-41-xfce not present before upgrade
  • Upgrade completes successfully using updater (Replace salt updater in sd-sys-vms #1165) - check updater detail log and dom0 journal, ensure no errors
  • Basic regression testing: VMs boot, basic functionality, send-receive-decrypt-export (one tester total)
  • Rest of test plan (below)

1.1.0 test plan (start in dom0)

Key validation
In dom0 /usr/share/securedrop-workstation-dom0-config, test the following validation conditions for sd-journalist.sec by running sdw-admin --validate and observing the output. #1205

  • Missing private key (sd-journalist.sec) fails validation
  • Pubkey instead of private key fails validation (test with eg sudo sed -i "s/PRIVATE/PUBLIC/g" /usr/share/securedrop-workstation-dom0-config/sd-journalist.sec) and a message that it's not a private key
  • Password-protected private key fails validation and yields descriptive error message (you may want to generate a keypair outside dom0 in an environment with pinentry, password-protect the key, then copy into dom0)

VM config

FAIL: sd-viewer not visible in menu under APPS tab

FAIL: sd-proxy not visible in SERVICE tab

systemd units
Observe when running each (#1088):

  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

Fedora 41 bump

POSSIBLE FAIL: sys-usb not listed in output; when checking, it appears that the sd-fedora-41-dvm1 is the template (which may be correct? just not what's in the test plan)

  • sd-fedora-41-dvm exists and has fedora-41-xfce template available
  • qvm-check --quiet sd-fedora-40-dvm || echo "Not installed" shows "Not installed"

Correct packages

Uninstall (optional/one tester)
sdw-admin --uninstall then reboot or reload systemd daemon (sudo systemctl daemon-reload).

  • securedrop-related systemd units (user and system) are all removed. On the following dom0 commands it should show "... could not be found":
  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

Excluded from QA

Dev-facing

Due to test coverage

@rocodes
Copy link
Contributor Author

rocodes commented Feb 25, 2025

@nathandyer Thank you for your testing, and apologies - those were errors in the test plan not in your results. I have amended the test plan to clarify a couple cases (sd-viewer and sd-proxy are still internal, so other testers will do qvm-prefs for them rather than searching in the app menu); and sys-usb is disposable so you have the correct template for it (assuming the 1 at the end is a typo and you meant sd-fedora-41-dvm.

Your test run LGTM! thanks again. I will provide some additional test coverage.

@deeplow
Copy link
Contributor

deeplow commented Feb 25, 2025

Clean Install (Qubes 4.2.4)

A small during Qubes install and update I did see errors updating fedora-41-xfce, before SDW was even installed.

Image

Follow Clean install (RC) setup instructions.

Key validation
In dom0 /usr/share/securedrop-workstation-dom0-config, test the following validation conditions for sd-journalist.sec by running sdw-admin --validate and observing the output. #1205

  • Missing private key (sd-journalist.sec) fails validation
  • Pubkey instead of private key fails validation (test with eg sudo sed -i "s/PRIVATE/PUBLIC/g" /usr/share/securedrop-workstation-dom0-config/sd-journalist.sec) and a message that it's not a private key
  • Password-protected private key fails validation and yields descriptive error message (you may want to generate a keypair outside dom0 in an environment with pinentry, password-protect the key, then copy into dom0)

⚠ Note: It does show the errors for all of the above, but in traceback form. Is this a regression?

VM config

systemd units
Observe when running each (#1088):

  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

Fedora 41 bump

  • Examine output of qvm-ls | grep fedora-41-xfce: (Bump supported fedora version to 41 #1221)
  • FAIL fedora-41-xfce is present (TemplateVM), is template for sys-usb, sys-net, sys-firewall

    ✅ for sys-net and sys-firewall, but not for sys-usb, of course. sys-usb had sd-fedora-41-dvm. This was an issue with the test plan.

  • sd-fedora-41-dvm exists and has fedora-41-xfce template available
  • qvm-check --quiet sd-fedora-40-dvm || echo "Not installed" shows "Not installed"

Correct packages

  • qvm-run --pass-io sd-base-bookworm-template 'apt list --installed | grep securedrop' (Refactor: Avoid duplicative salt states #1161)
    • securedrop-workstation-config is present
    • securedrop-workstation-grsec is present

    Note: turns out we could have used apt list *securedrop* instead

Uninstall (optional/one tester)
sdw-admin --uninstall then reboot or reload systemd daemon (sudo systemctl daemon-reload).

  • securedrop-related systemd units (user and system) are all removed. On the following dom0 commands it should show "... could not be found":
  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

Excluded from QA

Dev-facing

Due to test coverage


Missing bit in test plan

We had missed the RC4 inclusion in the test plan: #1253

I confirmed that sd-log is working. There is some mismatch between earlier entries for logs in sd-proxy's journalctl and the one stored in sd-log under ~/QubesIncoming/sd-proxy/syslog.log. But later entries were consistent.

I don't have a baseline comparison to assess the initial inconsistency, but given that app qubes inheirt the template's journalctl, the logs become hard to compare.

I would give this one a pass. Given that we are not concerned about logs during the installation.

@deeplow
Copy link
Contributor

deeplow commented Feb 25, 2025

I have amended the test plan to clarify a couple cases (sd-viewer and sd-proxy are still internal, so other testers will do qvm-prefs for them rather than searching in the app menu);

I may have wrongly assumed we were testing using staging while on yum-test, but according to this, they should not be marked as internal. Perhaps I should have noted in the test plan that this will only be visible when testing on yum-qa.

@rocodes
Copy link
Contributor Author

rocodes commented Feb 25, 2025

I have amended the test plan to clarify a couple cases (sd-viewer and sd-proxy are still internal, so other testers will do qvm-prefs for them rather than searching in the app menu);

I may have wrongly assumed we were testing using staging while on yum-test, but according to this, they should not be marked as internal. Perhaps I should have noted in the test plan that this will only be visible when testing on yum-qa.

Right, good point; I think though that we shouldn't have a different test plan for prod vs yum-test. (I guess this argues against the conditional "sometimes internal sometimes not" logic more than anything tbh)

@deeplow
Copy link
Contributor

deeplow commented Feb 25, 2025

I have added to the test plan something about the late setup of sd-log introduced in RC4.

Right, good point; I think though that we shouldn't have a different test plan for prod vs yum-test. (I guess this argues against the conditional "sometimes internal sometimes not" logic more than anything tbh)

💯 #1053

@rocodes
Copy link
Contributor Author

rocodes commented Feb 26, 2025

(neglected to post my QA results yesterday, but I went through QA on the "upgrade / f41 templates already installed" scenario. Successful provisioning run, confirmed basic assurances (correctly updated fedora templates, correct vm properties, autoattach rules in sys-usb).

We have proceeded to prod tag + artifact building and will update when time for pre-release QA.

@rocodes
Copy link
Contributor Author

rocodes commented Feb 26, 2025

Prod qa packages are live on yum-qa. Testers, please ensure that if you are testing the "Upgrade - no fedora 41 templates" test plan, you do not have the fedora-41-xfce template installed before you start QA. QA environment setup instructions are in the wiki page linked in the issue body.

(My results: clean install successful - didn't QA just did a provisioning run. Upgrade in progress.)

@rocodes
Copy link
Contributor Author

rocodes commented Feb 27, 2025

My (smoketest) pre-release qa:

  • Clean install 1 (f41 templates already present) successful: Provisioning completes, VMs boot, correct templates and preferences; sdw-admin --uninstall completes successfully
  • Upgrade install (1.0.2 -> 1.1.0) via the updater: Update is successful, VMs, boot, correct templates, correct properties in sys vms; sdw-admin --uninstall successful
  • Clean install 2 (f41 templates already present): WIP, will update as soon as provisioning completes

@deeplow
Copy link
Contributor

deeplow commented Feb 27, 2025

QA / Test plan

Testers, please choose one of Clean install or Upgrade. Instructions:
https://github.com/freedomofpress/securedrop-workstation/wiki/QA-Testing#dom0-testing-securedrop-workstation-dom0-config

Upgrade (no f41 template present)

Follow Upgrade (RC) setup instructions. Do not install fedora-41-xfce template before upgrading.

  • fedora-41-xfce not present before upgrade
  • Upgrade completes successfully using updater (Replace salt updater in sd-sys-vms #1165) - check updater detail log and dom0 journal, ensure no errors
  • Basic regression testing: VMs boot, basic functionality, send-receive-decrypt-export (one tester total)
  • Rest of test plan (below)

1.1.0 test plan (start in dom0)

Key validation
In dom0 /usr/share/securedrop-workstation-dom0-config, test the following validation conditions for sd-journalist.sec by running sdw-admin --validate and observing the output. #1205

  • Missing private key (sd-journalist.sec) fails validation
  • Pubkey instead of private key fails validation (test with eg sudo sed -i "s/PRIVATE/PUBLIC/g" /usr/share/securedrop-workstation-dom0-config/sd-journalist.sec) and a message that it's not a private key
  • Password-protected private key fails validation and yields descriptive error message (you may want to generate a keypair outside dom0 in an environment with pinentry, password-protect the key, then copy into dom0)

VM config

systemd units
Observe when running each (#1088):

  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

Fedora 41 bump

  • Examine output of qvm-ls | grep fedora-41-xfce: (Bump supported fedora version to 41 #1221)
  • fedora-41-xfce is present (TemplateVM), fedora-41-xfce-dvm is template for sys-net, sys-firewall
  • sd-fedora-41-dvm exists and has fedora-41-xfce template; sd-fedora-41-dvm is sys-usb template
  • qvm-check --quiet sd-fedora-40-dvm || echo "Not installed" shows "Not installed"

Correct packages

late sd-log setup (#1253)

Open terminal in sd-log:

  • and type ls ~/QubesIncomingLogs/. Various sd-* qubes should be listed
  • type tail -f ~/QubesIncomingLogs/sd-proxy/syslog.log
  • open terminal in sd-proxy and type sudo journalctl -f
  • on sd-proxy, open another teminal (to cause something to show in the systemctl journal)
  • Compare the output of the log in sd-log and in sd-proxy. They should be approximately the same.
Example of what it should look like:

Image

Uninstall (optional/one tester)
sdw-admin --uninstall then reboot or reload systemd daemon (sudo systemctl daemon-reload).

  • securedrop-related systemd units (user and system) are all removed. On the following dom0 commands it should show "... could not be found":
  • systemctl --user status sdw-notify.timer
  • systemctl --user status securedrop-user-xfce-icon-size
  • systemctl --user status securedrop-user-xfce-settings

@rocodes rocodes mentioned this issue Feb 27, 2025
8 tasks
@rocodes
Copy link
Contributor Author

rocodes commented Feb 27, 2025

We are superseding 1.1.0 with a hotfix release, 1.1.1, due to an issue uncovered in pre-release QA with the updater.

Testers, please follow this amended test plan:

  • Start with a production setup flipped to the yum-qa repos, as described in "pre-release qa" in this guide: https://github.com/freedomofpress/securedrop-workstation/wiki/QA-Testing#dom0-testing-securedrop-workstation-dom0-config. Instead of just dnf download, you may have to specify version 1.0.2 to download. If upgrade path: reboot your machine once you have provisioned. If clean install: just download the 1.1.1 rpm and install in dom0.
  • Be sure that, if you QA'd previously, you do not have the log file /var/log/qubes/update-fedora-41-xfce.log owned by root in place. (You may remove this file.)
  • At least one tester: please test from a machine that does not have fedora-41-xfce template preinstalled.
  • If upgrade path: Run the updater. Updater completes successfully. If clean install path: provision. Provisioning completes successfully.
  • Flip back to yum-qa repos in srv/salt and sd-default-config.yml again, following the wiki QA setup instructions. 🙃
  • Run the updater a second time (sdw-updater --skip-delta 0), or run the qubes GUI updater selecting fedora-41-xfce. Updates complete successfully.

@nathandyer
Copy link

nathandyer commented Feb 27, 2025

Just completed a successful clean install QA run on 1.1.1:

  • Start with a production setup flipped to the yum-qa repos, as described in "pre-release qa" in this guide: https://github.com/freedomofpress/securedrop-workstation/wiki/QA-Testing#dom0-testing-securedrop-workstation-dom0-config. Instead of just dnf download, you may have to specify version 1.0.2 to download. If upgrade path: reboot your machine once you have provisioned. If clean install: just download the 1.1.1 rpm and install in dom0.
  • Be sure that, if you QA'd previously, you do not have the log file /var/log/qubes/update-fedora-41-xfce.log owned by root in place. (You may remove this file.) (NA, clean install)
  • At least one tester: please test from a machine that does not have fedora-41-xfce template preinstalled. (NA, started from Qubes 2.4.2 with fedora-41-xfce installed and set to default template)
  • If upgrade path: Run the updater. Updater completes successfully. If clean install path: provision. Provisioning completes successfully.
  • Flip back to yum-qa repos in srv/salt and sd-default-config.yml again, following the wiki QA setup instructions. 🙃
  • Run the updater a second time (sdw-updater --skip-delta 0), or run the qubes GUI updater selecting fedora-41-xfce. Updates complete successfully.
  • Basic smoke tests. LGTM!

@zenmonkeykstop
Copy link
Contributor

  • Start with a production setup flipped to the yum-qa repos, as described in "pre-release qa" in this guide: https://github.com/freedomofpress/securedrop-workstation/wiki/QA-Testing#dom0-testing-securedrop-workstation-dom0-config. Instead of just dnf download, you may have to specify version 1.0.2 to download. If upgrade path: reboot your machine once you have provisioned. If clean install: just download the 1.1.1 rpm and install in dom0.
  • Be sure that, if you QA'd previously, you do not have the log file /var/log/qubes/update-fedora-41-xfce.log owned by root in place. (You may remove this file.)
  • At least one tester: please test from a machine that does not have fedora-41-xfce template preinstalled. CONFIRMED
  • If upgrade path: Run the updater. Updater completes successfully. If clean install path: provision. Provisioning completes successfully.
  • Flip back to yum-qa repos in srv/salt and sd-default-config.yml again, following the wiki QA setup instructions. 🙃
  • Run the updater a second time (sdw-updater --skip-delta 0), or run the qubes GUI updater selecting fedora-41-xfce. Updates complete successfully.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

No branches or pull requests

4 participants