PowerShell / Win32-OpenSSH

Win32 port of OpenSSH
7.45k stars 766 forks source link

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

Open lksptz opened 6 months ago

lksptz commented 6 months ago

Prerequisites

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

maertendMSFT commented 6 months ago

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

lksptz commented 6 months ago

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 commented 4 months ago

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

LainOTN2 commented 3 months ago

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