Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
attestos — Bazzite에 TPM 부팅 증명 계층을 더한 것입니다. 진행 중인 작업: 빌드는 검증되지 않았고, UKI 메커니즘은 미해결 상태입니다. 사양: github.com/plunder707/attested-gaming | Kitploit
도구/GitHubGitHub/plunder707/attestos
Defensive ToolsCryptographyHardware SecurityAuthenticationFirmware Analysis
GitHubplunder707/attestos

attestos

Bazzite에 TPM 부팅 증명 계층을 더한 것입니다. 진행 중인 작업: 빌드는 검증되지 않았고, UKI 메커니즘은 미해결 상태입니다. 사양: github.com/plunder707/attested-gaming

저장소 보기
112일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

attestos

안티치트 벤더가 배포판 이름 허용 목록에 의존하는 대신 무엇을 검증할 수 있는지 테스트하기 위한 실험적인 Linux 부팅 증명(attestation) 이미지 및 증거 하네스입니다.

메커니즘, 위협 모델, 벤더 사양은 plunder707/attested-gaming에 있습니다. 이 저장소는 증거를 생성하는 이미지입니다.


상태: 소스 메커니즘 미리보기. 설치 불가, 프로덕션 신뢰 불가.

GitHub Actions 실행 31157890393 및 31159951490은 Bazzite 기반 QCOW2를 빌드하고, swtpm과 게스트 네트워크 없이 QEMU/OVMF에서 부팅하고, 영구 EK/AK 핸들을 프로비저닝하고, 게스트 내부에서 SHA-256 PCR 7, 11, 12, 15에 대한 원시 쿼트(raw quote)를 검증했습니다. 그 경계 영수증의 SHA-256은 ad5ef12592cb5f4d1dfa8f0da88148931d48f0e6018924b2de4c766e1523ddaf입니다. 별도의 검증기 워크플로 31160003873은 이 저장소의 최종 에이전트 커밋 b918392를 격리된 소프트웨어 TPM에 대해 실행하여 AK 등록, 원시 쿼트 검증, 재생 거부, 서명 변조 거부, QEMU/OVMF TPM 연결을 통과했습니다.

부팅된 결과는 또한 Bazzite 정책 차단 요인을 확인해 줍니다. UKI 파일이나 systemd-stub 신호가 없었고, 의도된 lockdown 인자가 없었으며, PCR 11과 15는 0으로 남아 있었습니다. PCR 12도 0이었지만 이는 독립적인 실패가 아닙니다. 포함된 UKI 커맨드 라인은 PCR 11에 속하며, PCR 12는 외부 커맨드 라인 입력을 기록하므로 입력이 없으면 0으로 유지되는 것이 맞을 수 있습니다. 시큐어 부트 키 등록, UKI 기반 커맨드 라인 측정, 하드웨어 출처 증명, 이벤트 로그 재생, 전송 바인딩, 부트 정책 승인은 여전히 해결되지 않았습니다. 두 성공 실행 모두 실제 작동하는 프로덕션 증명 시스템을 구축하지는 못합니다.

별도의 Fedora 밀봉 이미지 양성 대조군은 실행 31218059725에서 두 번, 병합된 소스 헤드에서 실행 31219745053으로 다시 통과했습니다. 이는 하네스가 변경 불가능한 업스트림 서명 UKI를 부팅하고, 펌웨어가 선택한 경로와 로드된 파일 해시를 사전 부팅 검사에 결합하고, 0이 아닌 PCR 11을 관찰하고, 서명되지 않은 .cmdline 변조를 거부할 수 있음을 증명합니다. 이는 하네스 대조군일 뿐입니다. 모든 제조사, 정책, 프로덕션 신뢰 플래그는 여전히 false이며, Bazzite 미리보기를 설치 가능하게 만들지 않습니다.

그 후 별도의 서명된 PCR 12 정책 애드온 경로는 실행 31234464516에서 두 번 통과했습니다. 업스트림 UKI와 PCR 11은 바이트 단위로 동일하게 유지되었고, 두 서명 부팅 모두 lockdown=confidentiality module.sig_enforce=1을 정확히 한 번 적용했으며 PCR 12 ca62dd5f...a8f5를 재현했습니다. 서명 후 변조는 거부되었고 0인 PCR 12 기준 상태로 돌아갔습니다. 이는 배포 가능한 키 계층 구조나 운영체제 신뢰 정책이 아니라 제한된 메커니즘을 증명합니다.

이 소스는 검토와 재현 가능한 에뮬레이션을 위해 제공됩니다. 게시된 GHCR 이미지는 없으며 설치 가능한 신뢰할 수 있는 배포판이 아닙니다.

완료된 Bazzite 실험은 BOOTED_IMAGE_CANARY.md에 명시되어 있습니다. 재현 및 소스 빌드 지침은 BUILDING.md에 있습니다. UKI 기본 증거와 그 독립적인 승인 기준은 UKI_BASE_DECISION.md에 기록되어 있습니다. 서명된 PCR 12 정책 애드온 실험은 FEDORA_PCR12_ADDON_CANARY.md에 별도로 명시되어 있습니다. 마일스톤 순서와 중지 규칙은 ROADMAP.md에서 추적됩니다. 별도의 로드된 UKI 하네스 대조군은 FEDORA_SEALED_POSITIVE_CONTROL.md에 명시되어 있습니다.


Bazzite에 추가되는 것

제거되거나 패치되는 것은 없습니다. 다음 네 가지가 위에 추가됩니다:

  1. tpm2-tools 및 tpm2-tss — 에이전트가 런타임에 필요로 합니다.
  2. /usr/lib/attestos/cmdline의 커널 커맨드 라인 — lockdown=confidentiality와 module.sig_enforce=1을 포함합니다.
  3. attestos-provision — TPM 내부에 별개의 영구 RSA EK 및 AK ID를 생성하고, 인증서가 존재할 때 NV 저장소에서 인증서를 읽어내는 일회성(one-shot) 유닛입니다.
  4. attestos-agent — 루프백에서 소켓 활성화되며, 엄격한 attestos.tpm/v1 ID, 활성화 또는 쿼트 챌린지에 원시 TPM 증거로 응답합니다. 에이전트는 절대 신뢰 판정을 반환하지 않습니다.

베이스가 Bazzite인 이유

Bazzite는 Fedora에서 파생되었으며, Fedora 계열이 현재 안티치트 허용 목록에서 차단하는 대상입니다. 여기서 증명(attestation)이 작동함을 입증하는 것이 증명할 가치가 있는 사례입니다. SteamOS를 기반으로 구축한다면 아무것도 입증하지 못할 것입니다. SteamOS는 이미 통과가 허용되어 있으므로, 거기서 성공적인 데모를 해봐야 이미 갖고 있는 접근 권한을 얻게 될 뿐입니다.

Bazzite는 또한 레이어링되도록 설계되었습니다. OCI 이미지이므로 이 저장소는 미러와 설치 프로그램을 갖춘 배포판이 아니라 Containerfile과 GitHub Action입니다.

정책은 커널보다 먼저 인증되고 측정되어야 한다

이것이 모든 것이 의미를 갖는지를 결정하는 부분입니다. lockdown=confidentiality는 /dev/mem, 실행 중인 커널에 대한 kprobes, 서명되지 않은 모듈 로딩을 차단합니다. 그 보장은 정책이 사용자가 편집할 수 있는 부트로더 설정에만 존재한다면 아무 가치가 없습니다. 그렇지 않으면 사용자가 인자를 삭제하고, 동일한 커널 측정값으로 부팅한 다음, 누락된 정책에 대해 아무것도 말해주지 않는 쿼트를 제시할 수 있습니다.

통합 커널 이미지(UKI)는 커널, initrd, 포함된 커맨드 라인을 하나의 서명된 PE 바이너리로 결합하여 PCR 11로 측정합니다. 별도로 서명된 systemd 커맨드 라인 애드온은 업스트림 UKI를 변경하지 않은 채 추가 정책을 PCR 12로 확장할 수 있습니다. 어느 경로든 정확히 로드된 아티팩트에 결합되어 검증기에 의해 재생되어야 합니다. 파일 존재 여부나 0이 아닌 PCR만으로는 충분하지 않습니다.

Bazzite는 UKI를 사용하지 않으며, 이제는 의심이 아니라 확인된 사실입니다. 해당 Containerfile은 UKI 커널 패키지를 적극적으로 제외합니다:

root@kitploit:~
dnf5 -y config-manager setopt "*fedora*".exclude="mesa-* kernel-core-* \
    kernel-modules-* kernel-uki-virt-* steam"

systemd-ukify는 저장소 어디에도 나타나지 않습니다. 따라서 이 이미지가 제공하는 cmdline 파일은 현재 의도 선언에 불과합니다. UKI가 없으면 이를 봉인할 수단이 없고, 사용자가 부트로더에서 편집할 수 있으며, PCR 11은 설계가 가정하는 대상을 측정하지 않습니다.

Bazzite를 고치는 것은 build.sh의 한 줄이 아닙니다. 이미지가 부팅되는 방식을 바꾸거나 이미 systemd-stub을 통해 부팅하는 베이스를 채택하는 등, 신뢰할 수 있는 커널 사전 측정 경로가 필요합니다.

실험을 통해 실질적인 선택지는 다음과 같이 좁혀졌습니다:

  1. 어쨌든 Bazzite에서 UKI 작업을 수행하고 베이스와의 분기를 수용한다.
  2. 업스트림 밀봉 Fedora UKI를 사용하고, PCR 12로 측정되는 별도 서명 systemd 애드온을 통해 attestos 정책을 추가한다.
  3. 인증된 다른 커널 사전 측정 경로를 찾는다. 커널이 시작된 후에만 이루어지는 측정은 더 약한 증거 등급이며 동등한 것으로 제시되어서는 안 된다.

해결되지 않은 키 승인 문제

업스트림 Fedora UKI는 배포판 서명을 유지할 수 있지만, 별도의 attestos 정책 애드온은 여전히 펌웨어, Shim 또는 MOK가 승인한 서명 키를 필요로 합니다. 서드파티 커널은 같은 문제의 더 큰 버전을 갖고 있습니다. 배포 옵션은 다음과 같습니다:

  • MOK 등록 — 사용자가 첫 부팅 시 파란 펌웨어 화면을 통해 MOK(Machine Owner Key)를 등록하는 방식입니다. Universal Blue는 이미 외부(out-of-tree) 커널 모듈에 대해 이 작업을 수행하므로 메커니즘은 존재하지만, "Microsoft가 이 커널을 보증한다"는 주장이 "사용자가 이 키를 명시적으로 신뢰한다"로 바뀌며, 벤더가 이를 수용할지 결정해야 합니다.
  • Microsoft 서명 shim — 실제 배포판이 취하는 경로이며, 양식 제출이 아닌 검토 프로세스입니다.
  • 사용자 소유 PK 및 KEK — 완전한 제어권을 주지만 채택률이 거의 없습니다.

일회용 Fedora 하네스는 실행 로컬 인증서를 복사된 UEFI DB에 등록하여 배포 모델을 주장하지 않고 메커니즘을 증명합니다. 여전히 수용된 최종 사용자 키 등록, 폐기 또는 복구 계약은 없습니다. 이는 엔지니어링 문제만큼이나 신뢰 당사자(relying party)의 문제입니다.

설치

아직 지원되는 설치 명령은 없습니다. 특히 ghcr.io/plunder707/attestos:latest는 게시되지 않습니다. 현재 미리보기는 소스 검토와 격리된 QEMU/swtpm 재현 전용입니다. BUILDING.md를 참조하십시오.

구조

root@kitploit:~
Containerfile            base image and the single RUN that calls build.sh
build_files/build.sh     the attestation layer
system_files/            agent, provisioning script, systemd units
image-template.env       image name and registry organisation
.github/workflows/       build-only and isolated evidence canaries
Justfile                 local build and test targets

build_files/와 system_files/ 밖의 모든 것은 ublue-os/image-template에서 가져온 것이며 그들의 작업물입니다.

아직 답해야 할 것들

  • 이미지가 빌드되는지 여부. GitHub Actions 실행 31143048491에서 커밋 14e3a21에 대해 확인됨. 빌드는 치명적이지 않은 DNF 상태 린트 경고 두 개를 출력했습니다.
  • 검증기가 에이전트의 런타임 bootc status 배포 주장을 검증된 이미지 ID로 전환하는 방법. 이 주장은 메타데이터이지 서명된 권위가 아니며, bootc가 없는 시스템에서는 명시적으로 unavailable입니다.
  • Bazzite 기반 QCOW2는 격리된 메커니즘 카나리를 통과하지만, UKI 및 lockdown 부재 관찰 결과로 인해 정책 승인을 받지 못합니다.
  • 별도 서명된 PCR 12 정책 애드온이 업데이트, 롤백, 대체 순서, 프로덕션 키 수명 주기에서 재현 가능한지 여부. 고정된 단일 정책 하네스는 현재 통과하지만, 이러한 수명 주기 사례는 통과하지 못합니다.
  • 에이전트와 정책을 밀봉 후보로 빌드하고, 게스트 외부에서 서명된 쿼트를 검증하고, 관련 이벤트 로그를 재생하는 방법.
  • bootc 루트에서 PCR 15가 설계가 가정하는 방식으로 채워지는지 여부.
  • MOK 등록이 정책을 작성할 만큼 안정적인 PCR 7 값을 생성하는지 여부.
  • 벤더가 MOK 등록 키 계층 구조를 수용할지 여부.

런타임 측정 질문에는 추가 하드웨어가 필요 없는 QEMU(OVMF 및 swtpm 포함)가 필요합니다. 연결과 원시 TPM 프로토콜 메커니즘은 이제 그 환경에서 통과했지만, 빌드된 이미지를 부팅하고 이벤트 로그와 정책을 검증하는 것은 별도의 실험으로 남아 있습니다. 벤더 수용에는 벤더와의 대화가 필요합니다.

라이선스

Apache-2.0, 이 이미지가 기반으로 하는 템플릿과 동일합니다.

도구 다운로드