Package: errands
Version: 46.2.8-1
Severity: important
Tags: security upstream
Forwarded: https://github.com/mrvladus/Errands/issues/401
X-Debbugs-Cc: Debian Security Team <[email protected]>

Having solicited informal opinions from the Debian security mailing list 
(attached), I'm filing this report to keep an eye on the issue. To summarize, 
Errands is able to synchronize a user's task and to-do list data using the 
CalDAV protocol, a superset of HTTP. Credentials may be retrieved from GNOME 
Online Accounts where setting up CalDAV is already possible, or information can 
be entered directly in Errands. This consists of a URL (usually HTTPS) and 
username/password authentication credentials. It is typical for major providers 
to use HTTP Basic authentication which sends credentials in plain form and 
relying on TLS to authenticate the server's identity and encrypt data in 
transit. In its source code, Errands explicitly specifies 
'ssl_verify_cert=False' unconditionally when using a Python CalDAV library. It 
appears this allows it to accept any certificate whatsoever, even from a 
malicious man-in-the-middle, without notice to the user.
The author doesn't remember why this was needed, but enabling certificate 
checking works fine for me with a server and my suspicion is the author had a 
particular service that wasn't doing things properly. Disabling this security 
check for all users unconditionally and without notice is not an appropriate 
fix for a compatibility issue. Any genuine client-side bug that would cause 
certificate verification to unduly fail is most likely in a dependency and is a 
concern to be separated from Errands.

The author rewrote Errands in C and development focus has shifted there. For 
Trixie at least, this needs to be handled. I've articulated the risks on the 
upstream issue to encourage the author to investigate but patching this 
downstream is trivial. To assess if breakage is likely, a detective might wish 
to check bug reports for the libraries that Errands depends on (namely the 
CalDAV one) to see if there are known shortcomings in TLS being handled 
correctly.

For whatever it's worth, the GNOME ecosystem has decided that disabling TLS 
certificate verification should never be done in legitimate usage and so (if I 
recall correctly) GLib/GIO and/or libsoup have been removing any parameters in 
their API that would allow this to be turned off or making then no-ops. As 
Errands is part of the GNOME Circle ecosystem and can integrate with GNOME 
Online Accounts, there is precedent for even a very firm stance on certificate 
verification.

-- System Information:
Debian Release: 13.2
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
'proposed-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.57+deb13-amd64 (SMP w/2 CPU threads; PREEMPT)
Kernel taint flags: TAINT_USER
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages errands depends on:
ii  dconf-gsettings-backend [gsettings-backend]  0.40.0-5
ii  gir1.2-adw-1                                 1.7.6-1~deb13u1
ii  gir1.2-goa-1.0                               3.54.5-1~deb13u1
ii  gir1.2-gtk-4.0                               4.18.6+ds-2
ii  gir1.2-gtksource-5                           5.16.0-1
ii  gir1.2-secret-1                              0.21.7-1
ii  gir1.2-xdp-1.0                               0.9.1-1
ii  python3                                      3.13.5-1
ii  python3-caldav                               1.3.9-1
ii  python3-gi                                   3.50.0-4+b1
ii  python3-pycryptodome                         3.20.0+dfsg-3

errands recommends no packages.

errands suggests no packages.

-- no debconf information
--- Begin Message ---
Hello,
Errands is a graphical planning and task organizer application that supports 
using CalDAV to synchronize tasks from a provider. CalDAV is a set of 
conventions for using HTTP to access and manage calendar and task data; it's 
similar to what IMAP is for email. Errands is independently developed but part 
of the broad GNOME Circle ecosystem.

I was browsing upstream issue reports for an unrelated reason and saw 
https://github.com/mrvladus/Errands/issues/401 which I'll crudely transcribe 
the dialogue of below:
[2025-08-15] powerjungle (reporter): "Is there a reason TLS certificate 
verification is disabled by default?"

Code snippet:
> Errands/errands/lib/sync/providers/caldav.py, Line 89
>       ssl_verify_cert=False,

Description:
> Doesn't seem like a safe approach. Why isn't there a checkbox at least for 
> the user to choose?
> I am aware of the rewrite [then-work-in-progress rewrite of Errands in C 
> instead of Python], but until then people would still be using the the 
> current python package in their distros.

Effectively, Errands hard-codes in its source to never attempt verification of 
the certificate. I'm not just referring to validation here like checking a CRL 
or OCSP, but even name validation, so there is no authentication at all and the 
user is not notified even when they explicitly give an https:// URL for the 
server. The author of Errands had this reply:
[2025-08-15] mrvladus (maintainer):
> I can't remember exactly, but I think it was breaking something so I had to 
> disable that.

I find this even more concerning than the average case of a client accepting 
any TLS certificate whatsoever, for these reasons:
 • Errands uses HTTP Basic or Digest authentication which is common for DAV 
clients, but it means TLS usage is absolutely essential with the password 
otherwise being sent in the clear.
 • The calendar and task data is quite revealing on its own; it may have 
information about one's residence, workplace, attachments, and obligations. 
Unlike much groupware, a to-do list application like this is often used to 
record one's own thoughts or priorities with no intention of them being visible 
to others.

Am I overreacting? If this is an issue worthy of being fixed in Trixie, I would 
appreciate if someone who is better with their words and making the risks 
understandable why this needs to be made a priority. Above all, I'm sending 
this mail here to gather opinions about etiquette and to learn where the bar is 
before making a "big deal" about something.

I'm merely an Errands user; I don't maintain the package or have a stake in it 
otherwise.
Thanks, Debian hive mind 😉

Attachment: signature.asc
Description: This is a digitally signed message part

Attachment: smime.p7s
Description: S/MIME cryptographic signature


--- End Message ---

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to