<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CWE-330 on guy@secdev.uk</title>
    <link>https://www.secdev.uk/blog/tags/cwe-330/</link>
    <description>Recent content in CWE-330 on guy@secdev.uk</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <copyright>Guy Dixon | guy@secdev.uk</copyright>
    <lastBuildDate>Sat, 01 Mar 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.secdev.uk/blog/tags/cwe-330/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cryptographic Failures That Pass Code Review</title>
      <link>https://www.secdev.uk/blog/technology/2025-03-01-cryptographic-failures-that-pass-code-review/</link>
      <pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://www.secdev.uk/blog/technology/2025-03-01-cryptographic-failures-that-pass-code-review/</guid>
      <description>&lt;p&gt;Cryptographic code is uniquely dangerous, and it&amp;rsquo;s one of the areas I find most challenging to review. The reason is simple: it can be completely wrong and still appear to work perfectly. A broken hash function still produces a hash. A weak cipher still encrypts and decrypts. A predictable random number generator still generates numbers. The application runs, tests pass, and the vulnerability sits quietly until an attacker exploits it. In this post, I want to walk through the cryptographic failures that routinely survive code review across Python, Java, Go, and Rust, from the obvious use of MD5 to the subtle misuse of otherwise strong primitives.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
