Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f744aa5

Browse files
committed
fix(agent/agentssh): pin random seed for RSA key generation
Change-Id: I8c7e3070324e5d558374fd6891eea9d48660e1e9 Signed-off-by: Thomas Kosiewski <[email protected]>
1 parent 4732f08 commit f744aa5

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

agent/agentssh/agentssh.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package agentssh
33
import (
44
"bufio"
55
"context"
6-
"crypto/rand"
76
"crypto/rsa"
87
"errors"
98
"fmt"
109
"io"
10+
"math/rand"
1111
"net"
1212
"os"
1313
"os/exec"
@@ -115,11 +115,15 @@ func NewServer(ctx context.Context, logger slog.Logger, prometheusRegistry *prom
115115
// Clients' should ignore the host key when connecting.
116116
// The agent needs to authenticate with coderd to SSH,
117117
// so SSH authentication doesn't improve security.
118-
randomHostKey, err := rsa.GenerateKey(rand.Reader, 2048)
118+
119+
// Create a deterministic random source
120+
// nolint: gosec
121+
deterministicRand := rand.New(rand.NewSource(42))
122+
coderHostKey, err := rsa.GenerateKey(deterministicRand, 2048)
119123
if err != nil {
120124
return nil, err
121125
}
122-
randomSigner, err := gossh.NewSignerFromKey(randomHostKey)
126+
coderSigner, err := gossh.NewSignerFromKey(coderHostKey)
123127
if err != nil {
124128
return nil, err
125129
}
@@ -190,7 +194,7 @@ func NewServer(ctx context.Context, logger slog.Logger, prometheusRegistry *prom
190194
slog.Error(err))
191195
},
192196
Handler: s.sessionHandler,
193-
HostSigners: []ssh.Signer{randomSigner},
197+
HostSigners: []ssh.Signer{coderSigner},
194198
LocalPortForwardingCallback: func(ctx ssh.Context, destinationHost string, destinationPort uint32) bool {
195199
// Allow local port forwarding all!
196200
s.logger.Debug(ctx, "local port forward",

0 commit comments

Comments
 (0)