What is 'Mass Assignment Vulnerbility'?
๊ฐ๋ฐ์๊ฐ ํจ์จ์ ์ธ ์์ ์ ์ํด Parameter๊ฐ HTTP Request ์์ฒญ๊ณผ binding ๋ ์ ์๊ฒ ํ์ฉํ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ์ทจ์ฝ์ ์ด๋ค. 'Mass Assignment Vulnerability'๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ, ๋งค๊ฐ๋ณ์๊ฐ ์๋์ผ๋ก binding๋๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉ์๊ฐ ์๋ฒ ์ธก์ ํญ๋ชฉ์ ์์ ํ ์ ์๋ค. ์ด๋ฅผ ํตํด ์ํ๋ ๊ณ์ ์ ๊ด๋ฆฌ์ ๊ถํ ๋ถ์ฌ, ์ ๊ทผ ์ ์ด ๊ณต๊ฒฉ ๋ฑ์ Triggerํ ์ ์๋ค. ์ด ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ ๋ํ์ ์ธ ์๋ก Spring์ Auto Binding, ASP.NET์ Object Injection์ด ์๋ค.
์ด ์ทจ์ฝ์ ์ ๋ฐฉ์งํ๋ ค๋ฉด Parameter๋ฅผ Whitelist ๋ฐฉ์์ ์ด์ฉํด ๊ด๋ฆฌํด์ผ ํ๋ค.
Example of 'Mass Assignment Vulnerability'
Spring์ ์์๋ฅผ ๋ค์ด๋ณด์. ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด username๊ณผ password, 2๊ฐ์ ํ๋๊ฐ ์กด์ฌํ๋ค.
๊ทธ๋ฆฌ๊ณ 2๊ฐ์ ํ๋๋ฅผ ์ด์ฉํ๋ฉด ์๋์ ๊ฐ์ด public class๋ก ์ง์ ๋ 2๊ฐ์ ๊ฐ์ฒด์ Form์ ๋ง์ถฐ ์์ฑํ ์ ์๋ค.
๊ฐ๋ฐ์๋ User๊ฐ UserName๊ณผ Password, 2๊ฐ์ ํ๋ผ๋ฏธํฐ๋ง ์ด์ฉ ๊ฐ๋ฅํ๊ฒ๋ ๋ง๋ค์ด๋์๋ค. ( ์๋ ์์ ์ฐธ์กฐ )
ํ์ง๋ง, WhiteList ๋ฐฉ์์ผ๋ก Parameter๋ฅผ ํํฐ๋งํ๊ฑฐ๋ ์ ์ดํ ์๋จ์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์, ๊ณต๊ฒฉ์๋ ์์ ๊ฐ์ด isAdmin ํ๋์ ์ ๊ทผํ์ฌ ๊ถํ ์์น ๊ณต๊ฒฉ์ ์งํํ ์ ์๋ค. ์ด๋ Parameter๋ฅผ WhiteList ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ์ง ์๊ธฐ์ ๋ฐ์ํ๋ ์ทจ์ฝ์ ์ด๋ค.