Skip to content

Releases: Devolutions/devolutions-gateway

v2023.1.3

17 Mar 02:18
aba1c6c
Compare
Choose a tag to compare

Bug Fixes

Features

v2023.1.2

13 Mar 21:16
Compare
Choose a tag to compare

Improvements

  • dgw: size-based log rotation (#393) (e3acafcfcd) (DGW-34)

    Set a maximum size of 3 MB for each file and a maximum of 10 log files.
    With this change, Devolutions Gateway should never consume more than 30 MB for its logs.

  • pwsh: sort certification chain from leaf to root (#394) (f7ff93c6df) (DGW-80)

  • installer: improved error handling in Windows installer (#397) (2766e5fffe) (DGW-78)

    PowerShell configuration commands are now executed as custom actions instead of WixSilentExec.
    Errors are tracked and, if the installer is running with UI, an appropriate error message is shown to the user.

    PowerShell command output is redirected to a temporary file; in the case of an error we provide the user the path to that file.
    A general command execution error will display a string error value.

    Custom actions are refactored slightly for consistency and readability:

    • Internal functions now only return void, BOOL, or HRESULT where possible. Errors are always handled as HRESULT and other results (e.g. Win32 error codes, LSTATUS, null references) are converted to HRESULT and handled with the different WiX macros (e.g. ExitOnWin32Error).
    • Consolidate on WixGetProperty instead of MsiGetProperty and be careful to release the resulting strings (ReleaseStr)
    • Consolidate on nullptr instead of NULL
  • installer: rollback on error in Windows installer (#397) (2766e5fffe) (DGW-76)

    For first time installs, if the installation fails, files that may have been created by the configuration process are cleaned up.

v2023.1.1

23 Feb 01:19
ef374f6
Compare
Choose a tag to compare

Improvements

  • dgw: better TLS leaf certificate public key extracting (#390) (a4dec08e23)

    Use x509-cert crate to extract the public key from the leaf
    TLS certificate. x509-cert supports more certificates.

Build

v2023.1.0

14 Feb 19:31
aa480cc
Compare
Choose a tag to compare

Features

  • dgw: clean path PDU extension for RDP (3bc0643818) (ARC-109)

  • installer: show *.cer when browsing for certificate files (#383) (2de4a3880d)

    .cer is another popular extension for certificate files.

  • jetsocat: file-based pipes (#385) (62394d3b48)

    • write-file://<PATH>: write file at the specified location
    • read-file://<PATH>: read wile at the specified location
  • dgw: add service version to health check JSON response (d9f5472120)

Bug Fixes

  • jetsocat: use rustls-native-certs on macOS and Linux (#382) (7305ce42be)

    Let rustls use the platform’s native certificate store.

Build

Continuous Integration

  • jetsocat: enable hardened runtime on macOS (#378) (84b5c33b47)

  • jetsocat: build the jetsocat nuget in package.yml (#380) (2e0d0eef4d)

    Build the jetsocat nuget package as part of the packaging workflow (instead of the old standalone workflow, which just took the latest release from GitHub).

    If running the package workflow manually, the version number of the package may be specified; else it defaults to the current date.

  • jetsocat: add Linux binary to nuget package (#384) (8a74ff86ca)

v2022.3.4

16 Jan 20:56
Compare
Choose a tag to compare

Bug Fixes

  • pwsh: nil UUID when creating an empty DGatewayConfig (#372) (370ed02947) (DGW-73)

    Without this patch, the nil UUID is used as the "missing" value instead of $null.

  • installer: ensure default config on install, properly set access URI host (a506c871ee) (DGW-72)

    Ensures a default config is created using the Devolutions Gateway binary before applying "Configure now".

  • installer: avoid Unicode char literals (#376) (8d94f94b81) (DGW-74)

    Unicode character literals in source files can be problematic, depending on the editor and encoding.
    Instead, avoid the issue by masking the character with an asterisk instead of a Unicode "bullet".

Build

Documentation

Features

  • dgw: add Telnet protocol variant (b89d553095) (DGW-70)

    This change is making possible to omit the port in the target host
    field. The Telnet default port will be inferred as appropriate.

v2022.3.3

13 Dec 15:14
ea15adb
Compare
Choose a tag to compare

Improvements

  • dgw: set default TCP port to 8181 (#364) (9df3a0e) (DGW-66)

  • Normalize file extensions (#367) (5d26d73) (DGW-67)

    By convention:

    • .pem -> public key
    • .key -> private key
    • .crt -> certificate

    Note that this is merely a convention, not a standard, and file openers
    should be able to select a .key file when choosing a public key (through
    the drop-down menu typically)

  • installer: start the Gateway service at install time (#363) (b07ccd4)

Bug Fixes

v2022.3.2

25 Nov 20:44
3c04388
Compare
Choose a tag to compare

Improvements

  • installer: install service as "Local Service" again (fewer permissions) (#353, #354)
  • jetsocat: automatically clean old log files (#346) (d032530)
  • dgw: IPv6 support (#350) (d591085)
  • dgw: support for full TLS certificate chain (#359) (ee1f560)

Features

  • installer: enable configuration of Devolutions Gateway via installer UI on Windows (#348) (6392ed9)

Build

v2022.3.1

03 Oct 18:16
Compare
Choose a tag to compare

Improvements

Features

  • dgw: extend subkey capabilities to KDC tokens (#334) (cdc53d0)

    With this change, a subkey is allowed to sign a short-lived KDC token.

Build

  • jetsocat-nuget: add win-arm64 to nuget package (#339) (2a676ca)

v2022.3.0

23 Sep 13:07
f50c682
Compare
Choose a tag to compare

Bug Fixes

  • dgw: revert service as "Local Service" (c4f8d24)

  • dgw: Content-Type header present twice for Json responses (#315) (c0976d8)

    Indeed, Content-Type is a "singleton field": a single member is anticipated as the field value.

    RFC9110 says:

    Although Content-Type is defined as a singleton field,
    it is sometimes incorrectly generated multiple times,
    resulting in a combined field value that appears to be a list.
    Recipients often attempt to handle this error by using
    the last syntactically valid member of the list, leading to
    potential interoperability and security issues if different
    implementations have different error handling behaviors.

  • jmux-proxy: properly cancel proxy task (#327) (f62143e)

    Previously, JMUX proxy task wasn't properly shut down because tokio
    tasks are detached by default (similar to std::thread::spawn). This
    adds a helper wrapper to explicitely specify whether a task should be
    joined or detached.

Features

  • OpenAPI document and auto-generated C# and TypeScript clients

  • dgw: retrieve KDC token from the path (f9b66c1)

  • dgw: subkey tokens (#287) (bebee0e)

  • dgw: support for CORS calls (#288) (388b1f6)

  • dgw: expose gateway ID in configuration endpoint (f15d33a)

  • dgw: add general claim jet_gw_id (#293) (7a22ea1)

    When this claim is specified, a given token can only be used on a Gateway with the very same ID.

  • dgw: wildcard scope tokens (#294) (1c98c15)

  • dgw: config pushing endpoint (8ff1ebe)

  • dgw: lossless and simpler config DTO (ba68301)

  • dgw: subscriber API (a80282e)

  • dgw: add --config-init-only cli option (89cd2b7)

  • dgw: limit JMUX wildcard addresses (#302) (8a95130)

    The same port must be used.

  • dgw: jet/health endpoint now returns Gateway identity

    The Accept HTTP header must be set to application/json for this.

  • powershell: update module (71e15a4)

    • Deprecate PrivateKeyFile and CertificateFile in favor of
      TlsPrivateKeyFile and TlsCertificateFile. This change is backward
      compatible (older naming are recognized by cmdlets).

    • Add Id, Subscriber and SubProvisionerPublicKey to config class.

    • Allow Set-DGatewayConfig to set Id, Subscriber and
      SubProvisionerPublicKey values.

  • dgw: forced session termination support (16c119b)

    This adds the endpoint POST /jet/session/<id>/terminate.
    This is similar to what we had back in Wayk Bastion except it’s not P2P.

  • dgw: maximum session lifetime enforcing (9b80162)

    This adds a new claim jet_ttl specifying the maximum lifetime for a
    given session. Devolutions Gateway will kill the session if it is still
    running after the deadline.

  • jetsocat: HTTP proxy listener (04bd6da)

    HTTP proxy listener now handles both HTTPS (tunneling) proxy requests
    and HTTP (regular forwarding).

Security

  • dgw: Smaller token reuse interval for RDP sessions (832d00b)

    With this change, we do not allow reuse for RDP sessions more than a few
    seconds following the previous use. The interval is 10 seconds which is
    expected to give plenty of time to RDP handshake and negotiations. Once
    this interval is exceeded, we consider the RDP session is fully started
    and the same token can't be reused anymore.

    Two reasons why this is beneficial:

    • Security wise: the reuse interval is considerably shortened
    • Feature wise: more efficient forced RDP session termination

    Regarding the second point: Windows’ mstsc will keep alive the session
    by re-opening it immediately. Because we allow token reuse in a limited
    fashion for RDP, as long as the association token is not expired,
    the terminate action has effectively no visible effect (besides that
    multiple sessions occurred). Reducing the reuse interval greatly
    improves the situation.

v2022.2.2

14 Jun 17:56
Compare
Choose a tag to compare
  • Update dependencies with CVE reports
  • pwsh: update token generation cmdlet
  • dgw: remove unused /jet/sessions/count route
  • dgw: lossless unknown application strings

    With this change, unknown application protocols will get displayed in session information as well.
    Previously, any unknown value was just treated as the "unknown" string.