DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] AGENTS.md: add additional checks for crypto related code
@ 2026-06-25 23:05 Stephen Hemminger
  0 siblings, 0 replies; only message in thread
From: Stephen Hemminger @ 2026-06-25 23:05 UTC (permalink / raw)
  To: dev; +Cc: konstantin.ananyev, vladimir.medvedkin, Stephen Hemminger,
	Aaron Conole

Security related code is a high value target and extra precautions
should be taken. These are hard to catch with checkpatch alone
so add additional rules to AGENTS file.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 AGENTS.md | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/AGENTS.md b/AGENTS.md
index af9a7e0772..d6b84f777b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -513,6 +513,41 @@ than one that catches every style issue but misses the bug.
   }
   ```
 
+### Cryptographic and Security Code
+
+Applies only when the patch touches crypto PMDs (drivers/crypto/),
+the security or ipsec libraries, or code handling key material, IVs,
+or authentication digests. Stays silent on all other patches.
+
+- **Non-constant-time digest/tag comparison** (Error):
+  When verifying an authentication tag, digest, MAC, or ICV --
+  comparing a computed value against an attacker-supplied one to decide accept/reject --
+  plain memcmp leaks timing information. Use rte_memeq_timingsafe() instead.
+  Return semantics differ from memcmp: memcmp returns 0 on equal,
+  rte_memeq_timingsafe() returns true on equal.
+  So `if (memcmp(tag, digest, len))` becomes
+  `if (!rte_memeq_timingsafe(tag, digest, len))`.
+  Do NOT flag memcmp on non-secret data: algorithm IDs, key lengths,
+  capability/feature structs, lookup keys. Only flag comparisons that
+  gate acceptance of attacker-influenced data.
+
+- **Sensitive material not zeroed before free** (Error):
+  Keys, expanded key schedules, HMAC ipad/opad, and session secrets
+  must be wiped, not merely freed -- a plain free leaves secrets in heap.
+  - rte_malloc/rte_zmalloc'd secret: use rte_free_sensitive() instead of rte_free()
+  - local/stack secret going out of scope: rte_memzero_explicit()
+    before return; plain memset() may be optimized away.
+  Do NOT flag buffers that never held secrets (descriptors, dev_info),
+  or memset the compiler cannot elide because the pointer escapes to free.
+
+- **Insecure RNG for keys/IVs** (Error):
+  rte_rand()/rand()/random() are not cryptographically secure;
+  do not use them to generate keys, IVs, or nonces in crypto/security code.
+
+Do NOT flag:
+- IV/nonce reuse -- a runtime property, not determinable from a patch.
+- memcmp on lengths, algorithm selectors, or non-secret config.
+
 ### Architecture & Patterns
 - Code that violates existing patterns in the code base
 - Missing error handling
@@ -1642,6 +1677,9 @@ Checked by `devtools/checkpatches.sh` -- not duplicated here.
 - [ ] `bool` used for pure true/false variables, parameters, and predicate return types
 - [ ] Shared variables use `rte_atomic_*_explicit()`, not `volatile` or bare access
 - [ ] Memory ordering is the weakest correct choice (`relaxed` for counters, `acquire`/`release` for publish/consume)
+- [ ] Auth tag/digest comparisons use rte_memeq_timingsafe(), not memcmp
+- [ ] Key material zeroed before free (rte_free_sensitive / rte_memzero_explicit)
+- [ ] Keys/IVs/nonces not generated with rte_rand()/rand()/random()
 
 ### API Tags
 
@@ -1753,6 +1791,9 @@ devtools/get-maintainer.sh <patch-file>
 - MTU accepted without scatter Rx when frame size exceeds single mbuf capacity (silent truncation/drop)
 - `mtu_set` rejects valid MTU when scatter Rx is already enabled
 - Rx function selection ignores `scattered_rx` flag or MTU-vs-mbuf-size comparison
+- Non-constant-time comparison of auth tag/digest/MAC/ICV (timing side channel)
+- Key material or session secrets freed without zeroing (rte_free_sensitive/rte_memzero_explicit)
+- Non-cryptographic RNG (rte_rand/rand/random) used to generate keys, IVs, or nonces
 
 *Process and format errors:*
 - Forbidden tokens in code
-- 
2.53.0


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-25 23:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-25 23:05 [PATCH] AGENTS.md: add additional checks for crypto related code Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox