GN⁺: OpenWrt 공급망 침해 사건
(flatt.tech)소개
- 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라는 강력한 보안 평가 도구도 제공함.
Hacker News 의견
-
특정 사용자나 기기에 맞춰진 코드 실행의 정상화는 검증 가능성이 없고, 백도어가 포함된 빌드를 생성하지 않았다는 것을 확인할 수 없는 취약점이 있음
- 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 성능이 인수 순서에 따라 크게 달라지는 이유에 대한 질문이 있음
- 매 실행마다 대상 패턴을 스캔하는지에 대한 의문이 있음
-
매우 영리한 코드 읽기와 익스플로잇 개발에 대한 훌륭한 글임