본문 바로가기

IT for researcher/Web Security

Defending against injection attacks through context-sensitive string evaluation

Safe ad-hoc serialization


Serialization API (Prepared Statment 같은 것들)  쓰는 방식으로 SQL Injection을 해결할 때 장/단점

장점
1. 개발자가 해당 API를 사용해서 개발만 하면 자동으로 해결됨~~

단점.
1. tool이 제한적이다. 지원하지 않는 부분들도 있다 XPATH 등등.
2. 개발자에 의존적이다.
3. 해당 API를 사용하지 않고 개발한 기존 시스템들이 존재한다.

메타데이터를 추적해서 소스고침없이 safe adhoc serialization을 수행.

메타데이터 - orgin 데이터에 대한 정보 (user 제공, 개발자 제공)
펄에서 variable taint 와 유사하다. (그러나 좀더 많은 정보를 가지고 있어야한다.)
사용자로부터 넘어온 문자열 변수 조각이 존재하는지 여부를 나타내는 정도가 아닌
문자열 변수를 구성하는 모든 각 조각들의 origin을 기술한다.
(History 데이터로 사용가능) 적절한 유효성 검사를 수행하도록 도움을 준다. 데이터베이스 메타캐릭터를 위한 검사는 쉘 명령어의 일부로 수행되는것은 부적절하다.

메타데이터 Assignment:

모든 문자열 변수에 메타데이터를 할당한다.
사용자 제공 입력에 대해서는 플랫폼의 입력 벡터를 통하여 얻어질 수 있다.
애플리케이션이 사용자로부터 입력을 받을 때 (예) HTTP 파라미터로 , 플랫폼 API는 받은 변수가 적당한 메타데이터 (믿을수 없다고 마킹) 를 가지고 제공되었다는 것을 확실할 것이다. 반대로 정적 문자열 상수는 자동적으로 안전하다고 인식한다.