테크레시피

자바스크립트 라이브러리에 악성코드가…

웹 브라우저 버전간 차이를 무효화하는 자바스크립트 라이브러리 Polyfill.io가 지난 2월 프로젝트 소유자 변경 후 악성코드가 삽입되어 공급망 공격에 이용됐으며 10만 개 이상 사이트에 영향을 미쳤다.

Polyfill.io(polyfill.js)는 앤드류 배츠(Andrew Betts)가 개발한 자바스크립트 라이브러리다. 웹브라우저 버전간 기능 차이로 개발할 때 어려움을 겪을 수 있지만 Polyfill.io를 사용하면 새 버전에만 있는 기능을 구 버전에서도 사용할 수 있어 버전 차이를 신경 쓰지 않고 개발을 진행할 수 있다.

사용자로는 세계경제포럼, 학술지 등을 소장하고 있는 전자도서관 JSTOR, 비즈니스 소프트웨어 개발로 알려진 인튜이트(Intuit) 등이 있으며 데이터사인(DataSign)이 2023년 12월 웹 서비스 15만 781개를 대상으로 실시한 감지된 서비스 TOP100에서 776건으로 97위를 차지했다.

하지만 이미 개발자는 프로젝트를 떠났다. 유지 보수자였던 제이크 챔피언(Jake Champion)이 프로젝트를 인수했지만 초당 1만 건 이상 요청을 처리하는 서비스로 성장하는 건 예상 밖이었다고 한다. 2024년 2월 중국 펀널(Funnull)이라는 기업에 매각됐다. 배츠는 이 시점 Polyfill.io 사용을 중단하도록 촉구했다.

상황 변화를 알아챈 사용자가 조사한 결과 펀널은 Polyfill.io에 버그가 있거나 문제가 발생해도 보증하지 않는다며 사용 조건을 변경해도 통지하지 않는다는 등 의견을 표명했다. 이를 지적하는 깃허브 게시물은 삭제됐다.

보안 기업 산섹(SanSec)에 따르면 소유자가 펀널로 바뀐 뒤 cdn.polyfill.io를 삽입한 사이트를 통해 모바일 기기에 악성코드를 감염시키려는 시도가 확인됐다고 한다. Polyfill.io를 사용 중인 사이트는 10만 개 이상으로 추정된다.

원 개발자 배츠에 따르면 웹시리얼(Web Serial)이나 웹블루투스(Web Bluetooth) 같이 Polyfill로 대응할 수 없는 예외를 제외하고 웹 플랫폼에 채택된 대부분 기능은 주요 웹브라우저에 즉시 채택되므로 Polyfill.io 라이브러리가 필요한 웹사이트는 없다고 한다.

참고로 Polyfill.io가 필요한 이들을 위해 클라우드플레어와 패스틀리(Fastly)가 자체 포크를 제공하고 있다. 관련 내용은 이곳에서 확인할 수 있다.

정용환 기자

대기업을 다니다 기술에 눈을 떠 글쟁이로 전향한 빵덕후. 새로운 기술과 스타트업을 만나는 즐거움을 독자들과 함께 나누고 싶습니다.

뉴스레터 구독