Mass assignment 취약점이란?
웹 애플리케이션이나 API를 설계할 때 개발 편의성을 위해 클라이언트에서 전달된 파라미터를 객체에 자동으로 매핑하는 경우가 있는데 의도하지 않거나, 허용되지 않은 필드까지 매핑되는 경우 문제가 발생할 수 있다.
-> 권한 상승, 비즈니스 로직 우회 등의 침해까지 이어질 수 있음
예를 들어서 쇼핑몰에서 주문하는 API를 간단하게 써보면
POST /api/checkout
{
"product_id": "1",
"quantity": 1
}이 요청 값이
Order {
product_id
quantity
}이렇게 그대로 매핑될때는 문제가 없다
그러나 mass assigenment 취약점을 이용하면
Order order = objectMapper.map(requestBody, Order.class);
-> 클라이언트측에서 전달한 json을 객체에 그대로 받는 구조로 구현
{
"product_id": "1",
"quantity": 1,
"discount": 100
}
-> 공격자가 조작한 내용이렇게 공격자가 조작한 내용에 대한 인증이나 필터링 없이 order 객체에서
일괄적으로 적용 및 서버에 전달될 수 있다







