You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
*[release-22.0] fix(backup): propagate file hashes to manifest after retry (#19336) [#19343](https://github.com/vitessio/vitess/pull/19343)
6
+
#### Docker
7
+
*[release-22.0] docker: install mysql-shell from Oracle repo and fix shellcheck warnings (#19456) [#19463](https://github.com/vitessio/vitess/pull/19463)
8
+
#### Online DDL
9
+
*[release-22.0] vreplication: fix infinite retry loop when terminal error message contains binary data (#19423) [#19437](https://github.com/vitessio/vitess/pull/19437)
10
+
#### Query Serving
11
+
*[release-22.0] vtgate: defer implicit transaction start until after query planning (#19277) [#19341](https://github.com/vitessio/vitess/pull/19341)
12
+
#### VDiff
13
+
*[release-22.0] Address a few VDiff concerns (#19413) [#19447](https://github.com/vitessio/vitess/pull/19447)
14
+
#### VReplication
15
+
*[release-22.0] Bug fix: Add missing db_name filters to vreplication and vdiff queries #19378[#19430](https://github.com/vitessio/vitess/pull/19430)
16
+
*[release-22.0] Normalize the --on-ddl param for MoveTables (#19445) [#19451](https://github.com/vitessio/vitess/pull/19451)
17
+
#### VTGate
18
+
*[release-22.0] vtgate: Add bounds check in `visitUnion` for mismatched column counts (#19476) [#19482](https://github.com/vitessio/vitess/pull/19482)
19
+
#### VTOrc
20
+
*[release-22.0] vtorc: Add a timeout to `DemotePrimary` RPC (#19432) [#19449](https://github.com/vitessio/vitess/pull/19449)
21
+
#### schema management
22
+
*[release-22.0] sidecardb: make ALTER TABLE algorithm version-aware (#19358) [#19403](https://github.com/vitessio/vitess/pull/19403)
23
+
### CI/Build
24
+
#### Build/CI
25
+
*[release-22.0] Consolidate CI test workflows (#19259) [#19272](https://github.com/vitessio/vitess/pull/19272)
26
+
*[release-22.0] Run tests with gotestsum (#19076) [#19292](https://github.com/vitessio/vitess/pull/19292)
27
+
*[release-22.0] Fix go upgrade tool (#19290) [#19298](https://github.com/vitessio/vitess/pull/19298)
28
+
*[release-22.0] Switch gotestsum output format (#19215) [#19302](https://github.com/vitessio/vitess/pull/19302)
29
+
*[release-22.0] Build boostrap image for local/region example CI (#19310) [#19316](https://github.com/vitessio/vitess/pull/19316)
30
+
*[release-22.0] Don't add "Skip CI" label for Go upgrade PRs (#19307) [#19322](https://github.com/vitessio/vitess/pull/19322)
31
+
*[release-22.0] Explicitly pass local image tags in example CI (#19320) [#19325](https://github.com/vitessio/vitess/pull/19325)
32
+
*[release-22.0] Add lite image build CI job (#19321) [#19329](https://github.com/vitessio/vitess/pull/19329)
33
+
*[release-22.0] try to fix setup mysql (#19371) [#19375](https://github.com/vitessio/vitess/pull/19375)
34
+
*[release-22.0] CI: Fix workflows that install xtrabackup (#19383) [#19384](https://github.com/vitessio/vitess/pull/19384)
35
+
#### Docker
36
+
*[release-22.0] Build bootstrap image locally in ci (#19255) [#19265](https://github.com/vitessio/vitess/pull/19265)
*[release-22.0] vtgate: fix handling of session variables on targeted connections (#19318) [#19334](https://github.com/vitessio/vitess/pull/19334)
42
+
### Dependencies
43
+
#### Docker
44
+
*[release-22.0] Upgrade the Golang version to `go1.24.13`[#19305](https://github.com/vitessio/vitess/pull/19305)
45
+
### Enhancement
46
+
#### VTGate
47
+
*[release-22.0] Performance: use `IsSingleShard()` check in `pushDerived` instead of just `engine.EqualUnique` opcode (#18974) [#19345](https://github.com/vitessio/vitess/pull/19345)
48
+
### Release
49
+
#### Build/CI
50
+
*[release-22.0] Code Freeze for `v22.0.4`[#19509](https://github.com/vitessio/vitess/pull/19509)
51
+
#### Documentation
52
+
* Add release summary for v22.0.4 [#19508](https://github.com/vitessio/vitess/pull/19508)
53
+
#### General
54
+
*[release-22.0] Bump to `v22.0.4-SNAPSHOT` after the `v22.0.3` release [#19284](https://github.com/vitessio/vitess/pull/19284)
55
+
### Security
56
+
#### Backup and Restore
57
+
*[release-22.0] Restore: make loading compressor commands from `MANIFEST` opt-in (#19460) [#19473](https://github.com/vitessio/vitess/pull/19473)
58
+
*[release-22.0]`backupengine`: disallow path traversals via backup `MANIFEST` on restore (#19470) [#19477](https://github.com/vitessio/vitess/pull/19477)
59
+
*[release-22.0]`mysqlshellbackupengine`: use `fileutil.SafePathJoin(...)` to build path (#19484) [#19490](https://github.com/vitessio/vitess/pull/19490)
60
+
#### VTTablet
61
+
*[release-22.0]`filebackupstorage`: use `fileutil.SafePathJoin` for all path building (#19479) [#19480](https://github.com/vitessio/vitess/pull/19480)
62
+
*[release-22.0]`vttablet`: harden `ExecuteHook` RPC and backup engine flag inputs (#19486) [#19500](https://github.com/vitessio/vitess/pull/19500)
63
+
### Testing
64
+
#### Build/CI
65
+
*[release-22.0] Generate race unit tests (#19078) [#19295](https://github.com/vitessio/vitess/pull/19295)
The external decompressor command stored in a backup's `MANIFEST` file is no longer used at restore time by default. Previously, when no `--external-decompressor` flag was provided, VTTablet would fall back to the command specified in the `MANIFEST`. This posed a security risk: an attacker with write access to backup storage could modify the `MANIFEST` to execute arbitrary commands on the tablet.
15
+
16
+
*Please note that this is a breaking change.* Starting in v22.0.4, the `MANIFEST`-based decompressor is ignored unless you explicitly opt in with the new `--external-decompressor-use-manifest` flag. If you rely on this behavior, add the flag to your VTTablet configuration, but be aware of the security implications.
17
+
18
+
See [#19460](https://github.com/vitessio/vitess/pull/19460) for details.
19
+
20
+
### Prevent Path Traversals Via Backup MANIFEST Files On restore
21
+
22
+
This is a fix for the following security advisory and associated CVE
We now prevent a common [Path Traversal attack](https://owasp.org/www-community/attacks/Path_Traversal) that someone with write access to backup storage could use to escape the target restore directory and write files to arbitrary filesystem paths via modifications to the `MANIFEST`.
28
+
29
+
See [#19470](https://github.com/vitessio/vitess/pull/19470) for details.
30
+
31
+
------------
32
+
The entire changelog for this release can be found [here](https://github.com/vitessio/vitess/blob/main/changelog/22.0/22.0.4/changelog.md).
33
+
34
+
The release includes 37 merged Pull Requests.
35
+
36
+
Thanks to all our contributors: @app/vitess-bot, @mattlord, @vitess-bot
0 commit comments