tailscale / tailscale/tailscale

Services shows all services on shared device, even when blocked by ACL when using “autogroup:member”.

Open
#10,431 2 comments 0 reactions 0 assignees View on GitHub
fr L1 Very few P1 Nuisance T0 New feature
Dominant language
Go
Stars
36.5k
Forks
3.2k
Avg merge
2d 3h
Merged PRs (30d)
123

Description

### What is the issue?

### Expected Behaviour:

1. Any node on my tailnet can access any other node on it.
2. All services on my tailnet are shown on https://login.tailscale.com/admin/services
3. b@example.com can only access port 8000 on a device shared with them.
4. b@example.com Services page will list their services plus port 8000 on my device X

### Actual Behaviour:

1. Any node on my tailnet can access any other node on it.
2. All services on my tailnet are shown on https://login.tailscale.com/admin/services
3. b@example.com can only access port 8000 on a device shared with them.
4. b@example.com Services page lists their services **plus ports 22,53,631 and 8000** on my device X.

### Other Observations:

**Changing the ACL to:**
```
// Access control lists.
"acls": [
{"action": "accept", "src": ["a@example.com"], "dst": ["*:*"]},
{"action": "accept", "src": ["b@example.com"], "dst": ["*:8000"]},
],
```
Generates the expected behaviour.

**Changing the ACL to:**
```
// Access control lists.
"acls": [
{"action": "accept", "src": ["autogroup:shared"], "dst": ["*:8000"]},
],
```
Correctly allows only b@example.com to access port 8000 on the shared device. But incorrectly prevents it from being listed on b@examples.com services page. I would also expect that no services be listened on my services page but some are.

**Changing the ACL to:**
```
// Access control lists.
"acls": [
{"action": "accept", "src": ["autogroup:member"], "dst": ["*:*"]},
],
```
Correctly allows only a@example.com to access anything. But incorrectly allows b@examples.com to list all services on the shared device on the services page.

### Guess about the cause:
The firewall seems to be correctly handling the ACL. However, the back end generating the services page does not correctly interpret the ACL mixed up autogroups member and shared. Resulting in some information leakage and difficulty diagnosing configuration issues.

### Steps to reproduce

**Setup:**
A device X on my tailnet a@example.com is running services on ports 22,53,631 and 8000. It is shared to b@example.com.
The ACL is:
```
// Access control lists.
"acls": [
{"action": "accept", "src": ["autogroup:member"], "dst": ["*:*"]},
{"action": "accept", "src": ["autogroup:shared"], "dst": ["*:8000"]},
],
```

### Are there any recent changes that introduced the issue?

_No response_

### OS

Linux, Windows

### OS version

Windows 10, Ubuntu 20.04

### Tailscale version

1.54.0

### Other software

_No response_

### Bug report

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.