Skip to content

Commit 90e241c

Browse files
committed
Backport security fix for CVE-2026-26014
1 parent 713910a commit 90e241c

2 files changed

Lines changed: 4 additions & 8 deletions

File tree

pkg/crypto/ciphersuite/ccm.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package ciphersuite
55

66
import (
77
"crypto/aes"
8-
"crypto/rand"
98
"encoding/binary"
109
"fmt"
1110

@@ -66,9 +65,8 @@ func (c *CCM) Encrypt(pkt *recordlayer.RecordLayer, raw []byte) ([]byte, error)
6665
raw = raw[:pkt.Header.Size()]
6766

6867
nonce := append(append([]byte{}, c.localWriteIV[:4]...), make([]byte, 8)...)
69-
if _, err := rand.Read(nonce[4:]); err != nil {
70-
return nil, err
71-
}
68+
seq64 := (uint64(pkt.Header.Epoch) << 48) | (pkt.Header.SequenceNumber & 0x0000ffffffffffff)
69+
binary.BigEndian.PutUint64(nonce[4:], seq64)
7270

7371
var additionalData []byte
7472
if pkt.Header.ContentType == protocol.ContentTypeConnectionID {

pkg/crypto/ciphersuite/gcm.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package ciphersuite
66
import (
77
"crypto/aes"
88
"crypto/cipher"
9-
"crypto/rand"
109
"encoding/binary"
1110
"fmt"
1211

@@ -60,9 +59,8 @@ func (g *GCM) Encrypt(pkt *recordlayer.RecordLayer, raw []byte) ([]byte, error)
6059

6160
nonce := make([]byte, gcmNonceLength)
6261
copy(nonce, g.localWriteIV[:4])
63-
if _, err := rand.Read(nonce[4:]); err != nil {
64-
return nil, err
65-
}
62+
seq64 := (uint64(pkt.Header.Epoch) << 48) | (pkt.Header.SequenceNumber & 0x0000ffffffffffff)
63+
binary.BigEndian.PutUint64(nonce[4:], seq64)
6664

6765
var additionalData []byte
6866
if pkt.Header.ContentType == protocol.ContentTypeConnectionID {

0 commit comments

Comments
 (0)