Commit Graph
4426 Commits
Author SHA1 Message Date
Kristoffer Dalby 151c852d04 go.mod: pin golang-lru/v2 to main for expirable.Close
v2.0.7 is the last tag; the TTL sweeper got Close only on main.

(cherry picked from commit 5f39a68b39, adapted: release branch go.mod and vendor hash)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 3d9031c075 CHANGELOG: document SSH acceptEnv fix
Updates #3559

(cherry picked from commit a9508935b9, adapted: moved to the 0.29.7 section)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby fd6547f249 integration: guard SSH acceptEnv forwarding
Updates #3559

(cherry picked from commit 52842f4c0d, adapted: 0.29 tailcfg names kept, nodecap for the new entry)
2026-10-30 10:33:17 +01:00
arkie f20366b3dd types: emit SSH environment capability by default
Fixes #3559

(cherry picked from commit 8cf43952af, adapted: nodecap names on 0.29's v1.104 baseline)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 93340a6b1b release: reject dirty sources and build artifacts
Fixes #3583

(cherry picked from commit beb1214926, adapted: drops the release branch's tidy -compat=1.27 hook)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 8651eb9b1a CHANGELOG: list the oss-scanner findings for 0.29.7
(cherry picked from commit c285eff776, adapted: merged into the release branch's 0.29.7 section)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby d116f2f000 testcapture: refuse golden captures that name no tool commit
It walks every testdata folder, so a new folder is covered too. Captures
taken since tscap refuses such builds are listed until taken again.

(cherry picked from commit 729464091e)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby e1c6cb9037 oidc: keep email_verified with the address it came with
Fixes ANT-2026-MX8FKG4K

(cherry picked from commit 208043c88d, adapted: only the new test appended)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 99d10b9b89 db, state: let only the delete that removed a node free its addresses
Fixes ANT-2026-NWTIBB02

(cherry picked from commit b5bebf9b32, adapted: unlock persistMu first on 0.29)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 4d0436128d state: drop registration locks once unused
The lock is taken before any credential check, so client-chosen machine
keys grew the map forever. Ref-count entries; delete at zero.

Fixes ANT-2026-ZC18AF82

(cherry picked from commit c9e9f72857)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby a4c0a097d3 types, auth, noise: let one request wait on each auth session
One verdict per session, so one waiter: the newest. A displaced one
returns at once (register error, SSH re-delegate), not at session end.
A waiter keeps only the follow-up URL and the cached registration.

Fixes ANT-2026-NM50ZP4N

(cherry picked from commit b833be283c, adapted: follow-up trimmed in 0.29's RegistrationHandler)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 1b7435c57f auth: check the follow-up's machine key before it waits
A session has one verdict; another machine holding the URL could take
it.

Fixes ANT-2026-NM50ZP4N

(cherry picked from commit 7892a8462c)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby bc3ac275b8 noise: time out stalled bodies and idle tunnels
The hijack drops the outer server's deadlines; any machine key gets a
tunnel.

Fixes ANT-2026-K903ZEUA

(cherry picked from commit 28959cb27c, adapted: 0.29 serves via http2.ServeConn, idle timeout set on http2.Server)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 3345493f92 auth, state: keep only hostname, OS and tags in pending registrations
The rest arrives with the first MapRequest. A relogin keeps the node's
current Hostinfo, endpoints and disco key; an oversized merge is a 400.

Fixes ANT-2026-RQS7JAPP

(cherry picked from commit 5a4d366ce1, adapted: inline auth path and OIDC error on 0.29)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby e56661c384 state: bound client reports of nodes loaded at startup
Rows stored before the bounds are trimmed the same way at load; a
Hostinfo still over budget is dropped until the node reports again.

Fixes ANT-2026-RQS7JAPP
Fixes ANT-2026-5B6KE87K
Fixes ANT-2026-KFCFFM34

(cherry picked from commit 4ce928411e, adapted: dropped main-only expiry UTC load and tests)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 52ba6a3a19 types, noise: bound the Hostinfo and endpoints a client reports
Keep the first 256 endpoints and 4096 routes; refuse longer hostnames,
too many tags, zoned endpoints and >64 KiB NetInfo or other Hostinfo.
The body limit counted wire bytes, not what NodeStore and peers keep.

Fixes ANT-2026-RQS7JAPP
Fixes ANT-2026-5B6KE87K
Fixes ANT-2026-KFCFFM34

(cherry picked from commit 2e563635d0, adapted: 0.29 RegistrationHandler closure, serveRegister test helper)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby be114c0d63 hscontrol: refuse a key expiry that cannot be encoded
handleRegister, the OIDC auth path and SetNodeExpiry refuse it. Expiries
are stored in UTC, which SQLite can read back, and loaded in UTC, as
PostgreSQL returns the server's zone. The v1 API answers 400.

Fixes ANT-2026-QMCAFJ1Q

(cherry picked from commit 15a8c7584e, adapted: gRPC ExpireNode instead of REST v1)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 15af45ca08 mapper: skip peers whose key expiry cannot be encoded
json.Marshal refuses a year outside [0,9999], so one stored expiry
failed every map with that node. TailNode and key patches send UTC, the
builder drops what fails and the boot scan names the node.

Fixes ANT-2026-QMCAFJ1Q

(cherry picked from commit e3c1bfd68e, adapted: 0.29 imports)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby c8fb25d451 state: give another user's key on a tagged machine a new device
Only a key that speaks for a tagged node re-authenticates it: a tagged
key, or one of the user it was tagged from. Another user's key or login
adds that user's own device, or only wakes the node under its node key.

Fixes ANT-2026-AWGRB7O1

(cherry picked from commit e1de83cbdf, adapted: inline PAK re-register path, no servertest compat table)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby e6219cd106 state: need a valid pre-auth key to re-register an expired tagged node
Fixes ANT-2026-LYVGXVSW

(cherry picked from commit e67ef8619a, adapted: inline PAK checks on 0.29, test ported)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 2852b65828 state: never serve a single address inside the node ranges
Such a route names a node, not a subnet: it stays approved and listed
but no viewer gets it. Via inclusions skip the election, so the rule
sits on everything RoutesForPeer returns.

Fixes ANT-2026-MLP8ZR5T

(cherry picked from commit 47d82023e7, adapted: only TestServesRoute in config_test, CHANGELOG dropped)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 99cb5c1863 servertest: add login, profile, restart and register log helpers
TryNewClient returns a refused login; Login covers profile switches and
interactive logins approved through ApproveAuth; RegisterAttempts reads
the client's register log.

(cherry picked from commit 5c2cf6ed6f, adapted: ApproveAuth via State, no v1 REST in servertest)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby f1932077bb prek: exempt step captures from the large file check
They keep a netmap per node per step and must stay as recorded.

(cherry picked from commit aa40174989)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby c848c5a1a1 servertest: add relogin and auth key helpers
Relogin builds a new Direct on the same machine key and persisted
node key, as tailscaled does on up --auth-key; force rotates the key.

(cherry picked from commit 1716eece74, adapted: adds main's startPollLoop and resetNetmapState)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 6e0d520cb7 policy/v2, servertest, hscontrol: add tailnet overlap route captures
Routers announcing tailnet addresses, approved by policy, admin key and
devices:routes token; replayed through policy, map stream and v1/v2
APIs.

Updates ANT-2026-MLP8ZR5T

(cherry picked from commit 286d6ea05d, adapted: no v1/v2 API tests on 0.29)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 7a51c8f30a servertest: compare router self routes with captures
Replays ten routes captures through the mapper too; SaaS's address
ranges for "*" now resolve. Known gaps are skip entries per node.

(cherry picked from commit 59f7c558a6)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 9ce0b28456 servertest: compare user profiles in via captures
Self and peer profiles, by login and display name. A tagged self gets
its own profile in SaaS; listed as a skip entry until headscale matches.

(cherry picked from commit 32652326b9)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 46478663b9 servertest: list passing via captures
Fourteen committed via captures already match at map level; run them.

(cherry picked from commit 7d787867c9)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 1d11be02b3 testcapture: record multi-step captures and API error detail
Optional Steps, NodeIDs, error data and login state; v1 files unchanged.
Register log and raw map frame parsers; Write refuses auth keys and
login URLs.

(cherry picked from commit 1e397e8cd5, adapted: adds tailscale.com/client/tailscale/v2)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby c0a51b2cbd .gitattributes: mark golden data as generated
GitHub collapses generated files in pull request diffs.

(cherry picked from commit 0dd9079d0b)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 5083559016 CHANGELOG: document the 0.29.7 security and patch release
Updates #3571, #3583, #3601
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 044d8f5a01 go.mod: update tailscale.com to v1.104.4
Bounds the DERP HTTP client's error body read. DERP region IDs are now
tailcfg.DERPRegionID.
(cherry picked from commit 3aece6501, adapted)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 3bb6d3a756 integration/tsic: drop unused watchIPN
ipn.Notify.NetMap is gone in tailscale.com v1.104.
(cherry picked from commit 89be098f7, adapted)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 718cbc3b04 go.mod: tidy for Go 1.27
goreleaser's tidy hook rewrote go.mod, stamping 0.29.6 as +dirty.

Fixes #3583
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 02b1528025 policy: pin SSH forwarding behavior and recommend upgrades
Updates #3601
(cherry picked from commit 998c4b061, CHANGELOG dropped)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 2d881c5e56 noise: restrict metrics to the metrics listener
Updates #3571
(cherry picked from commit cd66e2414, CHANGELOG dropped, slices import added)
2026-10-30 10:33:17 +01:00
Kristoffer Dalby 9318ce4df2 release: retry existing tags without the Docker downgrade 2026-10-24 09:27:09 +00:00
Kristoffer Dalby a2b1d78639 CHANGELOG: set the 0.29.6 release date v0.29.6 2026-10-24 09:21:24 +00:00
Kristoffer Dalby ee74ce4568 CHANGELOG: document the 0.29.6 security and patch release
Updates #3579 and #3549.
2026-10-24 11:15:00 +02:00
Kristoffer Dalby 941d7ff9ae poll: end stopped map sessions without resetting active streams
Backport 371674de9 and 73dd39982 from #3575.
2026-10-24 11:15:00 +02:00
Kristoffer Dalby f1499ce280 mapper: avoid refiltering broadcast recipients
Backport 648905480 from #3568.
2026-10-24 11:15:00 +02:00
Kristoffer Dalby c32e8e4c97 db: return database-open errors for 0.29.6
Backport #3496.
2026-10-24 11:15:00 +02:00
Kristoffer Dalby c6181989b1 policy: backport peer-map optimizations for 0.29.6
Backport #3556 and #3557. Updates #3549.
2026-10-24 11:15:00 +02:00
Kristoffer Dalby 981f2eb1b5 lint: retain the exhaustruct exclusion with the updated toolchain 2026-10-24 11:15:00 +02:00
Kristoffer Dalby f2b5f45836 all: prepare 0.29.6 security updates
Updates #3579
2026-10-24 11:15:00 +02:00
Kristoffer Dalby 0f7d1e536b docs: warn about audit-log attributes with logtail disabled
Updates #3522

(cherry picked from commit cced8a0ab, docs only)
(cherry picked from commit 7d8cfe13f)
v0.29.5
2026-10-13 14:35:52 +02:00
Kristoffer Dalby fb619274a9 mkdocs: bump version 2026-10-13 14:35:52 +02:00
Kristoffer Dalby d0cb5a5a44 go.mod: update dependencies
chi v5.4.0, x/sync v0.24.0, creachadair/command v0.2.12; no code changes.

(cherry picked from commit 641a8af640, adapted)
2026-10-13 14:35:52 +02:00
Kristoffer Dalby 755e6a1e2d all: build with Go 1.26.8
Docker images take 1.26.9; nixpkgs 26.05 ships 1.26.8.
Go 1.27 needs the newer tailscale.com that main carries.
2026-10-13 14:35:52 +02:00
github-actions[bot] ceac1c14cd Dockerfile: bump rust 1.95-trixie to 1.99-trixie
(cherry picked from commit 911f57792f, adapted from 1.98)
2026-10-13 14:35:52 +02:00