Hacktron은 GNU Savannah의 Savane 취약점 여러 개를 찾아 GNU 프로젝트의 저장소와 백업 서버에 접근할 수 있는 경로를 확인했다. 실제로 Bash 저장소에 SSH 키를 추가하거나 코드를 올리지는 않았으며, FSF는 보고를 받은 뒤 취약점을 수정했다고 밝혔다.
Hacktron은 2026년 5월 11일 FSF에 첫 취약점을 보고했다. Savane 전체를 추가 점검해 확인된 취약점은 모두 26개였고, FSF는 이를 수정한 뒤 사고 보고서를 공개했다.
GNU Savannah는 Bash와 Coreutils를 비롯한 GNU 프로젝트의 저장소와 관리자 계정, 코드 푸시에 쓰이는 SSH 키를 관리한다. Hacktron은 오픈소스인 Savane의 소스 코드를 대상으로 Hacktron 도구를 이용해 보안 점검을 진행했다. 연구팀은 이 인프라가 침해되면 배포판에 포함돼 널리 설치되는 소프트웨어에도 위험이 생길 수 있다고 설명했다.
문제는 이메일 주소를 검증하는 과정에서 셸 특수문자를 허용한 데서 시작됐다. 공격자는 다음과 같은 주소를 등록하거나 기존 계정의 이메일 주소를 바꿀 수 있었다.
1a`touch${IFS}/tmp/savane-rce-proof`@attacker.example
Savane의 이메일 검증기(frontend/php/include/account.php:275)는 백틱, $, {}, /, | 등이 들어간 주소를 받아들였다. 이 가운데 대부분은 이메일 주소의 로컬 부분에 허용될 수 있는 문자라 검증을 통과했다. 사용자는 가입할 때나 이메일 변경 기능(frontend/php/my/admin/change.php:271)을 통해 이런 주소를 설정할 수 있었다.
로그인한 사용자는 GPG 키를 관리할 수 있고, Savane에는 GPG 키를 시험하는 기능이 있다. 이 기능은 계정 이메일 주소를 이용해 키 지문을 조회한다. frontend/php/include/gpg.php에서 이메일 주소는 일반 문자열로 명령 옵션에 추가되고, 이후 명령 문자열이 proc_open()으로 전달된다. 문자열 형태의 명령은 PHP에서 /bin/sh를 거쳐 실행되므로 셸이 백틱 안의 명령을 먼저 실행한다. 이메일 검증기가 공백을 막기 때문에 페이로드에는 셸이 공백으로 확장하는 ${IFS}가 들어갔다.
원문에서 설명한 취약점 재현 과정은 다음과 같다.
- 위 페이로드를 이메일 주소로 등록하거나 기존 계정의 주소를 바꾼다.
/my/admin/change.php?item=gpgkey를 연다.- GPG 키를 입력하고 “Test GPG keys”를 누른다.
- 이메일 주소에 포함된 명령이 웹 서버 사용자 권한으로 실행된다.
FSF는 취약한 코드 경로가 2026년 3월 7일 배포된 Savane 3.17-c369에서 들어갔다고 추적했다. 이 취약점은 savannah.gnu.org와 savannah.nongnu.org에 영향을 줬으며, 노출 기간은 약 두 달이었다.
Hacktron은 웹 서버 사용자 권한으로 백엔드에 접근한 뒤 Savane 설정 파일에서 데이터베이스 자격 증명을 확인했다고 설명했다. 이후 자신의 계정에 superuser 권한을 설정했다. 슈퍼유저는 다른 계정으로 전환할 수 있어 Hacktron은 Bash 관리자 체트 레이미(Chet Ramey)의 계정으로 전환할 수 있었다.
Savannah의 Git 호스팅은 계정에 등록된 SSH 키를 기준으로 권한을 부여한다. Hacktron은 Bash 관리자 계정의 SSH 키 페이지에서 새 키를 추가할 수 있음을 확인했지만, 실제 키를 추가하거나 저장소를 건드리지는 않았다고 밝혔다. 공격자가 그렇게 했다면 관리자의 이름으로 Bash 저장소에 코드를 푸시할 수 있었고, Coreutils 등 Savannah의 다른 프로젝트도 같은 방식으로 영향을 받을 수 있었다고 설명했다.
Hacktron은 웹 서버 사용자 권한에서 더 나아가 Savannah 백엔드의 루트 권한도 얻었다. 서버는 Trisquel GNU/Linux 11을 실행했고, Ubuntu 22.04의 5.15 LTS 커널을 기반으로 빌드된 linux-libre 커널을 사용했다. 이 커널은 2023년의 OverlayFS 취약점 두 건인 CVE-2023-2640과 CVE-2023-32629, 즉 GameOver(lay)의 영향을 받았다. Canonical은 당시 5.19와 6.2 커널을 수정했지만, 5.15 커널 수정은 2026년 5월 7일 USN-8255-1에 이뤄졌다. Hacktron은 공개된 익스플로잇이 첫 시도에 성공해 백엔드의 루트 권한을 얻었다고 밝혔다.
루트 권한으로 접근한 뒤 Hacktron은 gnubackup 사용자로 GNU 백업 서버에 SSH 접속할 수 있는 키를 찾았다. 연구팀은 저장소 서버의 루트 권한과 백업 접근 권한, 관리자 계정으로 전환할 수 있는 권한을 확인한 뒤 추가 탐색을 멈추고 보고서를 작성했다.
Savane 전체 점검에서 Hacktron은 취약점 후보 33개를 찾았고, 오탐 7개를 제외한 26개를 FSF에 보고했다. 심각도별로는 치명적 2개, 높음 6개, 중간 16개, 낮음 2개였다.
| ID | 심각도 | 취약점 |
|---|---|---|
| HCK-001 | 치명적 | GPG 키 검사에서 이메일 주소를 통한 명령 삽입 및 원격 코드 실행 |
| HCK-002 | 치명적 | 사이트 전체 관리자 그룹 설정(siteadmin/triggercreation.php)의 권한 검사 우회 |
| HCK-003 | 높음 | 그룹 구성원이 그룹의 메일링 리스트 삭제 가능 |
| HCK-004 | 높음 | 모든 사용자가 그룹의 트래커 알림 주소 변경 가능 |
| HCK-006 | 높음 | 그룹 구성원이 메일링 리스트 관리자 비밀번호 재설정 가능 |
| HCK-008 | 높음 | 세션 대신 요청의 file_uid 매개변수를 신뢰해 비공개 파일에 접근 가능 |
| HCK-010 | 중간 | 교차 도메인 SSO가 URL에 session_uid와 session_hash를 전달해 세션 탈취 가능 |
| HCK-012 | 중간 | 비밀번호 재설정 및 이메일 변경 확인 해시가 만료되지 않음 |
| HCK-017 | 중간 | <만 제거하는 실명 입력란을 통한 저장형 XSS |
Savannah 관리자 코윈 브러스트(Corwin Brust)는 보고를 받은 당일 밤 답변했다. FSF는 이번 일을 전면 침해로 다뤄 커널을 패치하고 접근 제어, 데이터베이스, 로그를 점검했으며 다른 공개 Savane 운영자에게도 경고했다. 권한 관련 취약점은 개별 패치 대신 코드 리팩터링을 통해 수정했다.
Savane 3.17-c369은 2026년 3월 7일 취약한 GPG 키 처리 경로를 포함해 배포됐다. Canonical은 5월 7일 5.15 커널용 GameOver(lay) 수정 사항을 발표했고, Hacktron은 5월 11일 원격 코드 실행과 루트 권한, Bash 저장소 접근 가능성을 보고했다. FSF는 5월 14일 수정된 커널을 설치하고 Hacktron 계정을 삭제했다. Hacktron은 같은 달 나머지 취약점 25개를 전달했다. FSF는 6월 19일 사건 관련 입장을 발표했고, 8월 7일 사고 보고서와 Savane 패치를 공개했다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요