Prototype pollution — доволь­но извес­тная ата­ка в таких язы­ках, как JavaScript или Python, которая при­водит к серь­езным пос­ледс­тви­ям. Иссле­дуя один популяр­ный про­ект, я при­думал, как мож­но экс­плу­ати­ровать про­тоти­пы по‑новому, и решил поделить­ся этой иде­ей. В этой статье я рас­ска­жу, как работа­ют про­тоти­пы, что такое prototype pollution и как еще мож­но экс­плу­ати­ровать про­тоти­пы. Для при­меров будем исполь­зовать JavaScript, но час­тично это при­мени­мо и к дру­гим язы­кам на осно­ве про­тоти­пов. Что такое Prototype Про­тотип — это механизм JavaScript, с помощью которо­го одни объ­екты нас­леду­ют свой­ства дру­гих. Для это­го у объ­ектов есть свой­ство proto , которое ука­зыва­ет на дру­гой объ­ект, чьи свой­ства они нас­леду­ют