최근 링크드인(LinkedIn)을 통해 리드 엔지니어 채용 제안으로 위장한 정교한 소셜 엔지니어링 공격 사례가 보고되어 개발자 커뮤니티에 경고등이 켜졌습니다. 공격자는 실존하는 풀스택 개발자와 예술 분야 저널리스트의 신원을 도용하여 가짜 리크루터 프로필과 깃허브(GitHub) 저장소를 만들고, 피해자에게 '오래된 노드(Node) 모듈 문제를 확인해 달라'는 명목으로 악성 코드가 포함된 저장소 리뷰를 요청했습니다. 이는 개발자가 무심코 'npm install' 명령어를 실행하도록 유도하여 시스템에 백도어를 설치하는 수법입니다.
공격에 사용된 깃허브 저장소는 리액트(React) 프론트엔드와 노드 백엔드 구조를 갖추고 있었으며, 약 250줄의 'app/test/index.js' 파일에 백도어가 숨겨져 있었습니다. 이 파일은 겉으로는 테스트 스위트처럼 보였지만, 실제로는 URL 조각을 조합하여 외부 서버와 통신하고, 해당 서버에서 받은 임의의 코드를 피해자의 시스템에서 실행할 수 있도록 설계되었습니다. 특히, 'package.json' 파일의 'prepare' 스크립트는 'npm install' 명령 실행 후 자동으로 구동되도록 설정되어 있어, 의존성 설치만으로도 백도어가 활성화되는 치명적인 구조였습니다. 피해자는 의심을 느껴 일회용 가상 서버(VPS)에서 읽기 전용 에이전트(agent)로 코드를 점검했고, 몇 초 만에 악성 파일이 탐지되어 피해를 막을 수 있었습니다.
이번 공격은 단순히 피싱 이메일을 넘어, 개발자들이 일상적으로 사용하는 플랫폼과 업무 흐름을 악용했다는 점에서 심각성을 더합니다. 링크드인과 깃허브는 개발자들에게 필수적인 도구이며, 채용 제안이나 코드 리뷰 요청은 흔한 상호작용입니다. 공격자들은 이러한 신뢰 관계를 악용하여, 바쁘거나 부주의한 개발자들이 보안 위협을 인지하지 못하고 악성 코드를 실행하도록 유도합니다. 특히, 실존 인물의 신원을 도용하고 비기술직 리크루터가 기술적 질문에 능숙하게 답하는 등 치밀한 준비를 통해 의심을 피하려 했습니다.
이러한 공격에 대한 방어는 개인의 보안 위생(security hygiene) 강화와 플랫폼의 책임이 동시에 요구됩니다. 개발자들은 낯선 코드나 의존성을 설치할 때 항상 경계심을 갖고, 가능하면 샌드박스(sandbox) 환경이나 읽기 전용 에이전트를 활용하여 안전하게 검토하는 습관을 들여야 합니다. 또한, 링크드인과 깃허브 같은 플랫폼은 도용된 프로필이나 악성 저장소에 대한 신고 처리 절차를 강화하고, 이러한 위협에 대한 사용자 보호 기능을 개선해야 할 것입니다. 이번 사례는 사이버 범죄가 점점 더 정교해지고 일상적인 업무 환경으로 침투하고 있음을 보여주는 중요한 경고입니다.