07
21

보안 공부를 하다보면 웹 애플리케이션에서 운영체제 명령어를 삽입하는 Command Injection이나, SQL 쿼리를 변조하는 SQL Injection 등의 Injection 공격에 대하여 들어본 적이 있을 것입니다.

그런데 이러한 Injection 방법을 현실에서 시도하였던 사례가 있었단 것을 알고 계시나요?!

 

오늘은 차량 번호판을 이용하여 Injection을 시도하였던 "Joseph Tartaro" 의 이야기를 소개해드리려 합니다.

 

 

번호판 커스텀

본 이야기를 들어가기 앞서, 잠시 번호판에 관련된 이야기를 하고자 합니다.

우리나라와 달리 미국에서는 번호판을 커스텀할 수 있다는 것을 알고 계시나요? 갑자기 번호판 커스텀이라니 뜬금 없으실 수 있지만, 번호판 커스텀이 오늘 이야기할 Injection의 근간이 되는 부분입니다!

 

미국에서는 자신의 개성을 표현하기 위해 최대 7자 내에서 알파벳과 숫자 등을 섞어 번호판을 커스텀할 수 있습니다.

글자 간 띄어쓰기 및 하트나 별 문양도 가능하며, 그 디자인도 여러가지가 존재한다고 합니다.

 

왼쪽은 실제 번호판의 한 사례로, I와 1을 섞어 가까이서 보지 않는 이상 구별하기가 힘들다는 점을 이용하여 경찰을 약올리는 번호판이 있기도 하였습니다.

 

이쯤에서 눈치채셨을 수도 있지만, Joseph Tartaro는 이러한 번호판 커스텀을 이용하여 Injection을 시도하였습니다.

 

번호판 커스텀 이야기는 이정도로만 하고, Joseph Tartaro는 왜? 어떻게? Injection을 시도하게 되었는지 이야기해보겠습니다.

 

 

교통 범칙금 부과를 무효화시킬 수 있을까?

먼저 Joseph Tartaro에 대해 간단하게 소개해드리면, Droogie 라는 닉네임으로 활동하는 해커입니다.

어느날 그는 주차 위반으로 인해 벌금 35달러가 부과된 적이 있었는데, 그 일을 계기로 어떻게 하면 벌금을 받지 않을지 생각하게 되었습니다. 그러던 중 NULL 번호판을 달면, 데이터베이스에 입력되어도 위반 사항이 계산되지 않아 벌금이 부과되지 않을 것으로 생각하여 번호판을 NULL로 등록하게 되었습니다.  (오히려 차량국에서 NULL 등록을 허용해주었다는 사실에 놀랐다고 합니다..!)

 

 

NULL 번호판, 결과는??

NULL 번호판을 등록한 첫해는 별일 없이 순탄해보였습니다. 하지만 번호판 갱신시기가 되자, 차량 관리국 웹사이트에서 첫번째 문제가 발생하였습니다.

갱신을 위해 그가 입력한 번호판(NULL)과 차량 식별 번호가 웹 사이트에서 유효하지 않게 동작하며, 갱신할 수 없게 된 것입니다. 하지만 Tartaro는 번호판 대신 참조 번호를 사용하여 갱신에 성공하였습니다.

그렇다면, 이대로 그가 시도한 NULL Injection은 성공이었을까요?

결론부터 말씀드리자면, NULL 번호판을 이용한 Injection은 실패하였으며 오히려 Tartaro에게 피해가 발생하였습니다.

 

 

NULL 값으로 인한 역효과

NULL 번호판을 계속 사용하던 어느날, Tartaro에게 수십장의 범칙금 고지서가 날아오게되었습니다.

캘리포니아에 거주하던 Tartaro였지만, 간적도 없는 주 전역에 걸쳐서 주정차 위반 벌금이 37$ / 60$ / 74$ / 80$ 가 부과되었으며, 그 원인은 바로 Tartaro가 등록한 NULL 번호판이었습니다.

 

가끔 교통 경찰이 범칙금 고지서에 차량 번호 기입을 잊어버릴 때가 있었는데, 그때마다 "없음" 을 의미하는 NULL이 자동으로 입력되도록 되어있었고, 그 NULL이 Tartaro의 번호판 넘버인 NULL을 의미하게 되어 Tartaro에게 모든 범칙금 고지서가 자동으로 전송되게 된 것입니다.

 

Tartaro로는 차량 관리국에 이해 대해 문의하여 타 지역에서 발생한 범칙금은 면제받았지만, Tartaro가 거주하는 지역에 대한 NULL 벌금은 부과할 수 밖에 없었다고 합니다.

이러한 일에도 불구하고 Tartaro는 해당 번호판을 자랑스럽게 생각하여 계속 유지하기로 결심하였다고 합니다!

 

 

Injection의 다른 사례

앞서 이야기 드렸던 Tartaro의 사례와 유사하지만, 의도치  않게 Injection이 수행되었던 사례도 있습니다.

몇년 전, 미국의 팟캐스트인 "99% Invisible"의 라디오를 닛산 차에서 블루투스를 이용하여 재생하는 경우, 시스템이 멈추거나 재부팅되는 사례가 있었습니다.

여기서 시스템에 오류가 생긴 원인은 바로 팟캐스트 이름에 있었습니다.

"99% Invisible" 에서 "% In"  부분이 있는데, 여기서 I가 무시되고 "%n"이 합쳐지면서 의도치 않게, 출력된 문자 수를 저장하는 데 사용되는 형식지정자로 동작한 것입니다.

 

아이러니하게 다른 대문자들은 무시하지 않아, 시스템에 오류가 발생하지 않았지만

대문자 I 만 무시되어, 99% Invisible의 라디오를 들으려던 사용자에게 "%n" 형식 지정자를 완성시키며 오류를 발생시켰던 사례입니다.

 

 

마치며

오늘은 현실에서 발생하였던 Injection 사례를 주제로 글을 작성해보았습니다.

앞서 다루었던 시스템에 영향을 끼치는 사례와 달리, 사람을 식별하는 기능이 있는 감시카메라를 속이는 (사람으로 인식하지 못하도록) 사례도 있습니다[노말틱 유뷰트]. 

 

Joseph Tataro에 경우 생각해낸 기법이 완전히 성공하지는 못했지만, 이러한 창의적인 생각을 할 수 있는것 또한 해커로서 중요한 자질이 아닐까 생각해보며 포스팅을 마치겠습니다.

 

-LowAngle-

COMMENT