You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: website/source/content/docs/_index.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,12 +15,12 @@ It is the Python analogue of [JavaScript prototype pollution][jsproto], but the
15
15
16
16
This wiki is organized into the following sections. Most readers can pick the entry point that matches their goal:
17
17
18
-
<!-- - **[Taxonomy]({{< relref "taxonomy" >}})**: the systematic taxonomy of class pollution along three aspects: pollution primitives, vulnerability types, and consequences.
19
-
- **[Pollution Targets]({{< relref "targets" >}})**: runtime objects (classes, modules, functions, globals) that are reachable via reflection and meaningfully change program behavior when modified.
20
-
- **[Gadgets]({{< relref "gadgets" >}})**: concrete target + value combinations that turn a pollution primitive into RCE, XSS, authentication bypass, DoS, or token leakage.
21
-
- **[Tool]({{< relref "tool" >}})**: documentation for *Pyrl* (the detection tool, built on operational taint analysis over CodeQL) and *Polluter* (an exploitation/testing helper).
22
-
- **[Collection]({{< relref "collection" >}})**: a curated database of confirmed vulnerable Python packages with end-to-end PoCs, including the assigned CVEs and showcase walkthroughs.
23
-
- **[Defense]({{< relref "defense" >}})**: mitigations along the object resolution path: key sanitization at the "get" primitive and guards at the "set" primitive.-->
18
+
-**[Taxonomy]({{< relref "taxonomy" >}})**: the building blocks of a class pollution vulnerability. Catalogs the [atomic get/set operations]({{< relref "taxonomy/atomics" >}}) Python exposes and the [pollution primitives]({{< relref "taxonomy/primitives" >}}) that compose into the six class pollution variants.
19
+
-**[Pollution Targets]({{< relref "targets" >}})**: runtime objects ([classes]({{< relref "targets/classes" >}}), [modules]({{< relref "targets/modules" >}}), [functions]({{< relref "targets/functions" >}})) that are reachable via reflection and that meaningfully change program behavior when modified.
20
+
-**[Gadgets]({{< relref "gadgets" >}})**: existing read-then-sink code in the standard library, third-party packages, or the application itself that turns a pollution primitive into [RCE]({{< relref "gadgets/rce" >}}), [XSS]({{< relref "gadgets/xss" >}}), [Auth Bypass]({{< relref "gadgets/auth-bypass" >}}), or [DoS]({{< relref "gadgets/dos" >}}).
21
+
-**[Tool]({{< relref "tool" >}})**: documentation for *[Pyrl]({{< relref "tool/pyrl" >}})* (the detection tool, built on operational taint analysis over CodeQL) and *[Polluter]({{< relref "tool/polluter" >}})* (an exploitation/testing helper).
22
+
-**[Collection]({{< relref "collection" >}})**: a curated database of 76 confirmed vulnerable Python packages with proof-of-concept exploits, plus the assigned CVEs and end-to-end [showcase walkthroughs]({{< relref "collection/showcases" >}}).
23
+
-**[Defense]({{< relref "defense" >}})**: mitigations along the object resolution path, including key sanitization at the "get" primitive and guards at the "set" primitive.
Copy file name to clipboardExpand all lines: website/wiki/docs/index.html
+8-6Lines changed: 8 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -109,12 +109,14 @@ <h1 id="python-class-pollution">Python Class Pollution</h1>
109
109
<p>It is the Python analogue of <ahref="https://portswigger.net/web-security/prototype-pollution">JavaScript prototype pollution</a>, but the primitives are richer: Python’s class-based object model with a flexible reflection layer lets pollution reach classes, functions, modules, and descriptor slots.</p>
110
110
<h2id="roadmap">Roadmap</h2>
111
111
<p>This wiki is organized into the following sections. Most readers can pick the entry point that matches their goal:</p>
112
-
<!-- - **[Taxonomy](/wiki/docs/taxonomy/)**: the systematic taxonomy of class pollution along three aspects: pollution primitives, vulnerability types, and consequences.
113
-
- **[Pollution Targets](/wiki/docs/targets/)**: runtime objects (classes, modules, functions, globals) that are reachable via reflection and meaningfully change program behavior when modified.
114
-
- **[Gadgets](/wiki/docs/gadgets/)**: concrete target + value combinations that turn a pollution primitive into RCE, XSS, authentication bypass, DoS, or token leakage.
115
-
- **[Tool](/wiki/docs/tool/)**: documentation for *Pyrl* (the detection tool, built on operational taint analysis over CodeQL) and *Polluter* (an exploitation/testing helper).
116
-
- **[Collection](/wiki/docs/collection/)**: a curated database of confirmed vulnerable Python packages with end-to-end PoCs, including the assigned CVEs and showcase walkthroughs.
117
-
- **[Defense](/wiki/docs/defense/)**: mitigations along the object resolution path: key sanitization at the "get" primitive and guards at the "set" primitive. -->
112
+
<ul>
113
+
<li><strong><ahref="/wiki/docs/taxonomy/">Taxonomy</a></strong>: the building blocks of a class pollution vulnerability. Catalogs the <ahref="/wiki/docs/taxonomy/atomics/">atomic get/set operations</a> Python exposes and the <ahref="/wiki/docs/taxonomy/primitives/">pollution primitives</a> that compose into the six class pollution variants.</li>
114
+
<li><strong><ahref="/wiki/docs/targets/">Pollution Targets</a></strong>: runtime objects (<ahref="/wiki/docs/targets/classes/">classes</a>, <ahref="/wiki/docs/targets/modules/">modules</a>, <ahref="/wiki/docs/targets/functions/">functions</a>) that are reachable via reflection and that meaningfully change program behavior when modified.</li>
115
+
<li><strong><ahref="/wiki/docs/gadgets/">Gadgets</a></strong>: existing read-then-sink code in the standard library, third-party packages, or the application itself that turns a pollution primitive into <ahref="/wiki/docs/gadgets/rce/">RCE</a>, <ahref="/wiki/docs/gadgets/xss/">XSS</a>, <ahref="/wiki/docs/gadgets/auth-bypass/">Auth Bypass</a>, or <ahref="/wiki/docs/gadgets/dos/">DoS</a>.</li>
116
+
<li><strong><ahref="/wiki/docs/tool/">Tool</a></strong>: documentation for <em><ahref="/wiki/docs/tool/pyrl/">Pyrl</a></em> (the detection tool, built on operational taint analysis over CodeQL) and <em><ahref="/wiki/docs/tool/polluter/">Polluter</a></em> (an exploitation/testing helper).</li>
117
+
<li><strong><ahref="/wiki/docs/collection/">Collection</a></strong>: a curated database of 76 confirmed vulnerable Python packages with proof-of-concept exploits, plus the assigned CVEs and end-to-end <ahref="/wiki/docs/collection/showcases/">showcase walkthroughs</a>.</li>
118
+
<li><strong><ahref="/wiki/docs/defense/">Defense</a></strong>: mitigations along the object resolution path, including key sanitization at the “get” primitive and guards at the “set” primitive.</li>
119
+
</ul>
118
120
<h2id="about-this-wiki">About this wiki</h2>
119
121
<p>This wiki accompanies our IEEE S&P 2026 paper <ahref="https://jackfromeast.github.io/assets/Pyrl.pdf"><em>The First Large-Scale Systematic Study of Python Class Pollution Vulnerability</em></a>. Its goal is to be a living reference for the vulnerability class. Concretely, we want it to:</p>
0 commit comments