TravisCI Security
TravisCI とは
Travis CI は、複数の 異なるgitプラットフォーム にホストされたソフトウェアプロジェクトをビルドおよびテストするために使用される ホスト型または オンプレミスの 継続的インテグレーション サービスです。
pageBasic TravisCI Information攻撃
トリガー
攻撃を開始するには、まずビルドをトリガーする方法を知る必要があります。デフォルトでは、TravisCI は プッシュやプルリクエストでビルドをトリガーします。
クーロンジョブ
Webアプリケーションにアクセスできる場合、クーロンを設定してビルドを実行することができます。これは持続性のために便利であり、ビルドをトリガーするために役立ちます。
こちらによると、.travis.yml
内でクーロンを設定することはできないようです。
サードパーティのPR
TravisCI はデフォルトで、サードパーティからのPRと環境変数の共有を無効にしていますが、誰かが有効にしている可能性があり、その後、リポジトリにPRを作成してシークレットを外部に持ち出すことができます。
シークレットのダンプ
基本情報ページで説明されているように、2種類のシークレットがあります。環境変数シークレット(Webページにリストされている)と カスタム暗号化されたシークレット があり、これらは .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 で実行される逆シェルを使用したビルドの例
ログにエンコードされた環境ベース64を漏洩させるビルドの例
TravisCI Enterprise
攻撃者が TravisCI Enterprise を使用する環境に到達した場合(これについての詳細は基本情報にあります)、彼は Workerでビルドをトリガーすることができます。これは、攻撃者がそのサーバーに横断的に移動できることを意味し、その後、次のことができる可能性があります:
ホストから脱出する?
Kubernetes を危険にさらす?
同じネットワークで実行されている他のマシンを危険にさらす?
新しいクラウド資格情報を危険にさらす?
参考文献
最終更新