# 모든 Firefox 확장 프로그램 설치

> Clean Markdown view of GeekNews topic #28413. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28413](https://news.hada.io/topic?id=28413)
- GeekNews Markdown: [https://news.hada.io/topic/28413.md](https://news.hada.io/topic/28413.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-04-11T19:32:36+09:00
- Updated: 2026-04-11T19:32:36+09:00
- Original source: [jack.cab](https://jack.cab/blog/every-firefox-extension)
- Points: 1
- Comments: 1

## Topic Body

- Mozilla의 Add-ons API를 이용해 **84,000여 개 Firefox 확장 프로그램 전체를 수집·설치**한 대규모 실험 진행
- 스크래핑을 통해 **84,235개 고유 확장** 확보, 총 용량 **49.3GB**, 데이터셋은 Hugging Face에 공개
- 설치 과정에서 **피싱·스팸·PUA(잠재적 원치 않는 앱)** 등 다양한 악성 확장이 다수 발견됨
- 최종적으로 **84,194개 확장 설치에 성공했으나 브라우저는 사실상 사용 불가 상태**로 확인
- 실험은 Firefox 확장 생태계의 **규모, 품질, 보안 문제를 총체적으로 드러낸 사례**로 평가됨

---

### 모든 Firefox 확장 프로그램 설치 실험
- Firefox용 **84,000여 개 확장 프로그램 전체를 수집·분석·설치**한 대규모 실험
- Mozilla의 **공개 Add-ons API**를 통해 전체 확장 목록을 스크래핑하고, 실제 설치까지 수행
- 데이터셋은 **Hugging Face**에 공개되어 누구나 접근 가능
- 여러 차례 시도 끝에 **84,194개 확장 설치에 성공**, 그러나 브라우저는 사실상 사용 불가 상태
- 실험을 통해 **확장 생태계의 규모, 품질, 악성 확장, 스팸, PUA(잠재적 원치 않는 앱)** 등이 드러남

### Firefox 확장 프로그램 스크래핑
- Mozilla의 **addons-server API**는 인증 없이 접근 가능하며, `search` 엔드포인트로 확장 목록을 페이지 단위 조회 가능
- 기본 정렬(`recommended,users`)로는 약 30,000개만 조회되어, `created`, `rating`, `hotness`, `updated` 등 다양한 정렬 옵션을 조합해 누락된 확장을 확보
- `exclude_addons` 파라미터를 활용해 페이지 600 이후의 확장도 추가 수집
- 카테고리별 병렬 요청으로 **총 84,235개 고유 확장** 확보, 평균 크기 **584.9KB**, 총 용량 **49.3GB**
- 최종 데이터셋은 Hugging Face에 업로드되어 공개됨
- 2026년 4월 11일 업데이트에서는 `created__gte`, `created__lte` 필터를 이용해 **정확하고 효율적인 전체 스크래핑** 구현

### Firefox 확장 프로그램 분석
- **가장 큰 확장**은 *dmitlichess*(196.3MB)로, 오디오 파일 2000개 이상 포함
  - 상위 10개 확장은 대부분 **AI 모델, Unity 앱, 이미지 리소스** 등 대용량 콘텐츠 포함
- **가장 작은 확장**은 *theTabs-saver*(7.5KB)로 코드 없음
- **평점 최하 확장**은 *Tab Stack for Firefox*
- **가장 오래된 확장**은 *Web Developer*
- **스크린샷 최다 확장**은 *RDS Bar*(54장)
- **권한 요청 최다 확장**은 *FalscheLaden*(3,695개 권한 요청), 다음은 *Google Dark Theme*(2,675개)
- **가장 많은 확장을 배포한 개발자**는 *Dr. B*(84개 확장), 대부분 README 포함, 아이콘 없음
- ## 피싱 및 악성 확장
  - 데이터셋에서 **암호 지갑 피싱 확장** 다수 발견
    - 예: “Іron Wаllеt”은 설치 3초 후 NocoDB에서 URL을 받아 피싱 페이지로 이동
    - 일부 확장은 시드 문구를 입력받아 서버로 전송
  - 보고 후 다음날 Mozilla에서 대부분 제거됨
  - API 키가 쓰기 권한을 가진 사례도 발견되어 직접 데이터 삭제 수행
- ## SEO 스팸 확장
  - 확장 페이지의 “Homepage” 링크를 **백링크용으로 악용**
  - *Typo Sniper*, *Tab Fortune Teller* 등 **AI 생성 확장**이 카지노 사이트로 연결
  - “Code Injector”류 확장 다수 존재, 동일 코드 구조와 무작위 도메인 사용
  - 대부분 2025년에 생성된 것으로 확인
- ## PUA(잠재적 원치 않는 앱) 확장
  - “Custom Web Search” 패턴을 가진 확장 20여 종, 총 사용자 **70만 명 이상**
  - 모두 동일한 구조와 도메인, “Innover Online Group Ltd” 명시
  - Mozilla가 일부(115,000명 사용자 보유) 비활성화 조치
  - Yahoo 제휴 코드 `safeplexsearch` 사용, Firefox 전용 버전 존재
  - 유사 기업 *Atom Apps*도 동일한 방식으로 확장 배포, 총 22만 일일 사용자
- ## 통계 요약
  - **34.3%** 확장은 일일 사용자 0명
    - 10명 이상 사용자: 25.1%, 100명 이상: 10.6%, 1,000명 이상: 3.2%, 10,000명 이상: 0.7%
  - **76.7%** 오픈소스(SPDX 라이선스 기준)
  - **23%** 는 글 작성 이후 생성된 확장
    - 그중 **19%** 는 사용자·리뷰·아이콘·다운로드 모두 없음
  - **2.4%** 유료 확장, 그중 **38.1%** 는 오픈소스

### 모든 확장 설치 시도
- 각 확장의 `.xpi` 파일을 프로필 폴더에 GUID명으로 저장 후 `extensions.json` 수정
- `addonStartup.json.lz4` 삭제 및 `extensions.json` 조작으로 자동 활성화
- ## 시도 0: 65,335개 (Windows VM)
  - Enterprise Policy 방식으로 설치 시도했으나 **메모리 부족 및 시스템 정지**
- ## 시도 1: 약 1,000개
  - 직접 다운로드 후 수동 배치, 설치 성공
  - 일부 확장은 **모든 텍스트를 특정 문자열로 변경**
  - 다수의 보안 확장으로 인해 **도메인 차단, 경고 팝업** 빈번
- ## 시도 2: 65,335개
  - `addonStartup.json.lz4` 삭제 누락으로 실제 활성화는 1,000개 수준
  - `about:addons` 열람 중 Firefox **프리징 및 재시작 불가**
- ## 시도 3: 65,335개 (Mac)
  - 병렬 다운로드 시 속도 저하, 총 6시간 소요
  - Firefox 실행 시 **응답 없음**, `extensions.json` 크기 **144MB**
  - 디스크 쓰기량 **400GB 이상** 발생
- ## 시도 4~10: 1,000~6,000개
  - 3,000개까지는 웹페이지 로드 가능
  - 4,000개 이상부터 **모든 사이트 차단**, 6,000개 시 `about:addons`만 로드 가능
- ## 시도 11: 84,194개 (6개월 후)
  - 16~24GB RAM 환경에서 **가상머신(VM)** 사용
  - 다운로드 1시간 43분 소요, 일부 확장은 **Defender 탐지**
  - Firefox 실행 시 `extensions.json`이 **189MB**까지 증가, 39분 후 강제 종료
  - 이후 `enable.js` 실행으로 재시도
  - ### Launch 1~3 결과
    - Launch 1: 렌더링 없이 39분 대기 후 중단
    - Launch 2: 브라우저 표시 후 3분 내 크래시
    - Launch 3: 장시간 대기 후 **안정화 성공**, 84,194개 확장 로드 확인

### 모든 확장 사용 테스트
- ## about:addons
  - 설정 페이지 로드 실패, 인덱스 페이지는 **6시간 후 완전 로드**
  - 메모리 사용량 **27~37 GiB** 유지
  - 아이콘 미표시, 응답 지연 심각
- ## about:support
  - 총 84,205개 확장 표시되었으나 내장 확장 포함
  - 실제 설치된 외부 확장은 **84,194개**로 확인
- ## about:preferences
  - New Tab 옵션 다수 존재, **충돌 및 크래시** 발생
- ## New Tab
  - Firefox Home만 정상 로드, 나머지 확장은 모두 실패
- ## moz-extension
  - *buyPal* 확장이 자동으로 탭을 대체하며 유일하게 정상 로드
  - 이후 Firefox **재크래시**
- ## example.com
  - 24시간 대기에도 페이지 미로드, **차단 확장 다수 존재** 추정
- ## about:telemetry
  - Environment Data 클릭 시 **즉시 크래시**

### 사용 가능성 평가
- **불가능**
- Firefox는 84,000개 확장 설치 상태에서 사실상 작동 불가

### 추가 탐구 제안
- `about:addons`의 6시간 로드 원인 및 `example.com` 미로드 원인 분석
- `.xpi`를 지원하는 **Kagi Orion**, **GNOME Web** 등 타 브라우저 실험
- 테마(50만 개 이상)나 사용자 스크립트·스타일 전체 설치 실험
- Chrome Web Store 전체 확장 설치는 **규모상 불가능**

### 각주 요약
- 총 8개 확장은 스크래핑 누락 또는 삭제됨
- 2025년 9월 작성된 초기 버전 이후 2026년 4월 수치 갱신
- “Foreshadowing”은 문학적 복선 장치로 언급됨

## Comments



### Comment 55107

- Author: neo
- Created: 2026-04-11T19:32:37+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47724118) 
- "Middle Finger Emoji Sticker" 상을 받았음  
  그 과정을 짧게 정리해 [블로그에 올렸음](https://www.arnevogel.com/firefox-permissions/)  
  원문은 [여기](https://jack.cab/blog/every-firefox-extension#the-middle-fin...)에서 볼 수 있음  

- 예전 **Internet Explorer 툴바 전쟁**이 떠오름  
  인터넷 카페마다 Ask.com, Google, Yahoo, 나중엔 Bing 툴바가 최소 두 개씩 깔려 있었던 기억임  

- 왜 이렇게 오래 걸렸는지 조사해봤음  
  13년 전엔 extensions.json이 아니라 **extensions.sqlite**였음  
  지금은 20ms마다 전체 파일을 직렬화해 다시 쓰는 구조라 15개 확장엔 괜찮지만 84,194개면 문제임  
  이 **디바운스 값**을 어떻게 정했는지가 궁금함. 어떤 확장이 초당 여러 번 extensions.json을 쓰는지 의문임  

- 실제 페이지는 하나도 제대로 안 열리지만, 글 자체는 정말 재밌게 읽었음  
  “crash reporting을 켰다”는 부분에서 한참 웃었음. Mozilla 팀 입장에선 공포 이야기일 듯함  
  - Firefox의 **crash report**는 공개되어 있음  
    다만 작성자가 올린 건 찾지 못했음. [crash-stats.mozilla.org](https://crash-stats.mozilla.org/)에서 볼 수 있음  
    프로필이 남아 있다면 [이 가이드](https://support.mozilla.org/en-US/kb/troubleshoot-firefox-cr...)를 통해 crash ID를 찾을 수 있음  

- 글이 정말 **기괴하면서도 멋짐**  
  특히 about: 페이지 중 하나 이상에서 **성능 버그**를 발견한 게 인상적이었음. 꼭 후속 조사가 필요함  

- 확장 목록을 **사이트맵**으로도 볼 수 있음  
  [Firefox Add-ons sitemap](https://addons.mozilla.org/sitemap.xml),  
  [Chrome Web Store sitemap](https://chromewebstore.google.com/sitemap),  
  [Edge sitemap](https://microsoftedge.microsoft.com/sitemap.xml) 도 참고 가능함  

- 영상이 너무 웃겨서 눈물이 남  
  컴퓨터를 거의 모르는 **노년층의 웹 서핑**이 이런 느낌일 듯함. 누가 이걸 Chrome에서도 해줬으면 함  
  - 작성자가 30초 동안 연타하던 **가짜 확장 버튼**이 실제로는 확장이 만든 버튼이었다는 깨달음이 너무 웃겼음. 그것도 세 개나 있었음  
  - 개인적으로 제일 웃겼던 건 **금속 파이프 소리 효과음**이었음. 어떤 확장이 그걸 넣었는지 궁금함  
  - 이건 정말 **전설적인 버그 리포트**가 될 것 같음  
  - 아무것도 모르는 사람이 모든 팝업에 “예/동의/확인”을 누르면 이런 결과가 나올 수밖에 없음  
  - 영상이 어디 있는지 모르겠음. 스크롤해봤는데 정지 이미지밖에 안 보였음  

- “이 서비스 메시가 우리 용도엔 과하게 설계됐지만, 브로커는 84,205개의 마이크로서비스엔 너무 느리다”  
  이 **끝없는 긴장감**이 너무 익숙함  

- 모든 NPM 패키지에 의존하던 **전설의 NPM 패키지**가 떠오름  
  [관련 글](https://uncenter.dev/posts/npm-install-everything/)을 보면 진짜 웃김  

- “이걸로 거의 모든 확장을 설치했더니, 이전에 했던 게 다 바보 같아 보인다”는 말에 깊이 공감함  
  나도 비슷한 **허무함**을 느꼈음
