Win32-OpenSSH icon indicating copy to clipboard operation
Win32-OpenSSH copied to clipboard

Connection is stuck when time on SSH Server is set after the Year-2038 Problem

Open lksptz opened this issue 1 year ago • 4 comments
trafficstars

Prerequisites

  • [X] Write a descriptive title.
  • [X] Make sure you are able to repro it on the latest version
  • [X] Search the existing issues.

Steps to reproduce

When I start the SSH Server on a machine where the date is set after the Year-2038 Problem (2038-01-19 03:14:07 UTC) the connection is stuck. On the client I'm asked for the password to login, the login is successful ("Authentication succeeded" in the log), but the connection then freezes and the client can't be stopped using CTRL+C but has to be killed by closing cmd/powershell.

I once could reproduce it on a device where I got the additional log output that the channel unpauses in over 2 billion seconds. At the time I checked and the exact second where the log message was written as unix timestamp, added to the over 2 billion seconds from the log was exactly 2^32. Unfortunately, I no longer have access to this device and I'm not sure which version of the SSH Server it hat exactly, but it was installed via the Windows Optional Features.

Attached I have the logs from the client, started with -vvv and from the server with LogLevel DEBUG3.

ssh.txt sshd.txt

Expected behavior

The connection should work as usual.

Actual behavior

The connection freezes, no shell is opened at the client and the client can't be exited using CTRL + C, but has to be killed by closing cmd/powershell.

Error details

No response

Environment data

Name                           Value
----                           -----
PSVersion                      5.1.22621.2506
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.2506
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Version

OpenSSH_for_Windows_9.6p1, LibreSSL 3.8.2 (built from commit 661803c9ec4d7dee6574eb6ff0c85b2b7006edb1)

Visuals

No response

lksptz avatar May 19 '24 17:05 lksptz

Do you have a *nix machine you can replicate this issue on?

maertendMSFT avatar May 20 '24 17:05 maertendMSFT

I tried running the SSH-Server on Ubuntu 22.04.4 LTS (OpenSSH_8.9p1 Ubuntu-3ubuntu0.7, OpenSSL 3.0.2 15 Mar 2022). If I set the time there e.g. to 2039-01-01 and connect via SSH the connection works as expected.

I also tried installing the Bitvise SSH Server (9.37) on Windows, there the connection also works as expected with the time set to the year 2039.

So I can only reproduce this issue on Windows with the OpenSSH Server.

lksptz avatar May 26 '24 12:05 lksptz

Is there any update/workaround for this bug or maybe a planned timeline when this will be done?

lksptz avatar Jul 15 '24 06:07 lksptz

Potential fix seems to be two parts, one on LibreSSL, other in openssh-portable

https://github.com/PowerShell/LibreSSL/pull/30 https://github.com/PowerShell/openssh-portable/pull/738

LainOTN2 avatar Aug 07 '24 06:08 LainOTN2

@maertendMSFT @tgauth Can you check the previous push request, those are picked up from the fix on LibreSSL and should fix the issue. Any possibility of integrating those changes?

LainOTN2 avatar Jan 27 '25 09:01 LainOTN2

@maertendMSFT @tgauth Can you check the previous push request, those are picked up from the fix on LibreSSL and should fix the issue. Any possibility of integrating those changes?

Yes! The PowerShell/LibreSSL repo is just a mirror of https://github.com/libressl/portable. Both PowerShell/LibreSSL and https://github.com/PowerShell/openssh-portable/pull/738 will be updated before the next Win32-OpenSSH release.

tgauth avatar Jan 27 '25 19:01 tgauth

closing since https://github.com/PowerShell/openssh-portable/pull/738 has been merged

tgauth avatar Apr 03 '25 19:04 tgauth