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

Either the docs for Qubes CTAP proxy are incomplete/wrong or qubes-ctap-proxy doesn't work. #9074

Closed
xyhhx opened this issue Mar 31, 2024 · 2 comments
Labels
affects-4.1 This issue affects Qubes OS 4.1. C: CTAP/U2F proxy Client to Authenticator Protocol (CTAP) / Universal 2nd Factor (U2F) proxy C: doc eol-4.1 Closed because Qubes 4.1 has reached end-of-life (EOL) P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. T: bug Type: bug report. A problem or defect resulting in unintended behavior in something that exists.

Comments

@xyhhx
Copy link

xyhhx commented Mar 31, 2024

Qubes OS release

R4.1.2

Brief summary

I'm following the documentation to set up the CTAP proxy, but they're either incomplete or the proxy isn't working.

I have a non-default USB qube.

Steps to reproduce

(The following steps assume that disp-sys-usb is the USB qube)

  1. Follow the steps in the CTAP Proxy documentation, including Advanced usage: per-qube key access and Non-default USB qube name

    1. Install qubes-ctap-dom0 in dom0
    2. Install qubes-ctap in the templates for both the USB qube and the client qube
    3. Clear /etc/qubes-rpc/policy/u2f.Authenticate
    4. Add a custom policy according to the per-qube access section
    policy.RegisterArgument +u2f.Authenticate disp-sys-usb @anyvm allow target=dom0
    
    1. In the client qube's template, disable the default CTAP proxy service and enable one specifying disp-sys-usb
    sudo systemctl disable qubes-ctapproxy
    sudo systemctl enable [email protected]
    
    1. Shutdown templates and restart all relevant qubes
    2. Try adding the hardware key to an account somewhere

Expected behavior

The U2F/CTAP proxy should forward the registration/authentication to disp-sys-usb

Actual behavior

Nothing happens.

More questions:

  1. In the Installation section, it says to install qubes-ctap in Fedora and/or Debian templates, then to restart sys-usb and any qubes that use the proxy. Do we install qubes-ctap in the USB qube's template too? It's unclear. If so, do we also have to enable the qubes-ctap-proxy service?

  2. The the Advanced usage: per-qube key access section, it says to clear /etc/qubes-rpc/policy/u2f.Authenticate but makes no mention of /etc/qubes-rpc/policy/u2f.Register (which I see on dom0). It also makes no mention of the u2f.Register policy anywhere, including in the advised 30-user-ctapproxy.policy file. Is that intentional?

  3. The the Advanced usage: per-qube key access section, the custom policy described for allowing the example twitter qube to access the CTAP token in sys-usb is:

    policy.RegisterArgument +u2f.Authenticate sys-usb @anyvm allow target=dom0
    

    Is this correct? This seems to allow to any VM.

  4. In the Non-default USB qube name section, the service name is now qubes-ctapproxy whereas earlier the service enabled via qvm-service is qubes-ctap-proxy. This is confusing.

  5. In the Non-default USB qube name section, it says

    Do not forget to change the sys-usb qube name in the policy /etc/qubes/policy.d/30-user-ctapproxy.policy.

    But this assumes that you followed the steps in Advanced usage: per-qube key access. If you didn't, presumably you have to edit both u2f.Authenticate and u2f.Register in the default policies? I am once again confused by no mention of u2f.Register

Let me rephrase the previous questions to be more concise:

  1. In which qubes and/or templates must we enable qubes-ctap-proxy from Qube Manager?
  2. In which qubes and/or templates must we enable the qubes-ctapproxy service (with or without the @USB_QUBE suffix)?
  3. How do we handle the u2f.Register policy?
  4. For disposable VMs, do we do anything differently?
@xyhhx xyhhx added P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. T: bug Type: bug report. A problem or defect resulting in unintended behavior in something that exists. labels Mar 31, 2024
@xyhhx
Copy link
Author

xyhhx commented Mar 31, 2024

There are another two policy files that aren't mentioned in the docs anywhere:

  • /etc/qubes-rpc/policy/ctap.ClientPin
  • /etc/qubes-rpc/policy/ctap.GetInfo

@andrewdavidwong andrewdavidwong added C: doc needs diagnosis Requires technical diagnosis from developer. Replace with "diagnosed" or remove if otherwise closed. affects-4.1 This issue affects Qubes OS 4.1. C: CTAP/U2F proxy Client to Authenticator Protocol (CTAP) / Universal 2nd Factor (U2F) proxy labels Mar 31, 2024
@andrewdavidwong andrewdavidwong added eol-4.1 Closed because Qubes 4.1 has reached end-of-life (EOL) and removed needs diagnosis Requires technical diagnosis from developer. Replace with "diagnosed" or remove if otherwise closed. labels Dec 7, 2024
Copy link

github-actions bot commented Dec 7, 2024

This issue is being closed because:

If anyone believes that this issue should be reopened, please leave a comment saying so.
(For example, if a bug still affects Qubes OS 4.2, then the comment "Affects 4.2" will suffice.)

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Dec 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
affects-4.1 This issue affects Qubes OS 4.1. C: CTAP/U2F proxy Client to Authenticator Protocol (CTAP) / Universal 2nd Factor (U2F) proxy C: doc eol-4.1 Closed because Qubes 4.1 has reached end-of-life (EOL) P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. T: bug Type: bug report. A problem or defect resulting in unintended behavior in something that exists.
Projects
None yet
Development

No branches or pull requests

2 participants