
오픈소스 파일 정리 도구 BleachBit이 6.0.4 버전을 출시하면서 여러 보안 취약점을 수정했습니다. 가장 주목할 점은 Windows에서 파일을 안전하게 삭제(Shred)할 때 파일 조각이 분산된 경우 일부 클러스터가 지워지지 않고 디스크에 남아 있을 수 있었다는 것입니다. 이 버그가 언제부터 존재했는지 정확히 밝혀지지 않아, 과거에 중요한 파일을 삭제한 사용자는 해당 드라이브의 여유 공간 전체를 다시 덮어쓰는 방식으로 대응해야 합니다. 이 외에도 경로 조작(Path Traversal), 심볼릭 링크 악용, 악의적인 실행 파일 우선 실행(PATH 하이재킹), DLL 사전 로딩 공격, XML 외부 엔터티(XXE) 주입 등 다양한 보안 결함도 함께 패치되었습니다. 민감한 데이터를 다루는 환경에서 BleachBit을 사용 중이라면 즉시 최신 버전으로 업데이트하는 것을 권장합니다.
BleachBit 6.0.4 릴리스를 통해 Windows에서 파일 조각(클러스터)이 분산된 경우 안전 삭제가 일부 클러스터를 건너뛰는 버그가 수정됨. 취약한 버전 범위와 잔존 데이터 비율은 공개되지 않음.
과거 버전으로 민감한 파일을 삭제한 경우 해당 파일의 일부가 디스크에 복구 가능한 형태로 남아 있을 수 있음. 추가로 PATH 하이재킹, DLL 프리로딩, 경로 조작, XML 주입, 심볼릭 링크 악용 등 다수의 공격 경로가 존재했음.
Windows의 파일 단편화(Fragmentation) 처리 미흡, 명령어 절대 경로 미사용, 심볼릭 링크 및 재파스 포인트 미검증, XML 파서의 DTD(외부 엔터티) 허용, 와일드카드 패턴 개수 미제한 등 복수의 구현상 결함.
BleachBit 6.0.4로 업데이트. 이전 버전에서 민감 파일을 삭제한 경우 해당 드라이브의 여유 공간(Free Space) 전체를 덮어쓰는 작업 수행 권장.
중요 데이터를 취급하는 PC·서버에서 BleachBit을 운용 중이라면 즉시 6.0.4로 업데이트하고, 과거 삭제 이력이 있는 드라이브는 여유 공간 전체 와이프(Wipe Free Space)를 실행해야 함. Windows 환경에서 PATH·DLL 하이재킹 방어가 강화된 점도 주목.
본문
오픈소스 정리 도구 BleachBit이 이번 주 버전 6.0.4에 도달했습니다. Windows, Linux, 그리고 이제는 macOS에서도 캐시, 브라우저 흔적, 파일을 삭제합니다.
이전 빌드로 Windows에서 민감한 파일을 안전 삭제(Shred)했다면, 와이프가 놓친 부분이 아직 디스크에 남아 있을 수 있습니다. 단편화(Fragmentation)는 일반적인 상황입니다. Windows는 파일 하나를 담을 만큼 충분히 큰 연속 공간을 찾지 못할 때마다 파일을 비연속적인 클러스터에 분산시키기 때문입니다.
릴리스 노트에는 어느 버전부터 이 버그가 있었는지, 특정 파일의 얼마나 많은 부분이 살아남았는지 명시되어 있지 않습니다. 따라서 버전 번호만으로 위험에 노출된 파일 목록을 역추적할 방법이 없습니다. 원본이 이미 삭제된 상태라면 재삭제도 불가능하므로, 영향받은 드라이브의 여유 공간 전체를 덮어쓰는 수밖에 없습니다.
쿠키를 지워도 살아남는 수퍼쿠키
Chromium 계열 및 Firefox 계열 브라우저는 동적 HSTS 목록을 유지합니다. 이는 어떤 사이트가 브라우저에 HTTPS로만 접속하도록 요청했는지를 기록한 목록입니다. 방문하는 사이트라면 누구든 이 목록에 값을 쓸 수 있어, 일반적인 쿠키 삭제 이후에도 살아남는 몇 비트의 식별자를 심어 두기에 적합한 장소가 됩니다. 여러 도메인에 걸쳐 이 비트를 다시 읽어 들이면 추적 식별자가 재구성됩니다. BleachBit은 이제 6개의 Chromium 계열 브라우저와 Firefox 파생 브라우저인 Zen에서 동적 HSTS 데이터를 삭제합니다.
작업 디렉터리로 수렴되던 경로들
임의 파일 안전 삭제 시 이제 작업 디렉터리나 그 상위 디렉터리는 대상으로 받지 않습니다. 이로써 빈 문자열, 점(.), 또는 점 두 개(..)를 입력했을 때 현재 디렉터리로 수렴되던 경로가 차단됩니다. POSIX 시스템에서는 keep 목록이 비어 있더라도 /, /proc, /sys, /run의 삭제를 거부합니다. 와이프 시 wipe_write와 wipe_contents에서 심볼릭 링크를 더 이상 따라가지 않으며, Windows는 심볼릭 링크를 통한 파일 와이프를 거부하고, 트런케이션(Truncation)은 재파스 포인트(Reparse Point)를 거부합니다. 클립보드로 전달된 파일의 안전 삭제 시 잘못된 형식의 파일 URI는 처리하지 않고 건너뜁니다. 또한 와이프 대상 드라이브가 모든 사용자에게 쓰기 권한이 허용된(world-writable) 경우 BleachBit이 경고를 표시합니다. 그런 환경에서의 와이프는 안전하지 않기 때문입니다.
잘못된 바이너리가 응답할 수 있었던 명령들
Windows 빌드는 이제 ipconfig와 taskkill을 절대 경로로 호출합니다. 명령을 이름만으로 호출하는 프로그램은 실행 파일 검색 경로(PATH)에 선택을 맡기게 되며, 공격자가 해당 경로에서 더 앞에 배치할 수 있는 파일이라면 무엇이든 먼저 응답하게 됩니다. DLL 검색 경로도 같은 이유로 프리로딩(Preloading)에 대해 강화되었습니다. 신뢰할 수 없는 클리너 정의 파일은 이제 process나 winreg 액션을 실행할 수 없으며, POSIX에서는 모든 사용자에게 쓰기 가능한 파일이나 디렉터리에 있는 클리너 파일은 아예 로드되지 않습니다.
XML 파싱 진입점 전반에서 DTD(Document Type Definition)를 거부하며, 업데이트 확인 시 XML을 바이트 단위로 파싱하여 문서에 인코딩이 선언되어 있더라도 거부가 적용됩니다. 안전하지 않은 winapp2 및 업데이트 확인 URL은 거부됩니다. winapp2.ini glob 패턴의 와일드카드 개수는 정규식 서비스 거부(ReDoS) 방어를 위해 상한이 설정되었습니다. Special.py의 SQLite 및 URI 구성 코드는 인젝션(Injection)에 대해 강화되었고, 다운로드된 chaff 모델은 체크섬으로 검증하며, 브라우저에서 열리는 URL은 http와 https로 제한됩니다. root로 실행될 때 BleachBit은 PATH를 정제하고, 서브프로세스의 코드 로딩 환경 변수를 제거하며, 외부 명령에 전달되는 환경에서 LD_LIBRARY_PATH를 제거합니다. 디버그 로그는 0600 권한으로, 다운로드 디렉터리는 0700 권한으로 생성됩니다.
Windows 빌드 및 테스트는 AppVeyor에서 GitHub Actions로 이전되었고, CodeQL 워크플로가 추가되어 버그를 탐지하며, 정적 분석 워크플로가 CI/CD 파이프라인을 커버합니다. CI 번역 업데이트 과정에서 발생할 수 있는 코드 인젝션 가능성도 수정되었습니다.
새 클리너, 그리고 드디어 Mac 지원
Android Studio, Gradle 캐시, fish 셸, Zsh, Python 명령 히스토리용 클리너가 추가되었습니다. 셸 및 인터프리터 히스토리 파일에는 프롬프트에 붙여 넣은 내용이 그대로 남아 있으며, 자격증명(Credentials)도 예외가 아닙니다. 다른 사람이 접근할 수 있는 기기에서 이를 지워야 하는 이유가 바로 여기 있습니다. Claude 클리너는 이제 최상위 로그 파일도 삭제합니다.
macOS 지원은 초기 단계이지만 실질적입니다. Safari 클리너, Google Chrome·Firefox 등 기존 클리너의 해당 플랫폼 지원, 전체 명령줄 지원, 그리고 아직 완성 중인 GUI가 제공됩니다. BleachBit은 전체 디스크 접근(Full Disk Access)이 비활성화된 경우 경고를 표시하고, 네이티브 알림을 전송하며, Cmd+Q를 지원하고, 휴지통 정리 시 빈 폴더를 삭제합니다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.





