취약점이란?
: 1. 소프트웨어의 결함 2. 공격자의 접근 3. 악용 가능성
- 세가지 모두 제거하려는 노력을 해야한다. 어떠한 경우라도 완벽하게 제거했다고 말하기 어렵기 때문
- 여러 취약점들이 계속해서 생기고 있다.
- 보안 관련 진단을 주기적으로 계속 해야한다.
다양한 사례
Local Web Proxy를 통한 패킷 조작
- 본인의 PC 패킷은 얼마든지 가로채서 변조가 가능하다.
- 공격자는 이러한 패킷을 가로채서 쿼리를 넣는 등 변조할 수 있다. (e.g 자바스크립트 코드를 개발자도구에서 변조)
URL Scheme을 통한 리다이렉트
: 공격자가 목적지 URI 파라미터에 공격자의 악성사이트를 넣어 해당 주소로 리다이렉트 하도록 하는 방식
- 모바일 클라이언트에서 발견되는 취약점.
- 이후 원하는 정보(토큰 등)를 가져와 악용 가능
대응 방안: URL 등 정보들에 유효한 정보가 알맞게 들어있는지 strict하게 검증
Regex를 통해 검증하면 좀 더 강력할 것 같다.
SSRF(Server-side Request Forgery)
: 공격자는 웹 서버의 WAS를 호출하는 어떤 것을 호출해 내부 서버들의 실제 IP를 스캔하거나 데이터 유출, (악용)쓰기 API를 호출하는 등의 공격이 가능하다. 마찬가지로 파라미터를 이용한 공격
- 기본적으로 웹서버를 통해 리버스 프록시를 구현하고, 이를 통해 보안성을 높인다.
대응 방안: 파라미터에 대한 검증 or redirect 필요할때만 redirect 가능하다는 헤더 추가, redirect 목적지 주소 검증
CSRF(Cross-site): 공격자의 악의적인 리소스를 사용자가 읽어, CSRF 스크립트를 실행하도록 한다.
XXE(xml external entity) injection
: 사용자로부터 xml 파일을 입력받거나 하는 곳에 XML 공격코드를 주입시킨다. 보통 External entity 사용을 금지하지 않아서 발생.
대응 방안: XML 파서 외부참조 비활성화
Command injection
: 파라미터같은 곳에 커맨드 파이프라인을 넣는 방식
대응 방안: 서버측에서 커멘드에 대해 검증. REGEX로 파이프라인 존재 여부 확인
불필요한 정보 노출
: docs html 노출(엔드포인트 명세 노출), 에러처리 미흡 등
Reference)
카카오 사내 기술학습