TravisCI Security
TravisCI란
Travis CI는 호스팅 또는 온프레미스 지속적 통합 서비스로, 여러 다른 git 플랫폼에 호스팅된 소프트웨어 프로젝트를 빌드하고 테스트하는 데 사용됩니다.
pageBasic TravisCI Information공격
트리거
공격을 시작하려면 어떻게 빌드를 트리거할지 알아야 합니다. 기본적으로 TravisCI는 푸시 및 풀 리퀘스트에서 빌드를 트리거합니다:
크론 작업
웹 애플리케이션에 액세스할 수 있다면 크론을 설정하여 빌드를 실행할 수 있습니다. 이는 지속성 또는 빌드를 트리거하는 데 유용할 수 있습니다:
여기에 따르면 .travis.yml
내에서 크론을 설정할 수 없는 것으로 보입니다.
제3자 PR
TravisCI는 기본적으로 제3자로부터의 PR에서 환경 변수 공유를 비활성화하지만 누군가가 이를 활성화할 수 있으며 그런 경우 레포지토리에 PR을 생성하고 비밀을 유출할 수 있습니다:
비밀 덤프
기본 정보 페이지에서 설명한대로, 두 가지 유형의 비밀이 있습니다. 환경 변수 비밀 (웹 페이지에 나열됨) 및 사용자 지정 암호화된 비밀, 이는 .travis.yml
파일에 base64로 저장됩니다 (둘 다 암호화되어 저장되며 최종 머신에서 환경 변수로 끝납니다).
환경 변수로 구성된 비밀을 열거하려면 프로젝트의 설정으로 이동하여 목록을 확인하세요. 그러나 여기에서 설정한 모든 프로젝트 환경 변수는 빌드를 트리거할 때 모두 나타납니다.
사용자 지정 암호화된 비밀을 열거하려면
.travis.yml
파일을 확인하는 것이 가장 좋습니다.암호화된 파일을 열거하려면 레포지토리에서
.enc
파일을 확인하거나 구성 파일에서openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d
와 유사한 줄 또는 환경 변수에 암호화된 iv 및 키를 확인할 수 있습니다:
TODO:
Windows/Mac/Linux에서 실행되는 역쉘이 포함된 예제 빌드
로그에 base64로 인코딩된 env를 유출하는 예제 빌드
TravisCI Enterprise
공격자가 TravisCI 엔터프라이즈를 사용하는 환경에 도달하면 (기본 정보에서 이에 대한 자세한 정보를 확인하세요), Worker에서 빌드를 트리거할 수 있습니다. 이는 공격자가 해당 서버로 측면 이동할 수 있게 해줍니다. 이후 공격자는 다음을 할 수 있습니다:
호스트로 탈출?
쿠버네티스 침해?
동일 네트워크에서 실행되는 다른 기계 침해?
새로운 클라우드 자격 증명 침해?
참고 자료
最終更新