폰트(Font)에 따라 달라지는 유니코드(Unicode) 혼동 문자, 웹 보안의 새로운 위협!
유니코드(Unicode) 혼동 문자의 시각적 유사성을 측정하는 도구인 confusable-vision을 개발하여, 폰트(Font)에 따른 렌더링 차이를 분석함.
82개의 문자 쌍이 특정 폰트에서 픽셀 단위로 동일하게 렌더링됨을 확인, 기존 유니코드 기반 보안 방식의 한계를 지적함.
폰트 선택(Font Selection)에 따라 혼동 문자 위험도가 달라지며, 웹 폰트(Web Font) 사용 시 위험성을 인지해야 함을 강조함.
namespace-guard에 SSIM(Structural Similarity Index Measure) 기반의 가중치 적용을 통해, 혼동 문자 위험을 정량화하고 보안성을 강화할 수 있음을 제시함.
SSIM(Structural Similarity Index Measure)을 활용한 폰트 렌더링 분석
저자는 SSIM(Structural Similarity Index Measure)을 사용하여 1,418개의 유니코드(Unicode) 혼동 문자 쌍을 230개의 시스템 폰트(System Font)에서 렌더링하고, 픽셀 단위의 유사성을 측정했다. SSIM은 이미지의 휘도, 대비, 구조적 패턴을 비교하여 -1에서 1 사이의 점수를 반환하며, 1에 가까울수록 픽셀 단위로 동일함을 의미한다. 특히, Greyscale 렌더링(Greyscale Rendering)을 통해 폰트 렌더링 시의 세밀한 부분까지 비교 분석하여, 폰트 렌더링에 따른 시각적 유사성 문제를 객관적으로 평가했다.
폰트(Font)에 따른 혼동 문자 위험성
분석 결과, 82개의 문자 쌍이 특정 폰트에서 픽셀 단위로 동일하게 렌더링되는 것으로 나타났다. 예를 들어, Cyrillic 'а'와 Latin 'a'는 Arial, Menlo 등 40개 이상의 폰트에서 동일하게 렌더링된다. 이는 폰트 선택(Font Selection)에 따라 혼동 문자 위험도가 달라짐을 의미하며, 웹 개발 시 사용되는 폰트의 종류와 폰트 렌더링 방식에 대한 이해가 필요함을 시사한다. 특히, 웹 폰트(Web Font) 사용 시에는 폰트의 특성을 고려하여 보안 설계를 해야 한다.
namespace-guard의 SSIM(Structural Similarity Index Measure) 기반 가중치 적용
저자는 confusable-vision의 분석 결과를 바탕으로, namespace-guard에 SSIM(Structural Similarity Index Measure) 기반의 가중치 적용을 제안한다. 이는 픽셀 단위의 유사성 점수를 활용하여 혼동 문자의 위험도를 정량화하고, 폰트별 위험도를 고려하여 보안 정책을 수립하는 것을 가능하게 한다. 구체적으로, 픽셀 단위로 동일한 문자 쌍은 강력하게 차단하고, 유사도가 낮은 문자 쌍은 경고 수준으로 처리하여 오탐(False Positive)을 줄이는 방향으로 보안 시스템을 개선할 수 있다.
웹 보안(Web Security)에 대한 시사점
본 연구는 기존의 유니코드(Unicode) 기반 보안 방식의 한계를 지적하고, 폰트 렌더링(Font Rendering)에 따른 시각적 유사성을 고려한 새로운 보안 접근 방식을 제시한다. 특히, 브라우저 폰트 렌더링(Browser Font Rendering) 방식에 따라 혼동 문자 위험이 달라지므로, 웹 개발자는 폰트 선택과 폰트 렌더링 설정을 신중하게 고려해야 한다. 또한, namespace-guard와 같은 보안 도구에 SSIM 기반의 가중치를 적용하여, 보다 정확하고 효율적인 혼동 문자 탐지 시스템을 구축할 수 있다.