- 깃헙 알림으로 axios로 인한 보안 취약점이 발견됐다는 메시지가 왔음
- SSRF에 대한 이슈였고, 해결책으로 axios의 1.7.4 버전 이상으로 업그레이드 하라고 함
- Affected versions : axios(npm) >= 1.3.2, <= 1.7.3
- axios 1.7.2 allows SSRF via unexpected behavior where requests for path relative URLs get processed as protocol relative URLs.
- 해당 이슈: https://github.com/axios/axios/issues/6545
- 보안 공격으론 CSRF, XSS, SQL injection에 대해서만 알았어서 SSRF 는 처음 접하게 됨.
- SSRF의 개념을 알아보고 위 이슈가 생긴 이유에 대해 파악하기 위해 글을 써봄
1. SSRF: Server-Side Request Forgery (서버 측 요청 위조)
- OWASP Top10 에 선정 된 웹 공격 기법
- 서버가 위조된 요청을 보내도록 하는 공격 (CSRF는 Client측 위조) - CSRF와 주최가 바뀐 공격
- 공격자가 서버에게 악의적인 요청을 하게 하여, 서버가 의도하지 않은 내부 자원에 접근하도록 유도하는 취약점
- Client가 Server에 어떤 데이터(이미지와 같은)를 요청해서 Server가 DB에서 이미지 url을 가져온다고 할 때, 서버가 이미지가 아닌 경로를 틀어 password를 빼오게 하는...
- 공격자가 서버에 이미지 URL을 요청한다고 하면서도 실제로는 서버가 내부적으로 접근 가능한 민감한 정보를 노출할 수 있는 엔드포인트를 호출하도록 유도. 이러한 경우 서버는 의도치 않게 민감한 데이터(예: 비밀번호, 토큰, 기타 내부 자원)를 클라이언트에게 반환함
- 같은 데이터를 요청하더라도 URL이 아닌 DMZ 영역 뒤에 있는 인스턴스의 IP, file scheme를 이용한 로컬 file의 경로등을 요청하여 SSRF를 수행할 수 있다.
2. aixos 에서는 어떤 문제가 있었나
- 해당 이슈에 따르면 ' path-relative URLs are incorrectly processed as protocol-relative URLs ' 경로 상대URL이 프로토콜 상대 URL로 잘못 처리 된다는게 쟁점이었다. (=> 잠재적으로 SSRF 공격이 들어올 수 있는 )
- 경로 상대 URL (Path-relative URL):
- 현재 페이지의 경로를 기준으로 상대적인 위치
- 예: "images/logo.png" 또는 "../about.html"
- 현재 페이지의 프로토콜(http 또는 https)을 그대로 사용하면서 다른 도메인이나 경로를 지정
- 예: "//example.com/api/data"
- 경로 상대 URL (Path-relative URL):
- 위의 경우를 예시로 들자면
- 현재 페이지 : https://example.com/app/
- 의도된 요청: "/api/data"라는 경로 상대 URL로 요청을 보내려고 함.
- 예상 결과: "https://example.com/api/data"로 요청이 가야 함.
- 실제 결과: "https://api/data"라는 완전히 다른 도메인으로 요청이 가버림.
참고
- https://vuldb.com/?id.274082
- https://github.com/axios/axios/issues/6545
- https://velog.io/@r99bbit/Server-Side-Request-Forgery-SSRF
'FrontEnd > JavaScript' 카테고리의 다른 글
클로저에 대해 알아보기 with useState (5) | 2024.10.09 |
---|---|
브라우저 엔진의 작업 처리 우선순위 (feat. 마이크로 테스크 큐, 테스크 큐, 렌더 큐) (0) | 2024.10.07 |
babel 직접 설정해보기 (0) | 2024.04.06 |
webpack 직접 설정을 위한 기본 개념 (0) | 2024.04.05 |
내가 JSON Viewer를 짠 방식 (1) | 2023.11.04 |