상세 컨텐츠

본문 제목

LastPass 취약점 발견!

국내외 보안동향

by 알약(Alyac) 2016. 7. 29. 14:12

본문

LastPass 취약점 발견!


LastPass는 세계에서 가장 유명한 클라우드 비밀번호 관리 툴 중 하나입니다. PC에서는 LassPass가 제공하는 플러그인을 통해 사용자의 계정정보를 지속적으로 관리할 수 있으며, 모바일에서는 APP을 사용하면 됩니다. 


LassPass는 계정정보를 자동저장할 수 있을 뿐만 아니라, 특정 업체에 대해 암호를 변경하는 자동화 프로그램을 제공합니다. 심지어 MITM 공격을 예방하기 위해 프론트 엔드 암호화 서버를 제공하기도 합니다. LastPass는 해시인증에 대한 보안조치를 강화하기 위해 임의의 솔트값을 덧붙였으며, 서버단에는 PBKDF2-SHA256를 10만 번 적용하여 보안성을 강화하였습니다. LastPass가 사용하는 암호화 매커니즘들은 사용자 계정을 안전하게 지키기에 충분하다고 보여집니다.


하지만 2014년, 몇몇 보안전문가들은 LastPass가 생각만큼 안전하지 않다고 밝혔습니다. 일단 LastPass의 계정 혹은 등록한 이메일 계정정보가 유출되면, 모든 인터넷계정이 유출되는 것과 다름없기 때문입니다. 


실제로 2015년, 공격자가 LastPass 서버에 침투하여 모든 DB를 유출한 사건이 발생했습니다. 다행히 주요 정보들은 모두 프론트 엔드 암호화가 되어 있었으나, Brute Force 공격을 통한 복호화 가능성도 있기에 주의가 필요했습니다.



보안 취약점


Google Project Zero 보안연구원 Tavis Ormandy는 현재 LastPass에서 몇 개의 제로 데이 취약점을 발견했다고 밝혔습니다. 그는 트위터에서 "정말 LastPass를 사용하는 사람이 있습니까? 그냥 봤는데 몇 개의 취약점을 발견했습니다"라고 언급했습니다. 


LastPast는 현재 긴급 패치를 진행하였으며, 해당 패치에 대한 세부내용은 아직 공개되지 않았습니다. 


또다른 보안연구원 Mathias Karlsson 역시 LastPass 취약점을 발견하였습니다. 


LastPass는 URL을 기반으로, 사용자의 계정정보를 자동으로 입력해 줍니다. 예를들어, 사용자의 브라우저가 현재 Google 페이지를 띄워놓고 있다면, LastPass는 자동으로 구글 ID와 비밀번호 정보를 로그인창에 입력합니다. 사용자는 로그인 버튼만 누르면 되는 것입니다.


사용자가 http://www.alyac.com/@google.com/login.php 페이지를 방문했다는 가정 하에, 원래 www.alyac.com의 계정정보를 입력해야 하지만 LastPass는 이 URL을 google의 도메인으로 인식하여 Google의 계정정보를 입력합니다.


만약 어떤 피싱서버가 있고, 해당 피싱서버 목록 하에 유명 웹페이지들의 정적 로그인 페이지가 존재한다고 가정해 봅시다. LastPass가 해당 페이지에 방문한 후 로그인을 한다면 계정정보는 바로 유출되고 말 것입니다.



명령어 실행 취약점


2016년 7월 27일, 어느 보안연구원이 LastPass에 존재하는 명령어 실행 취약점을 발견하였습니다. LastPass는 통신과정 중 JS스크립트에 대해 검증을 하는데, 이는 별다른 효과가 없습니다. 로컬에서 JS코드를 수정하자, 불법통신과 더불어 명령어를 실행할 수도 있다는 점이 밝혀졌습니다.


LastPass 플러그인은 HTML 페이지 중의 CCS 코드를 수정할 수 있을 뿐만 아니라, <input>태그에 iframe을 추가할 수도 있습니다. 이렇게 하면 웹페이지가 Javascript 코드를 이용하여 MoustEvent()를 생성할 수 있습니다. 또한 정확한 X:Y좌표를 이용하여, 정확하게 LastPass프로그램의 아이콘을 "가상클릭" 할 수 있습니다. 일반적인 상황에서 웹페이지는 직접 특정 URL으로 향할 수 없는데, LastPass플러그인을 통해 해당 작업을 진행할 수 있도록 하는 것입니다. 


function trigger_frame() {


        var el  = document.getElementsByTagName("input")[0];


        var pos = el.getBoundingClientRect();


        el.dispatchEvent(new MouseEvent("click", {


            clientX: pos.width + pos.x - 16,


            clientY: pos.height + pos.y - 12,


        }));


    }


다음 Javascript 코드는 message 이벤트를 모니터링하는 코드입니다. message Type의 유형은 URL 실행이며, URL 값은 JS스크립트입니다. 만약 message 이벤트가 감지됐다면, 1이 팝업창으로 뜨게 됩니다. 또한 다른 스크립트도 실행할 수 있습니다.


    function modify_message(a) {


        a.data.messagetype = "openURL";


        a.data.url="javascript:alert(1)";


        // Cleanup


        window.removeEventListener("message", modify_message);


    }


    // Insert my own EventListener


    window.addEventListener("message", modify_message);



현재 해당 취약점은 패치가 완료된 상태입니다. LastPass는 이번에 발견된 취약점에 대해, 해당 취약점은 파이어폭스의 LastPass 플러그인에만 존재한다고 공지를 발표하였습니다. 




참고 : 

https://labs.detectify.com/2016/07/27/how-i-made-lastpass-give-me-all-your-passwords/

관련글 더보기

댓글 영역