🇰🇷 한글 설명
Octo STS(github.com/octo-sts/app) 0.11.2 이전 버전은 OIDC 토큰이 신뢰 정책을 충족하지 않는 호출자에게도 신뢰 정책 설정을 반환합니다. PermissionDenied 오류에 정책의 issuer, subject, audience 값과 claim_pattern 정규식이 포함되어 그대로 노출되며, 정책의 app 조회 오류도 신뢰되지 않은 호출자에게 반환됩니다. 토큰 발급이나 정책 우회는 불가능합니다.
💡 쉬운 설명
정당한 OIDC 토큰만 있으면 누구든 대상 저장소의 신뢰 정책 규칙을 엿볼 수 있습니다. 이 규칙에는 내부 저장소, 브랜치, 클라우드 계정 식별자 같은 민감한 정보가 포함될 수 있습니다.
🇺🇸 원문 (English)
Octo STS (github.com/octo-sts/app) before 0.11.2 returns trust policy configuration to callers whose OIDC token does not satisfy that policy. TrustPolicy.CheckToken included the policy's issuer, subject and audience values or patterns and claim_pattern names and regular expressions in its PermissionDenied errors, which Exchange returned verbatim. Exchange also selected the GitHub App installation before checking the token, so errors from resolving the policy's app or app_pattern pin were returned to callers the policy does not trust. An attacker who holds any validly signed OIDC token, such as a GitHub Actions token from a repository they own, and who knows or guesses a target owner/repo and identity name can read that policy's matching rules, even when the policy is stored in a private repository. These rules often name internal repositories, branches, environments or cloud account identifiers. The issue does not allow minting tokens or bypassing a trust policy. This issue is fixed in 0.11.2.
📍 영향받는 시스템
Octo STS(github.com/octo-sts/app) 0.11.2 이전 모든 버전
⚔️ 공격 벡터
공격자가 자신이 소유한 저장소의 GitHub Actions 토큰 등 유효한 OIDC 토큰으로 대상 owner/repo와 identity 이름을 지정해 신뢰 정책 규칙을 조회
🛡️ 대응 방법
Octo STS를 0.11.2 이상으로 업데이트
🔧 검증 코드
출력된 버전이 0.11.2 미만이면 취약하며, 0.11.2 이상이면 패치가 적용된 것입니다. go.mod 결과는 의존성 버전을 확인하는 용도입니다.
octo-sts --version 2>/dev/null || grep -rn 'octo-sts/app' go.mod 2>/dev/null | head -1