Skip to content

Fix out-of-bounds memory accesses in generic-gcm-aesni

Junaid Shahid linux-crypto 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest2 patches 2 repliesIn review
  2. v22 patches 7 repliesSuperseded
  3. v11 patch 0 repliesSuperseded

Changes in v3 from the cover letter

- Fixed a bug in READ_PARTIAL_BLOCK when used for reading the AAD
- Some refactoring per CR feedback

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/2crypto: Fix out-of-bounds access of the data buffer in generic-gcm-aesniarch/x86/crypto/aesni-intel_asm.S+45 -421 reply
2/2crypto: Fix out-of-bounds access of the AAD buffer in generic-gcm-aesniarch/x86/crypto/aesni-intel_asm.S+12 -1000 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [PATCH v3 0/2] Fix out-of-bounds memory accesses in generic-gcm-aesni

Changelog:
v3:
- Fixed a bug in READ_PARTIAL_BLOCK when used for reading the AAD
- Some refactoring per CR feedback
v2:
- Also fixed issue 2 described below
v1:
- Fixed issue 1 described below

The aesni_gcm_enc/dec functions can access memory before the start or end of the supplied src buffer. This can happen if either:

1. The data length is less than 16 bytes and there is no AAD or the AAD length is not enough to cover the underrun. In this case, memory before the start of the buffer would be accessed.
2. The AAD length is not a multiple of 4 bytes and the data length is too small to cover the overrun. In this case, memory after the end of the buffer would be accessed.

This was not a problem when rfc4106-gcm-aesni was the only mode supported by the aesni module, as in that case there is always enough AAD and IV bytes to cover the out-of-bounds accesses. However, that is no longer the case with the generic-gcm-aesni mode. This could potentially result in accessing pages that are not mapped, thus causing a crash.

Junaid Shahid (2):
crypto: Fix out-of-bounds access of the data buffer in
generic-gcm-aesni
crypto: Fix out-of-bounds access of the AAD buffer in
generic-gcm-aesni

 arch/x86/crypto/aesni-intel_asm.S | 199 +++++++++++---------------------------
 1 file changed, 57 insertions(+), 142 deletions(-)
Signature · 1 line
2.15.1.620.gb9897f4670-goog