Commit bebbda2
authored
Merge commit from fork
* security: harden Piscina options against prototype pollution
Harden Piscina against prototype pollution by ensuring all
user-controlled option reads come from own properties and by storing
pool options on a null-prototype object.
This prevents attackers who can pollute Object.prototype from
influencing worker configuration (filename, name, transferList,
signal, force) or pool defaults.
NB: pool.options is now a null-prototype object. This is a potential
breaking change for consumers that call Object.prototype methods
directly on pool.options (e.g. pool.options.hasOwnProperty(...)).
* fix: use sanitized options for resourceLimits validation
* fix: sanitize run/close options with withNullPrototype
Use the existing withNullPrototype helper instead of getOwn; address feedback from @metcoder95
* fix: avoid re-linking Object.prototype in Piscina constructor1 parent a20ff72 commit bebbda2
3 files changed
Lines changed: 81 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| |||
185 | 186 | | |
186 | 187 | | |
187 | 188 | | |
188 | | - | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
189 | 195 | | |
190 | 196 | | |
191 | 197 | | |
| |||
741 | 747 | | |
742 | 748 | | |
743 | 749 | | |
744 | | - | |
745 | | - | |
| 750 | + | |
| 751 | + | |
746 | 752 | | |
747 | 753 | | |
748 | 754 | | |
| |||
781 | 787 | | |
782 | 788 | | |
783 | 789 | | |
784 | | - | |
| 790 | + | |
785 | 791 | | |
786 | 792 | | |
787 | 793 | | |
| |||
817 | 823 | | |
818 | 824 | | |
819 | 825 | | |
820 | | - | |
821 | | - | |
822 | | - | |
823 | | - | |
824 | | - | |
825 | | - | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
826 | 832 | | |
827 | 833 | | |
828 | 834 | | |
| |||
848 | 854 | | |
849 | 855 | | |
850 | 856 | | |
| 857 | + | |
| 858 | + | |
851 | 859 | | |
852 | 860 | | |
853 | 861 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | | - | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
0 commit comments