16:00:16 #startmeeting tor anti-censorship meeting 16:00:16 Meeting started Thu Sep 4 16:00:16 2025 UTC. The chair is meskio. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:00:16 Useful Commands: #action #agreed #help #info #idea #link #topic. 16:00:21 hello everybody!!!! 16:00:26 here is our meeting pad: https://pad.riseup.net/p/r.9574e996bb9c0266213d38b91b56c469 16:00:28 ask me in private to give you the link of the pad to be able to edit it if you don't have it 16:00:30 I'll wait few minutes for everybody to add you've been working on and put items on the agenda 16:00:45 hi~hi~ 16:02:04 can I remove the topic from last week about webtunnel setuid or is there something more to discuss there? 16:02:21 please keep it for the moment 16:02:25 ok 16:02:37 it is connected to the first topic of this week 16:02:42 let's start with the first one in the list then 16:02:57 yes! 16:03:06 Check webtunnel bridge counts again 16:03:36 (sorry, I haven't read the logs of the last meeting yet) 16:03:42 last week we discussed whether we wants to have a setuid binary in webtunnel bridge container image to automate the steps to fix state fike permissions 16:04:02 last week we discussed whether we wants to have a setuid binary in webtunnel bridge container image to automate the steps to fix state file permissions 16:04:59 on 2025-08-21 there was 3001 webtunnel bridge related logs 16:05:19 and on 2025-09-02 there was 2900 webtunnel bridge related logs 16:05:40 ohhh, I see 16:06:10 I tend to make containers that doesn't force a UID from inside, so users can set them from outside if they want by docker run --user UID 16:06:43 I forgot we were setting the user that runs this container 16:06:51 yes, in this case, the docker compose file does have uid set 16:07:02 I see we do the same in obfs4-bridge 16:07:05 and sadly due to debian version upgrade, the uid was changed 16:07:11 aha, meskio maybe you know a general docker-native solution to this problem? should we be doing it a different way? 16:07:12 fun 16:07:29 and created a file permission issue 16:07:52 dcf1: I'm not sure how to do it so it will upgrade gracelly 16:07:55 I did pushed an update to fix the uid to the numbers before debian upgrade 16:08:09 I did pushed an update to pin the uid to the numbers before debian upgrade 16:08:10 meskio: ok 16:08:23 but it will not fix permission if it is already broken 16:08:33 which would require a setuid binary to do so 16:08:48 which we don't wants to do unless it is strictly necessary 16:09:03 we see there is still a maybe 2.4% loss of bridge 16:09:24 we could detect the problem and print out instructions to fix it manually 16:09:49 but with your fix, will everybody be affected or only the ones that upgraded to the broken one before your fix? 16:09:50 yes, we have provided that instruction already 16:10:43 there is an email from gus about fixing permissions manually titled: "[tor-relays] [bridge operators] Fix required for WebTunnel docker bridges" 16:11:36 with the fix, only users who installed the bridge while the image has a unpinned uid is affected 16:11:45 we could use this oportunity to remove the `USER` pinning in the dockerfile, but I'm not sure how much this will break extra things 16:11:57 or those who have manually chowned 16:12:21 I think we don't have USER pinning in docker file 16:12:34 the USER instruction is done in docker compose 16:12:39 let's me check again 16:12:56 https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel/-/blob/4a6914d6962b813cd3f09a4faed8643d8dafee8c/Dockerfile 16:13:16 https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel/-/blob/4a6914d6962b813cd3f09a4faed8643d8dafee8c/release/container/docker-compose.yml 16:13:34 ohh, nice, I see 16:13:35 yes, the switch user instruction is in the docker compose file, not docker file 16:14:39 so our choice is about whether to deploy the setuid binary or not 16:14:41 https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel/-/merge_requests/33 16:14:49 we could hardcode a UID number in the docker-compose, but that will still not fix the problem for existing deployments 16:15:53 yes... we have already hardcoded that UID in docker compose as well 16:16:17 but we didn't force user to run container with uid=101 16:16:26 I think is not that bad idea to do the setuid, most containers around assume root permitions 16:16:39 https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel/-/blob/4a6914d6962b813cd3f09a4faed8643d8dafee8c/Dockerfile#L28 16:16:52 anyway the tor and webtunnel and other processes will not have root permitions, only the script that fixes them, isn't it? 16:17:13 yes, only the script will have that permission via sudo 16:18:56 if c-tor have an exploit, and attackers gained interactive shell, it might use exploits in sudo or this script to gain root 16:19:25 (or if webtunnel binary have an exploit ) 16:20:08 I think this is not that bad as a solution 16:21:48 okay, so do we wants to merge and deploy this, or wait to see if the bridge count can recover further? 16:22:22 so we might have lost 100 bridges 16:22:52 I would deploy it, hopefully we recover those bridges 16:22:54 It is not really bridges counts per say 16:23:05 and we can remove the setuid in a month or something 16:23:06 it was kind of tick message from bridges 16:23:29 ahh, I see 16:23:38 oh yes, we can always remove this later 16:23:44 true, we don't have 3k webtunnel bridges 16:24:30 but yes, we could merge this and then remove it in maybe 6 weeks 16:24:44 +1 16:25:12 I will proceed with this unless there is any objects now.... 16:25:22 BTW, because the container image is unsigned 16:25:47 this don't really create something that people can mount a downgrade attack 16:26:17 since the container's content is not signature pinned in the first place 16:26:47 yes 16:27:12 AFAIK docker hub only signs "official images", and they sign them on the server side 16:27:24 I don't think you can push any kind of signatures into docker 16:27:34 but I haven't look into this for years, maybe now is different 16:27:50 there are some custom solutions, but we are not using them 16:28:08 https://docs.sigstore.dev/cosign/signing/signing_with_containers/ 16:29:04 EOF 16:29:22 interesting, I wonder how many people uses this kind of things 16:29:40 anyway, we don't need to figure out image signatures now 16:29:46 we have a solution for this problem now 16:29:48 thanks 16:29:55 anything more for today? 16:30:51 nothing from me 16:31:15 cool, I guess we are done 16:31:23 just a reminder that we have a reading group next week 16:31:40 talk to you next week 16:31:42 #endmeeting