# TravisCI セキュリティ

{{#include ../../banners/hacktricks-training.md}}

## TravisCI とは

**Travis CI** は、**ホスティング**または**オンプレミス**の**継続的インテグレーション**サービスで、複数の**異なる git プラットフォーム**にホストされたソフトウェアプロジェクトをビルドおよびテストするために使用されます。

{{#ref}}
basic-travisci-information.md
{{#endref}}

## 攻撃

### トリガー

攻撃を開始するには、まずビルドをトリガーする方法を知っておく必要があります。デフォルトでは、TravisCI は**プッシュとプルリクエストでビルドをトリガーします**：

![](<../../images/image (145).png>)

#### Cron ジョブ

Web アプリケーションにアクセスできる場合、**ビルドを実行するための cron を設定できます**。これは持続性のためやビルドをトリガーするために役立ちます：

![](<../../images/image (243).png>)

> [!NOTE]
> [これ](https://github.com/travis-ci/travis-ci/issues/9162)によると、`.travis.yml` 内で cron を設定することはできないようです。

### サードパーティ PR

TravisCI はデフォルトでサードパーティからの PR と環境変数を共有することを無効にしていますが、誰かがそれを有効にすると、リポジトリに PR を作成して秘密を抽出することができます：

![](<../../images/image (208).png>)

### 秘密のダンプ

[**基本情報**](basic-travisci-information.md) ページで説明されているように、秘密には 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 とキー**を探します：

![](<../../images/image (81).png>)

### TODO:

- Windows/Mac/Linux で実行されるリバースシェルを持つビルドの例
- ログにエンコードされた環境変数を漏洩させるビルドの例

### TravisCI エンタープライズ

攻撃者が**TravisCI エンタープライズ**を使用している環境に入った場合（これについての詳細は[**基本情報**](basic-travisci-information.md#travisci-enterprise)を参照）、彼は**Worker でビルドをトリガーする**ことができます。これは、攻撃者がそのサーバーに横移動できることを意味し、そこから次のことが可能になります：

- ホストに脱出する？
- Kubernetes を侵害する？
- 同じネットワーク内の他のマシンを侵害する？
- 新しいクラウド資格情報を侵害する？

## 参考文献

- [https://docs.travis-ci.com/user/encrypting-files/](https://docs.travis-ci.com/user/encrypting-files/)
- [https://docs.travis-ci.com/user/best-practices-security](https://docs.travis-ci.com/user/best-practices-security)

{{#include ../../banners/hacktricks-training.md}}
