웹애플리케이션(이하 '웹앱') 개발 언어를 바꿔 해킹 공격을 예방할 수 있을까? 미국 유명 대학의 소프트웨어 연구팀이 이를 위한 새 오픈소스 프로그래밍 언어를 개발 중이라고 밝혀 눈길을 끈다.
7일(현지시각) 미국 카네기멜론대학교(CMU)는 여러 개발 언어를 쓸 수 있게 해주는 프로그래밍 언어 '와이번(Wyvern)을 소개하며, 웹앱 보안 위협 유형 가운데 비중이 큰 '코드인젝션' 공격으로부터 컴퓨터를 보호할 수 있다고 밝혔다.
CMU의 소프트웨어연구소(ISR) 소속 조나단 앨드리치 부교수가 연구팀을 이끌며 와이번을 개발 중이다. 설명에 따르면, 와이번을 사용시 SQL과 자바스크립트 등 목적이 다양한 특정 용도별 '하위언어(sublanguage)'를 적재적소에 써서 보안취약점이 나타날 여지를 없앨 수 있다.
요컨대 와이번이라는 '새 언어'가 있는데, 이것을 쓰면 이런저런 '기존 언어'로 프로그램 한 벌을 짜게 해준다? 이 대목에선 고개를 약간 갸웃거리게 된다.
쉽게 말해 와이번이란 언어 자체가 과거에 써온 하위언어 사용을 전제로 한다. 하위언어는 'C'나 '자바'처럼 자기 혼자 프로그램 전체를 완성할 수 있는 범용 프로그래밍 언어가 아니라, 데이터베이스(DB) 질의 결과를 얻기 위한 'SQL'이나 웹페이지 제작을 위한 'HTML'같은 언어를 가리키는 개념이다.
즉 말은 새로운 프로그래밍 언어지만, 실은 기존 프로그래밍 언어를 다양하게 활용할 수 있는 '중개 언어'에 가까운 인상을 준다.
CMU 측은 와이번이 '개발자가 다루고자 하는 데이터 형식'에 따라 그에 맞는 하위언어를 결정해 웹앱을 만들게 해준다고 밝혔다. 이를테면 다룰 데이터가 로마자 알파벳과 수 문자열인지, 부동소수점 값인지, 웹페이지나 DB질의같이 더 복잡한 구조의 데이터인지에 따라 쓸 수 있는 하위언어가 바뀐단 얘기다.
앨드리치 부교수는 와이번은 함께 일하는 사람들이 모인 팀 전원과 (여러) 언어를 자연스럽게 바꿔가며 소통하는 숙련된 국제협상가 같은 존재라며 (여러 언어를 한 프로그램 안에서 상황에 맞게 쓸 수 있도록 해주는) 이런 접근방식은 소프트웨어 개발 시스템에 큰 영향을 줄 것이라 생각한다고 말했다.
그런데 여러 프로그래밍 언어를 쓰는 소프트웨어 개발 과정은 그리 새로운 개념이 아니다. 오히려 많은 웹앱 개발 과정에선 상황에 따라 개발자 또는 개발팀이 복수의 프로그래밍 언어를 써야 할 필요가 생긴다.
이전부터 웹페이지를 만들 땐 HTML가 기본이지만, 사용자와 상호작용할 수 있는 기능을 구현하기 위해선 자바스크립트와 SQL을 함께 쓴다. 웹애플리케이션을 개발할 땐 오히려 여러 언어를 동원하는 경우가 많았다.
웹앱을 만들 때 여러 언어를 쓰는 일이 이전부터 흔했다면 개발자가 와이번을 쓴다고 뭐가 달라지겠느냐 싶지만, 앨드리치 부교수는 와이번이 (여러 언어 환경을 오가는) 개발자의 작업을 단순화할 수 있다며 더불어 그런 과정의 전후에 보안 취약점이 발생하는 상황도 피할 수 있게 해준다고 주장했다.
연구팀은 기존 여러 프로그래밍 언어가 혼용되는 프로젝트 환경의 흔한 문제를 예로 들었다. SQL같은 특정 목적의 언어에 쓰이는 명령어를 웹애플리케이션 코드 안에 일반 문자열로 붙여넣곤 하는데, 주의를 기울이지 않으면 '크로스사이트스크립팅(XSS)'과 'SQL인젝션' 공격에 노출되기 십상이란 설명이다.
XSS와 SQL인젝션은 현대 웹 환경에서 시스템과 사용자에게 피해를 줄 수 있는 흔한 공격 유형이다. 간단한 컴퓨터 시스템 관련 지식만 갖고 있는 사람도 이런 공격으로 계정과 비밀번호를 도용하거나 웹사이트 DB 전체 내용을 없애버리는 명령을 내릴 수 있다고 CMU 연구팀 측은 경고했다.
이런 공격에 피해를 당할 여지를 줄이려면 여러 언어를 혼용해 웹앱을 구현하는 과정에 주의를 기울여야 하는데, 연구팀은 와이번이라는 언어를 쓰는 개발자에겐 이런 부담이 덜하다는 얘길 하고 싶어하는 것 같다.
실제로 앨드리치 부교수는 와이번은 (보안취약점으로 악용될 수도 있는) 이런 목적의 문자열 사용을 불필요하게 만들어 줌으로써 코드삽입 공격과 같은 유형의 문제점을 모두 제거할 수 있다고 강조했다.
다만 연구팀은 아직 와이번이 완전히 개발되진 않았다고 밝혔다. 개발 초기에 그 오픈소스 프로젝트를 접한 이들에게 실험적으로 쓰이는 중이다. 공식 발표와 별개로 와이번을 소개한 CMU 공식 웹페이지에선 이 언어의 목표가 웹앱뿐아니라 모바일앱 개발 환경에도 적용되는 것으로 나와 있다.
소스코드 공유 및 협업 커뮤니티 사이트 기트허브(GitHub)의 와이번 프로젝트 페이지에 기술 소개와 라이선스 안내가 돼 있다. 와이번을 사용하려면 자바8 버전의 자바개발도구(JDK), 통합개발환경(IDE) 이클립스 케플러와 인텔리J 13 이상 버전 등을 써야 한다.
관련기사
- 구글 웹개발 언어 '다트', 서버에도 쓰인다2014.08.10
- 페북, PHP 대신할 새 프로그래밍 언어 공개2014.08.10
- MS 타입스크립트, 자바스크립트 넘나2014.08.10
- 액터 모델 프로그래밍 주목하라2014.08.10
이날 IT미디어 기가옴의 데릭 해리스 수석기자는 와이번을 소개하며 '웹을 위한 폴리글랏(polyglot) 프로그래밍 언어'라고 표현했다.
폴리글랏은 다양한 언어를 구사하는 행위를 가리키는 개념이다. 컴퓨터에 빗대면 여러 언어로 프로그래밍을 하는 것을 나타낸다. 즉 와이번은 개발자의 폴리글랏 프로그래밍을 도와줄 수 있는 언어라는 평가다.