[보안] SQL Injection, xxs, parameter변조

seokki kwon·2022년 8월 31일
0

보안

목록 보기
1/1

https://diqmwl-programming.tistory.com/82

의문점:graphQL 은 일반적인 쿼리문을 사용하지 않는것으로 알고있는데 Injection이 가능한지

graphQL 에서의 SQL Injection

GraphQL Injection은 GraphQL을 사용하는 환경에서의 Injection 공격을 의미합니다. GraphQL 특성 상 사용자가 요청한 Query는 하나의 서버 또는 복수의 서버에서 처리되어 결과를 리턴하기 떄문에 단순히 GraphQL 만의 문제가 아닌 SQL Injection이나 XXE 등 다른 취약점으로 연결될 가능성이 높습니다.

그래서 좁은 의미로는 GraphQL 자체 즉, Scheme과 Query 간에서 발생하는 공격을 의미하고, 넓게는 백엔드에서의 처리 문제로 인한 부분(SQLi, XXE 등)도 포함되기도 합니다.

서비스에서 GraphQL을 사용하는 부분은 모두 테스팅 포인트가 됩니다. 보편적으로 /graphql 등의 경로를 많이 사용하며, 해당 경로가 아니더라도 query를 포함한 경우 GrphQL 서비스로 확인합니다.

GraphQL의 Endpoint를 찾았다면 Schema, Query 영역에 특수문자 등을 통해 의도되지 않은 동작이나 에러가 발생하도록 시도합니다

GraphQL Injection 또한 다른 Injection 공격과 같이 사용자 입력값에 대한 검증이 필요합니다. 또한 GraphQL을 통해 생각보다 많은 정보에 접근할 가능성이 있기 떄문에 설계 단계에서 데이터, 권한 등에 대한 고민과 보호 로직 이 필요합니다.
출처:https://www.hahwul.com/cullinan/graphql-injection/

가능하다고 합니다

graphQL 에서의 Injection 대응책

패키지

xxs 공격

본적으로 React DOM은 렌더링하기 전에 JSX에 포함된 모든 값을 이스케이프합니다. 이렇게 하면 애플리케이션에 명시적으로 작성되지 않은 내용을 삽입할 수 없습니다. 모든 것은 렌더링되기 전에 문자열로 변환됩니다. 이는 XSS 공격을 방지하는 데 도움이 됩니다

필터링 예시

패키지

파라미터 변조

hpp (HTTP Parameter Pollution) 모듈
hpp (HTTP Parameter Pollution) 는 Express의 중복 이름 파라메터 공격을 방어해주는 모듈이다.

Express가 동일한 이름을 가진 파라메터들이 있을 경우 Array로 만들어주는데, 이때 의도치 않은 동작을 하도록 외부에서 공격할 수 있는 보안 문제가 될 수 있기 때문이다. (입력 데이터 검증을 회피하거나 앱 크래시를 유발)
출처:https://inpa.tistory.com/entry/NODE-%EB%B3%B4%EC%95%88-%F0%9F%93%9A-hpp-%EB%AA%A8%EB%93%88-%EC%82%AC%EC%9A%A9%EB%B2%95

패키지

profile
웹 & 앱개발 기록

0개의 댓글