# OpenWrt 공급망 침해 사건

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18183](https://news.hada.io/topic?id=18183)
- GeekNews Markdown: [https://news.hada.io/topic/18183.md](https://news.hada.io/topic/18183.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-12-10T09:50:41+09:00
- Updated: 2024-12-10T09:50:41+09:00
- Original source: [flatt.tech](https://flatt.tech/research/posts/compromising-openwrt-supply-chain-sha256-collision/)
- Points: 2
- Comments: 1

## Topic Body

#### 소개
- Flatt Security Inc.의 보안 엔지니어 RyotaK가 OpenWrt의 펌웨어 업그레이드 과정에서 보안 취약점을 발견함.
- OpenWrt는 임베디드 장치용 Linux 기반 펌웨어로, 특히 라우터에 인기가 많음.

#### sysupgrade.openwrt.org
- `sysupgrade.openwrt.org`는 사용자가 원하는 패키지를 선택하여 새로운 펌웨어 이미지를 생성할 수 있는 온라인 서비스임.
- 사용자가 제공한 소스 코드로 이미지를 빌드하는 과정에서 보안 문제가 발생할 수 있음.

#### 명령어 주입
- `sysupgrade.openwrt.org` 서버는 오픈 소스 프로젝트로, 소스 코드는 `openwrt/asu`에 호스팅됨.
- 서버는 컨테이너를 사용하여 빌드 환경을 격리하지만, 사용자 입력을 통해 임의의 명령어를 실행할 수 있는 취약점이 발견됨.

#### SHA-256 충돌
- 요청의 해시를 생성하는 과정에서 SHA-256 해시가 12자로 잘려 사용됨.
- 해시 충돌을 통해 잘못된 빌드 아티팩트를 반환하도록 서버를 속일 수 있음.

#### SHA-256 무차별 대입
- OpenCL을 사용하여 GPU에서 해시를 무차별 대입하는 프로그램을 구현했으나 성능이 좋지 않았음.
- Hashcat을 사용하여 12자 충돌을 찾는 데 성공함.

#### 두 공격 결합
- 합법적인 패키지 목록과 동일한 해시를 가진 명령어 주입 페이로드를 찾아 공격을 수행함.
- 공격자는 사용자가 악성 펌웨어로 업그레이드하도록 강제할 수 있음.

#### 문제 보고
- OpenWrt 팀에 문제를 보고한 후, 서비스가 일시 중단되고 빠르게 수정됨.
- 사용자에게 공지가 발행되어 장치가 손상되지 않았는지 확인하도록 함.

#### 결론
- 명령어 주입과 SHA-256 충돌을 통해 `sysupgrade.openwrt.org` 서비스를 손상시킬 수 있었음.
- OpenWrt 팀의 빠른 대응에 감사하며, 사용자에게 문제를 신속히 알림.

#### 광고
- Flatt Security는 보안 평가 및 침투 테스트 서비스를 제공하며, 새로운 웹 페이지 업데이트를 기념하여 특별 할인을 제공함.
- Shisho Cloud라는 강력한 보안 평가 도구도 제공함.

## Comments



### Comment 32193

- Author: neo
- Created: 2024-12-10T09:50:41+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42363102) 
- 특정 사용자나 기기에 맞춰진 코드 실행의 정상화는 검증 가능성이 없고, 백도어가 포함된 빌드를 생성하지 않았다는 것을 확인할 수 없는 취약점이 있음
  - xz-utils의 동일한 빌드를 사용하거나, 보안 연구자들이 공급망 침투 여부를 확인할 수 있는 빌드를 사용하는 것이 중요함
  - Mozilla는 Merkle tree에 릴리스 빌드를 공개적으로 기록하려는 시도를 했으나 중단됨
  - Google은 Pixel 펌웨어 빌드에 대한 구현을 작성했지만, Google Play Store를 통한 앱은 취약할 수 있음
  - Apple은 개별 기기에 맞춰진 빌드를 투명하게 제공하지 않아 Google보다 더 나쁨
  - Gentoo의 ebuild 저장소는 잘 구현된 바이너리 투명성의 예시로, 오픈 소스 소프트웨어의 가장 크고 분산된 Merkle tree 중 하나임

- ".join" 사용은 위험할 수 있음
  - 인접한 필드 간의 문자를 이동시켜도 해시가 변경되지 않음
  - 시스템을 직접적으로 손상시키지는 않지만, 캐시를 손상시키거나 다운그레이드를 유도할 수 있음

- 오픈 소스는 비즈니스급 폐쇄 소스와 경쟁할 수 없음
  - 문제를 3시간 만에 수정했으며, 고객이 6개월 동안 패치를 기다리지 않도록 함
  - 문제를 보고한 사람을 고소하지 않음
  - 사용자에게 "구식"이지만 완벽하게 작동하는 기기를 버리라고 하지 않음

- "공급망"이라는 용어가 블로그 게시물에 나타나지 않음
  - "공급망"은 원자재를 완제품으로 변환하고 최종 소비자에게 배포하는 복잡한 물류 시스템임
  - OpenWRT의 상업적 공급자를 위한 시스템인지, 최종 소비자를 위한 시스템인지에 대한 의문이 있음

- 오픈 소스 도구는 원래 목적에 맞지 않게 조정되었음
  - 대기업은 문제를 해결하기 위해 소송을 제기하고 패치를 절대 공개하지 않을 것임
  - OpenWRT는 정보를 받은 후 불안전한 서비스를 오프라인으로 전환하고, 보고서를 확인한 후 3시간 만에 패치를 배포함

- 해시를 잘라내는 아이디어가 어떻게 나왔는지 궁금함
  - 어떤 목적이나 이점이 있는지 이해하기 어려움

- GPU 파워가 짧은 충돌을 찾는 데 많이 필요하다는 점에 놀람
  - 보안 분석에 한 달에 40k가 적절한 가격인지에 대한 의문이 있음
  - 좋은 보안 연구자가 연간 약 500k를 벌 수 있는지에 대한 질문이 있음

- 해시의 길이가 64자 중 12자로 잘린다는 점을 즉시 알아챔

- hashcat 성능이 인수 순서에 따라 크게 달라지는 이유에 대한 질문이 있음
  - 매 실행마다 대상 패턴을 스캔하는지에 대한 의문이 있음

- 매우 영리한 코드 읽기와 익스플로잇 개발에 대한 훌륭한 글임
