DecodeBytes decodes in place and overwrites the caller's ciphertext (non-GCM modes)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 68/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- cryptography, testing
Línea de trabajo
Empieza con TDECFormattedCipher.DecodeBytes, donde Result := Source hace que ambos arrays compartan memoria. Solo la rama cmGCM llama a SetLength, así que copia la entrada en Result antes de Decode para todos los modos. La corrección secundaria está en TestTFormat_UU.TestIsValidTypeless, donde @SrcBuf debe cambiar a @SrcBuf[0]. Está terminado cuando el array de entrada del llamador no cambia después de decodificar en todos los modos y las pruebas pasan en Win64.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
TDECFormattedCipher.DecodeBytes overwrites the caller's input array for every mode except GCM.
Cause
DecodeBytes starts with Result := Source. For dynamic arrays this only copies the reference, so Result and Source point to the same memory. Only for cmGCM is SetLength(Result, Length(Source)) called, which creates a separate copy. For all other modes Decode(Source[0], Result[0], ...) writes the plaintext straight into the caller's array.
Effect
After Plain := Cipher.DecodeBytes(CipherText), CipherText contains the plaintext too. Code that decodes the same buffer twice, or keeps the ciphertext for later use (logging, retry, comparing), silently works on wrong data.
Repro
Cipher := TCipher_Twofish.Create;
Cipher.Mode := cmCBCx;
Cipher.Init(Key, IV, $FF);
Original := Copy(Source);
Plain := Cipher.DecodeBytes(Source);
// Source is now equal to Plain instead of Original
I came across this in the ChaCha20 speed tests on development_chacha20poly1305, which decode the same buffer once per CPU mode. Every decode after the first one failed.
Side note
TestTFormat_UU.TestIsValidTypeless fails now and then on Win64. It uses p := @SrcBuf, which points at the array variable instead of the data, so IsValid checks the bytes of a heap pointer. It should be @SrcBuf[0]. I fix that in the same PR.
- Lenguaje dominante
- HTML
- Estrellas
- 286
- Forks
- 78
- Merge medio
- 1 d 4 h
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de MHumm/DelphiEncryptionCompendium
-
CRC64 - PKI AdditionQuizá libre de nuevo @MHumm la tomó hace 148 días y no hay ningún pull request abierto. Abiertoenhancement help wanted
MHumm/DelphiEncryptionCompendium#93 · 1 comentario · 1 asignado ·
-
Missing PUInt8Array type in the GetIt version.Quizá libre de nuevo @MHumm la tomó hace 160 días y no hay ningún pull request abierto. Abiertobug delphi
MHumm/DelphiEncryptionCompendium#92 · 2 comentarios · 1 asignado ·
-
Help with demoAbiertoquestion
Dificultad 4/5 1-2 días Aptitud para principiantes 25/100
MHumm/DelphiEncryptionCompendium#91 · 6 comentarios ·
-
Chacha20 Poly1305Quizá libre de nuevo @MHumm la tomó hace 458 días y no hay ningún pull request abierto. Abiertoenhancement
MHumm/DelphiEncryptionCompendium#89 · 1 comentario · 1 asignado ·
-
Confused by NEXTGEN directiveQuizá libre de nuevo @MHumm la tomó hace 531 días y no hay ningún pull request abierto. Abiertobug
MHumm/DelphiEncryptionCompendium#88 · 8 comentarios · 1 asignado ·
Todos los issues de MHumm/DelphiEncryptionCompendium
Issues similares
-
Client customer-reported KeyVault needs-team-attention question Service Attention
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Azure/azure-sdk-for-net#63861 · 3 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
raspberrypi/picotool#365 · 1 comentario ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
SpecterOps/BloodHound#3462 ·
Los mantenedores suelen responder en 2 días
-
[Good First Issue]: Rename the misspelled indicies variable in the cryptography packagePosiblemente ocupada @achintya2k5 la tomó hoy. AbiertoGood First Issue hacktoberfest
Dificultad 1/5 1-3 horas Aptitud para principiantes 92/100
hiero-ledger/hiero-sdk-js#4508 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
dev-tools
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
iotaledger/iota-rust-sdk#1709 ·
Los mantenedores suelen responder en 1 día