<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sun, 04 Oct 2026 10:33:55 +0000</lastBuildDate>
    <item>
      <title>BREW-ansible-CVE-2026-49265 — Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (CWE-208)</title>
      <link>https://vulnerability.circl.lu/vuln/brew-ansible-cve-2026-49265</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: ansible&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A timing side-channel vulnerability exists in the PKCE (RFC 7636) implementation 
of the Authorization Code Grant flow. The `code_challenge_method_plain` function 
uses Python&amp;#39;s standard `==` operator for string comparison instead of a 
constant-time comparison function, potentially allowing timing-based attacks.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- File: `oauthlib/oauth2/rfc6749/grant_types/authorization_code.py`
- Functions: `code_challenge_method_plain`, `code_challenge_method_s256`
- Vulnerability Type: CWE-208 (Observable Timing Discrepancy)&lt;/p&gt;
&lt;p&gt;## Technical Details&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `==` operator uses short-circuit evaluation when comparing strings:
1. Returns `False` immediately if lengths differ
2. Compares characters left-to-right, stopping at first mismatch&lt;/p&gt;
&lt;p&gt;This means comparison time varies linearly with the length of the common prefix 
between the attacker-supplied verifier and the stored challenge, creating a 
measurable timing oracle.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested locally against oauthlib source (network jitter eliminated to isolate 
pure Python execution time):&lt;/p&gt;
&lt;p&gt;| Input | Result | Time (10M iterations) |
|---|---|---|
| Wrong first char (`B` + `A`*49) | Fast reject | 0.34106s |
| 49 chars correct (`A`*49 + `B`) | Deep compare | 0.37847s |
| **Difference** | | **0.03741s** |&lt;/p&gt;
&lt;p&gt;The ~37ms delta over 10M iterations corresponds to nanosecond-level differences 
per call, which are statistically exploitable under controlled conditions.&lt;/p&gt;
&lt;p&gt;## Attack Scenario&lt;/p&gt;
&lt;p&gt;1. Attacker intercepts…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: ansible&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A timing side-channel vulnerability exists in the PKCE (RFC 7636) implementation 
of the Authorization Code Grant flow. The `code_challenge_method_plain` function 
uses Python&amp;#39;s standard `==` operator for string comparison instead of a 
constant-time comparison function, potentially allowing timing-based attacks.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- File: `oauthlib/oauth2/rfc6749/grant_types/authorization_code.py`
- Functions: `code_challenge_method_plain`, `code_challenge_method_s256`
- Vulnerability Type: CWE-208 (Observable Timing Discrepancy)&lt;/p&gt;
&lt;p&gt;## Technical Details&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `==` operator uses short-circuit evaluation when comparing strings:
1. Returns `False` immediately if lengths differ
2. Compares characters left-to-right, stopping at first mismatch&lt;/p&gt;
&lt;p&gt;This means comparison time varies linearly with the length of the common prefix 
between the attacker-supplied verifier and the stored challenge, creating a 
measurable timing oracle.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested locally against oauthlib source (network jitter eliminated to isolate 
pure Python execution time):&lt;/p&gt;
&lt;p&gt;| Input | Result | Time (10M iterations) |
|---|---|---|
| Wrong first char (`B` + `A`*49) | Fast reject | 0.34106s |
| 49 chars correct (`A`*49 + `B`) | Deep compare | 0.37847s |
| **Difference** | | **0.03741s** |&lt;/p&gt;
&lt;p&gt;The ~37ms delta over 10M iterations corresponds to nanosecond-level differences 
per call, which are statistically exploitable under controlled conditions.&lt;/p&gt;
&lt;p&gt;## Attack Scenario&lt;/p&gt;
&lt;p&gt;1. Attacker intercepts…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/brew-ansible-cve-2026-49265</guid>
    </item>
    <item>
      <title>GHSA-xpv3-w29h-x7cv — Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (CWE-208)</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-xpv3-w29h-x7cv</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: oauthlib&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A timing side-channel vulnerability exists in the PKCE (RFC 7636) implementation 
of the Authorization Code Grant flow. The `code_challenge_method_plain` function 
uses Python&amp;#39;s standard `==` operator for string comparison instead of a 
constant-time comparison function, potentially allowing timing-based attacks.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- File: `oauthlib/oauth2/rfc6749/grant_types/authorization_code.py`
- Functions: `code_challenge_method_plain`, `code_challenge_method_s256`
- Vulnerability Type: CWE-208 (Observable Timing Discrepancy)&lt;/p&gt;
&lt;p&gt;## Technical Details&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `==` operator uses short-circuit evaluation when comparing strings:
1. Returns `False` immediately if lengths differ
2. Compares characters left-to-right, stopping at first mismatch&lt;/p&gt;
&lt;p&gt;This means comparison time varies linearly with the length of the common prefix 
between the attacker-supplied verifier and the stored challenge, creating a 
measurable timing oracle.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested locally against oauthlib source (network jitter eliminated to isolate 
pure Python execution time):&lt;/p&gt;
&lt;p&gt;| Input | Result | Time (10M iterations) |
|---|---|---|
| Wrong first char (`B` + `A`*49) | Fast reject | 0.34106s |
| 49 chars correct (`A`*49 + `B`) | Deep compare | 0.37847s |
| **Difference** | | **0.03741s** |&lt;/p&gt;
&lt;p&gt;The ~37ms delta over 10M iterations corresponds to nanosecond-level differences 
per call, which are statistically exploitable under controlled conditions.&lt;/p&gt;
&lt;p&gt;## Attack Scenario&lt;/p&gt;
&lt;p&gt;1. Attacker intercepts…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: oauthlib&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A timing side-channel vulnerability exists in the PKCE (RFC 7636) implementation 
of the Authorization Code Grant flow. The `code_challenge_method_plain` function 
uses Python&amp;#39;s standard `==` operator for string comparison instead of a 
constant-time comparison function, potentially allowing timing-based attacks.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- File: `oauthlib/oauth2/rfc6749/grant_types/authorization_code.py`
- Functions: `code_challenge_method_plain`, `code_challenge_method_s256`
- Vulnerability Type: CWE-208 (Observable Timing Discrepancy)&lt;/p&gt;
&lt;p&gt;## Technical Details&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `==` operator uses short-circuit evaluation when comparing strings:
1. Returns `False` immediately if lengths differ
2. Compares characters left-to-right, stopping at first mismatch&lt;/p&gt;
&lt;p&gt;This means comparison time varies linearly with the length of the common prefix 
between the attacker-supplied verifier and the stored challenge, creating a 
measurable timing oracle.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested locally against oauthlib source (network jitter eliminated to isolate 
pure Python execution time):&lt;/p&gt;
&lt;p&gt;| Input | Result | Time (10M iterations) |
|---|---|---|
| Wrong first char (`B` + `A`*49) | Fast reject | 0.34106s |
| 49 chars correct (`A`*49 + `B`) | Deep compare | 0.37847s |
| **Difference** | | **0.03741s** |&lt;/p&gt;
&lt;p&gt;The ~37ms delta over 10M iterations corresponds to nanosecond-level differences 
per call, which are statistically exploitable under controlled conditions.&lt;/p&gt;
&lt;p&gt;## Attack Scenario&lt;/p&gt;
&lt;p&gt;1. Attacker intercepts…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-xpv3-w29h-x7cv</guid>
    </item>
    <item>
      <title>PYSEC-2026-4114 — Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (CWE-208)</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-4114</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: oauthlib&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A timing side-channel vulnerability exists in the PKCE (RFC 7636) implementation 
of the Authorization Code Grant flow. The `code_challenge_method_plain` function 
uses Python&amp;#39;s standard `==` operator for string comparison instead of a 
constant-time comparison function, potentially allowing timing-based attacks.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- File: `oauthlib/oauth2/rfc6749/grant_types/authorization_code.py`
- Functions: `code_challenge_method_plain`, `code_challenge_method_s256`
- Vulnerability Type: CWE-208 (Observable Timing Discrepancy)&lt;/p&gt;
&lt;p&gt;## Technical Details&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `==` operator uses short-circuit evaluation when comparing strings:
1. Returns `False` immediately if lengths differ
2. Compares characters left-to-right, stopping at first mismatch&lt;/p&gt;
&lt;p&gt;This means comparison time varies linearly with the length of the common prefix 
between the attacker-supplied verifier and the stored challenge, creating a 
measurable timing oracle.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested locally against oauthlib source (network jitter eliminated to isolate 
pure Python execution time):&lt;/p&gt;
&lt;p&gt;| Input | Result | Time (10M iterations) |
|---|---|---|
| Wrong first char (`B` + `A`*49) | Fast reject | 0.34106s |
| 49 chars correct (`A`*49 + `B`) | Deep compare | 0.37847s |
| **Difference** | | **0.03741s** |&lt;/p&gt;
&lt;p&gt;The ~37ms delta over 10M iterations corresponds to nanosecond-level differences 
per call, which are statistically exploitable under controlled conditions.&lt;/p&gt;
&lt;p&gt;## Attack Scenario&lt;/p&gt;
&lt;p&gt;1. Attacker intercepts…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: oauthlib&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;A timing side-channel vulnerability exists in the PKCE (RFC 7636) implementation 
of the Authorization Code Grant flow. The `code_challenge_method_plain` function 
uses Python&amp;#39;s standard `==` operator for string comparison instead of a 
constant-time comparison function, potentially allowing timing-based attacks.&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;- File: `oauthlib/oauth2/rfc6749/grant_types/authorization_code.py`
- Functions: `code_challenge_method_plain`, `code_challenge_method_s256`
- Vulnerability Type: CWE-208 (Observable Timing Discrepancy)&lt;/p&gt;
&lt;p&gt;## Technical Details&lt;/p&gt;
&lt;p&gt;Python&amp;#39;s `==` operator uses short-circuit evaluation when comparing strings:
1. Returns `False` immediately if lengths differ
2. Compares characters left-to-right, stopping at first mismatch&lt;/p&gt;
&lt;p&gt;This means comparison time varies linearly with the length of the common prefix 
between the attacker-supplied verifier and the stored challenge, creating a 
measurable timing oracle.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested locally against oauthlib source (network jitter eliminated to isolate 
pure Python execution time):&lt;/p&gt;
&lt;p&gt;| Input | Result | Time (10M iterations) |
|---|---|---|
| Wrong first char (`B` + `A`*49) | Fast reject | 0.34106s |
| 49 chars correct (`A`*49 + `B`) | Deep compare | 0.37847s |
| **Difference** | | **0.03741s** |&lt;/p&gt;
&lt;p&gt;The ~37ms delta over 10M iterations corresponds to nanosecond-level differences 
per call, which are statistically exploitable under controlled conditions.&lt;/p&gt;
&lt;p&gt;## Attack Scenario&lt;/p&gt;
&lt;p&gt;1. Attacker intercepts…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-4114</guid>
    </item>
  </channel>
</rss>
