우아한테크세미나 - 개발자가 꼭 알아야 할 애플리케이션 보안
2022, Oct 17
강의 주소
https://www.youtube.com/watch?v=RQv86D0M5YY
추천 사이트
- 포스트위거(https://portswigger.net/web-security)
- 웹패킹.kr(https://webhacking.kr)
- 드림핵(https://dreamhack.io)
최근 취약점
- IDOR(insecure direct object reference) 취약점
- 안전하지 않은 직접 객체 참조 내지 부적절한 인가
- 서버에서 수행하는 권한 검증 및 접근제어를 클라이언트에서 수행시 발생하는 문제
- 타 사용자의 객체에 접근해서 정보 유출 및 기능 조작 하는 케이스
- 조치방안
- 검증은 반드시 session 또는 서버에서 발급한 token을 통해 서버에서 수행하도록 한다
- SSRF(server-side request forgery) 취약점
- 서버단에서 요청을 발생시켜 내부시스템에 접근하는 취약점
- 예를 들어 uri를 서버에서 직접 요청해서 외부 이미지를 가져오는 형태의 기능에서 발생
- public cloud환경에서는 가상서버의 메타데이터를 확인할 수 있는 API가 있어서 SSRF를 통해 해당 API를 요청해서 가상서버의 정보를 확인하는 방식으로 보완
- 조치방안
- 접근허용 ip를 whitelist로 필터링
- 반드시 필요한 uri scheme만 사용하도록 whitelist방식으로 필터링 필요
- loopback uri가 들어온 경우 필터링 필요
- private ip, link-local address형태의 uri가 들어온 경우 필터링 필요
- 불필요한 특수문자 @, %0a등이 uri에 있는 경우 필터링 필요
- JWT인증 취약점
- 토큰이 탈취되었을 경우 임의로 서버에서 토큰을 만료시킬 수 없음
- 토큰을 localstorage에 저장해야할때 xss로 인한 탈취 가능성이 높음
- Actuator Misconfiguration
- 불필요한 endpoint를 활성화시켜서, 예상치 못한 actuator의 기능으로 서비스 기밀성, 무결성, 가용성을 침해당할 수 있다.
- shutdown을 제외하고 모두 enable상태이기 때문에 필요한 것만 enable로 합니다.
- jmx는 모두 expose되어있고, http는 health만 expose되어있다.
- acuator에 접근할 수 있는 ip주소를 제한한다
- actuator 기본 경로를 변경한다.
- actuator 접근 시 권한 검증을 수행한다.
최종 보안 설정
management.endpoints.enabled-by-default = false management.endpoint.info.enabled = true management.endpoint.health.enabled = true management.endpoints.jmx.exposure.exclude = * management.endpoints.web.exposure.include = info, health management.server.port = (포트번호) management.server.address = (IP 주소) management.endpoints.web.base-path = (변경된 경로)
- 불필요한 endpoint를 활성화시켜서, 예상치 못한 actuator의 기능으로 서비스 기밀성, 무결성, 가용성을 침해당할 수 있다.
기타 질답
- 대규모 프로젝트에선 was session보다 redis에 세션을 저장하고 각각 was에서 가져갈 수 있도록 한다.