KOROMOON

착한 사마리아인이 되고 싶습니다.

12/09/2022

JSON 기반 SQL Injeciton 공격을 악용한 WAF 우회 공격 (Palo Alto Networks, Amazon Web Services, Cloudflare, F5 및 Imperva 의 5개 주요 공급업체 포함)


( 1 ) 취약점 정보


공격 기술에는 WAF 가 구분 분석할 수 없는 SQL Injetion 페이로드에 JSON 구문을 추가하는 것이 포함됨.


주요 WAF 공급업체는 10년 동안 대부분의 데이터베이스 엔진에서 JSON 을 지원했음에도 불구하고 WAF 제품에서 JSON 지원이 부족했음.

대부분의 WAF 는 SQL Injection 공격을 쉽게 감지하지만 SQL 구문에 JSON  을 추가하면 WAF 우회가 가능했음.


이러한 WAF 우회는  Palo Alto Networks, Amazon Web Services, Cloudflare, F5 및 Imperva 의 5개 주요 공급업체에서 판매한 WAF 에 대해 작동했음.

5개 주요 공급업체 모두 SQL Injection 검사 프로세스에서 JSON 구문을 지원하도록 제품 업데이트했음.

만약 제품 업데이트 및 설정을 하지 않을 시 위험할 수 있음.


그리고 이 기술을 악용하여 타제품 WAF 보호기능을 우회하여 추가적인 공격이 가능할 수 있어 데이터 유출이 우려됨.

이를 인지하고 수정된 패치를 요청해야 하거나 설정해야 함.




( 2 ) JSON 정보


현대에 JSON 은 데이터 저장 및 전송의 주요 형식 중 하나임.

JSON 구문을 지원하고 개발자가 다른 어플리케이션에서 데이터와 상호 작용하는 방식과 유사한 방식으로 데이터와 상호 작용할 수 있도록 하려면 SQL 에서 JSON 지원이 필요했음.


현재 모든 주요 관계형 데이터베이스 엔진은 기본 JSON 구문을 지원함.

여기에는 MSSQL, PostgreSQL, SQL Injectionte 및 MySQL 이 포함됨.

또한, 최신 버전에서는 모든 데이터베이스 엔진이 기본적으로 JSON 구문을 활성화하므로 오늘날 대부분의 데이터베이스 설정에서 널리 사용됨.


개발자는 더 나은 성능과 효율성을 시작으로 여러 가지 이유로 가용성 이후 SQL 데이터베이스 내에서 JSON 기능을 사용하기로 선택했음.

많은 백엔드가 이미 JSON 데이터로 작업하므로 SQL 엔진 자체에서 모든 데이터 조작 및 전환을 수행하면 필요한 데이터베이스 호출 수가 줄어듬.

또한, 데이터베이스가 백엔드 API 에서 가장 많이 사용하는 JSON 데이터 형식으로 작동할 수 있는 경우 데이터 전처리 및 후처리가 덜 필요하므로 어플리케이션에서 먼저 변환할 필요 없이 즉시 사용할 수 있음.

한다미로 리소스 절약이 극대화됨.


SQL 에서 JSON 을 사용하면 어플리케이션이 SQL API 내에서 데이터를 가져오고, 데이터베이스 내에서 여러 소스를 결합하고, 데이터 수정을 수행하고 JSON 형식으로 변환할 수 있음.

그런 다음 어플리케이션은 JSON 형식의 데이터를 수신하고 데이터를 처리하지 않고도 즉시 작업할 수 있음.


< SQL 에서 JSON 을 사용하는 데이터 흐름 >


각 데이터베이스는 서로 다운 구현 및 JSON 파서를 선택했지만 각각은 서로 다른 범위의 JSON 함수 및 연산자를 지원함.

또한, 모두 JSON 데이터 유형과 기본 JSON 검색 및 수정을 지원함.


< 주요 데이터베이스에 대한 JSON 지원 정보 >


그러나 모든 데이터베이스 엔진이 JSON에 대한 지원을 추가했지만 모든 보안장비(WAF 포함한 보안장비들)는 JSON에 대한 지원을 추가한 것은 아님.

보안장비(WAF 포함한 보안장비들)와 실제 데이터베이스 엔진 간의 구문 분석 기본 요소가 일치하지 않아 SQL 구문이 잘못 식별될 수 있음.




( 3 ) 취약점 분석


JSON 구문을 사용하여 새로운 SQL Injection 페이로드를 만들 수 있음.

이러한 페이로드는 일반적으로 알려지지 않았기 때문에 보안장비(WAF 포함한 보안장비들)를 우회하는 데 사용될 수 있음.

서로 다른 데이터베이스 엔진의 구문을 사용하여 SQL에서 다음과 같은 TRUE 명령어 목록을 컴파일할 수 있음.


PostgreSQL: '{"b":2}'::jsonb <@ '{"a":1, "b":2}'::jsonb Is the left JSON contained in the right one? True.


SQL Injectionte: '{"a":2,"c":[4,5,{"f":7}]}' -> '$.c[2].f' = 7 Does the extracted value of this JSON equals 7? True. 


MySQL: JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') = 'Aztalan' Does the extracted value of this JSON equals to ‘Aztalan’? True.


WAF 가 악의적인 요청을 탐지하는 방법에 대한 이해를 바탕으로 WAF 가 탐지하지 못하는 SQL 구문을 찾아야 함.

WAF 가 유효한 SQL 로 인식하지 않지만 데이터베이스 엔진이 이를 구문 분석하는 SQL Injection 페이로드를 제공할 수 있다면 우회가 가능함.

결과적으로 JSON 기반 SQL Injeciton 공격은 WAF 파서와 데이터베이스 엔진 간의 불일치임.

널리 사용되지 않는 JSON 구문을 사용하는 유효한 SQL 문을 전달했을 때 WAF 는 탐지되지 않음.


< JSON 구문을 사용하는 악성 SQL Injection 페이로드 화면 - WAF 우회 >


위 경우 오른쪽 JSON 이 왼쪽 JSON 에 포함되어 있는지 확인하는 간단한 JSON 연산자 @> 는 WAF 를 우회할 수 있음.

그래서 간단한 JSON 구문을 요청 시작 부분에 추가할 경우 SQL Injection 공격으로 클라우드에서 민감한 정보를 얻을 수 있음.


< JSON 구문을 사용하는 악성 SQL Injection 페이로드 화면 - 클라우드에서 정보 탈취 >




( 4 ) 취약점 공격


JSON 기반 SQL Injeciton 공격을 악용한 WAF 우회 공격의 핵심 문제는 데이터베이스 엔진과 SQL Injecton 탐지 보안장비(WAF 포함한 보안장비들) 간의 적합성 부족임.

이는 SQL 의 JSON 제공 기능이 그렇게 대중적이고 잘 알려진 기능이 아미 해당 구문이 WAF 파서에 추가되지 않았기 때문임.


그래서 대부분의 공급업체를 우회할 수 있음을 발견했음.


■ 5곳 주요 WAF 공급업체 리스트

Palo-Alto Next Generation Firewall

F5 Big-IP

Amazon AWS ELB

Cloudflare

Imperva


< JSON 기반 SQL Injeciton 공격을 우회할 수 있었던 WAF 공급업체 및 제품 목록 >


공격자가 피해 서버 사이에 어떤 WAF 가 있는지 여부를 확인할 수 없더라도 JSON 기반 SQL Injeciton 공격을 우회하여 악용할 수 있음.


오픈소스 SQL Injetion 자동화 툴인 SQLMap 의 최신 버전에서 JSON 구문 회피 기술이 추가됨.

SQLMap 링크 : https://github.com/sqlmapproject/sqlmap


SQLMap 은 일부 WAF 회피 기술을 제공하지만 일반적인 SQL Injecton 공격은 대부분의 최신 WAF 에서 여전히 쉽게 탐지/방어가 됨.


< SQLMap 에서 일반적인 SQL Injecton 공격 시 WAF 탐지/방어 화면 >


그러나 임의로 생성된 JSON 구문을 추가하여 SQLMap 에서 생성된 악성 페이로드 공격 시 잘 알려진 WAF 를 우회하고 성공적으로 악용할 수 있음.

(SQLMap temper 옵션 중 json_waf_bypass 목록 제공함.)


< SQLMap 에서 JSON 기반 SQL Injeciton 공격 시 WAF 우회 화면 >


마지막으로 [CVE-2022-13761] On-Premise cnMaestro 제품 SQL Injection 취약점에 악용된 JSON 기반 SQL Injeciton 공격 페이로드 화면임.


< CVE-2022-13761 취약점 페이로드 >


< CVE-2022-13761 취약점 성공 화면 >




( 5 ) 취약점 방어


현재 5곳 주요 WAF 공급업체에 취약점 정보가 확인된 상태이며 그에 따라 수정된 패치를 제공하고 있음.

아래 5곳 주요 WAF 공급업체에서 수정된 패치로 업그레이드가 필요함.

만약 패치되지 않을 경우 패치를 권고하며 설정되지 않을 경우 설정해줘야 함.


■ 5곳 주요 WAF 공급업체 리스트

Palo-Alto Next Generation Firewall

F5 Big-IP

Amazon AWS ELB

Cloudflare

Imperva


< JSON 구문 지원을 추가한 Amazon AWS ELB 규칙 세트에 대한 AWS 릴리스 정보 >


< JSON 구문에 대한 지원을 추가하는 F5 BIG-IP 승인 정보 >


그 외에도 타 보안장비(WAF 포함한 보안장비들) 업체에서도 이를 인지하고 수정된 패치를 요청해야 하거나 설정해야 함.




참고 사이트 : 

https://claroty.com/team82/research/js-on-security-off-abusing-json-based-sql-to-bypass-waf


댓글 없음:

댓글 쓰기