Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:50:55 +00:00
parent e3d971b096
commit c493edc782
229 changed files with 2945 additions and 3001 deletions

View File

@@ -4,7 +4,7 @@
## What is Github
(From [here](https://kinsta.com/knowledgebase/what-is-github/)) 高いレベルで、**GitHubは開発者がコードを保存・管理し、コードの変更を追跡・制御するのを助けるウェブサイトおよびクラウドベースのサービスです**。
(From [here](https://kinsta.com/knowledgebase/what-is-github/)) 高いレベルで言うと、**GitHubは開発者がコードを保存・管理し、コードの変更を追跡・制御するのを助けるウェブサイトおよびクラウドベースのサービスです**。
### Basic Information
@@ -16,17 +16,17 @@ basic-github-information.md
Githubリポジトリは、公開、非公開、内部として設定できます。
- **非公開**は、**組織**の人だけがアクセスできることを意味します。
- **内部**は、**エンタープライズ**の人(エンタープライズは複数の組織を持つことがあります)だけがアクセスできることを意味します。
- **非公開**は、**組織**の人だけがアクセスできることを意味します。
- **内部**は、**エンタープライズ**の人(エンタープライズは複数の組織がある場合があります)だけがアクセスできることを意味します。
- **公開**は、**全インターネット**がアクセスできることを意味します。
**ターゲットにしたいユーザー、リポジトリ、または組織を知っている場合**、**github dorks**を使用して、機密情報を見つけたり、**各リポジトリでの機密情報の漏洩**を検索できます。
**ターゲットにしたいユーザー、リポジトリ、または組織を知っている場合**、**github dorks**を使用して、各リポジトリで**機密情報や機密情報の漏洩**を検索できます。
### Github Dorks
Githubは、**ユーザー、リポジトリ、または組織をスコープとして指定して何かを検索することを許可します**。したがって、機密情報の近くに表示される文字列のリストを使用して、ターゲット内の**潜在的な機密情報を簡単に検索できます**
Githubは、**ユーザー、リポジトリ、または組織を指定して何かを検索する**ことを許可します。したがって、機密情報の近くに表示される文字列のリストを使用して、ターゲット内の**潜在的な機密情報を簡単に検索**できます。
ツール各ツールにはそのdorkのリストが含まれています):
ツール各ツールにはそのdorkのリストがあります):
- [https://github.com/obheda12/GitDorker](https://github.com/obheda12/GitDorker) ([Dorks list](https://github.com/obheda12/GitDorker/tree/master/Dorks))
- [https://github.com/techgaun/github-dorks](https://github.com/techgaun/github-dorks) ([Dorks list](https://github.com/techgaun/github-dorks/blob/master/github-dorks.txt))
@@ -36,7 +36,7 @@ Githubは、**ユーザー、リポジトリ、または組織をスコープと
github dorksは、githubの検索オプションを使用して漏洩を検索するためにも使用されることに注意してください。このセクションは、**各リポジトリをダウンロードし、その中で機密情報を検索する**ツールに専念しています(特定のコミットの深さをチェックすることも含まれます)。
ツール(各ツールにはその正規表現のリストが含まれています):
ツール(各ツールにはその正規表現のリストがあります):
- [https://github.com/zricethezav/gitleaks](https://github.com/zricethezav/gitleaks)
- [https://github.com/trufflesecurity/truffleHog](https://github.com/trufflesecurity/truffleHog)
@@ -47,7 +47,7 @@ github dorksは、githubの検索オプションを使用して漏洩を検索
- [https://github.com/awslabs/git-secrets](https://github.com/awslabs/git-secrets)
> [!WARNING]
> リポジトリで漏洩を探すときに`git log -p`のようなコマンドを実行する際、**秘密を含む他のコミットがある他のブランチ**が存在する可能性があることを忘れないでください!
> リポジトリで漏洩を探し、`git log -p`のようなコマンドを実行する際には、**他のコミットを含む他のブランチ**が存在する可能性があることを忘れないでください!
### External Forks
@@ -55,7 +55,7 @@ github dorksは、githubの検索オプションを使用して漏洩を検索
### Github Leaks in deleted/internal forks
削除されたり内部のものであっても、githubリポジトリのフォークから機密データを取得することが可能な場合があります。ここで確認してください:
削除されたリポジトリや内部リポジトリから機密データを取得することが可能な場合があります。ここで確認してください:
{{#ref}}
accessible-deleted-data-in-github.md
@@ -65,35 +65,35 @@ accessible-deleted-data-in-github.md
### Member Privileges
組織の**メンバー**に割り当てることができる**デフォルトの権限**があります。これらは、ページ`https://github.com/organizations/<org_name>/settings/member_privileges`または[**Organizations API**](https://docs.github.com/en/rest/orgs/orgs)から制御できます。
組織の**メンバー**に割り当てることができる**デフォルトの権限**があります。これらは、ページ `https://github.com/organizations/<org_name>/settings/member_privileges` または [**Organizations API**](https://docs.github.com/en/rest/orgs/orgs) から制御できます。
- **基本的な権限**: メンバーは、組織のリポジトリに対してNone/Read/write/Adminの権限を持ちます。推奨は**None**または**Read**です。
- **リポジトリのフォーク**: 必要でない場合、メンバーが組織のリポジトリをフォークすることを**許可しない方が良い**です。
- **ページの作成**: 必要でない場合、メンバーが組織のリポジトリからページを公開することを**許可しない方が良い**です。必要な場合は、公開または非公開のページを作成することを許可できます。
- **統合アクセス要求**: これを有効にすると、外部のコラボレーターがこの組織とそのリソースにアクセスするためのGitHubまたはOAuthアプリへのアクセスを要求できるようになります。通常は必要ですが、必要でない場合は無効にする方が良いです。
- _この情報をAPIの応答で見つけられませんでした。知っている場合は共有してください。_
- **リポジトリの可視性変更**: 有効にすると、**リポジトリ**に対して**管理者**権限を持つ**メンバー**が**可視性を変更できる**ようになります。無効にすると、組織のオーナーのみがリポジトリの可視性を変更できます。人々に**公開**にすることを望まない場合は、これを**無効**にしてください。
- **リポジトリの可視性変更**: 有効にすると、**リポジトリ****管理者**権限を持つ**メンバー**が**可視性を変更**できるようになります。無効にすると、組織の所有者のみがリポジトリの可視性を変更できます。人々に**公開**にすることを望まない場合は、これを**無効**にしてください。
- _この情報をAPIの応答で見つけられませんでした。知っている場合は共有してください。_
- **リポジトリの削除と転送**: 有効にすると、リポジトリに対して**管理者**権限を持つメンバーが**公開および非公開のリポジトリを削除**または**転送**できるようになります。
- **リポジトリの削除と移行**: 有効にすると、リポジトリ**管理者**権限を持つメンバーが公開および非公開の**リポジトリを削除**または**移行**できるようになります。
- _この情報をAPIの応答で見つけられませんでした。知っている場合は共有してください。_
- **メンバーがチームを作成することを許可**: 有効にすると、組織の**メンバー**は新しい**チームを作成**できるようになります。無効にすると、組織のオーナーのみが新しいチームを作成できます。これを無効にしておく方が良いです。
- **メンバーがチームを作成することを許可**: 有効にすると、組織の**メンバー**は新しい**チームを作成**できるようになります。無効にすると、組織の所有者のみが新しいチームを作成できます。これを無効にしておく方が良いです。
- _この情報をAPIの応答で見つけられませんでした。知っている場合は共有してください。_
- **このページで他の設定も可能ですが、前述のものが最もセキュリティに関連しています。**
### Actions Settings
アクションに関するいくつかのセキュリティ関連の設定は、ページ`https://github.com/organizations/<org_name>/settings/actions`から設定できます。
いくつかのセキュリティ関連の設定は、ページ `https://github.com/organizations/<org_name>/settings/actions` から構成できます。
> [!NOTE]
> これらの設定は、各リポジトリでも独立して設定できることに注意してください。
- **Githubアクションポリシー**: どのリポジトリがワークフローを実行でき、どのワークフローが許可されるべきかを指定できます。**許可されるリポジトリを指定する**ことを推奨し、すべてのアクション実行されることを許可しない方が良いです。
- **Github actionsポリシー**: どのリポジトリがワークフローを実行でき、どのワークフローが許可されるべきかを指定できます。**許可されるリポジトリを指定する**ことを推奨し、すべてのアクション実行ることを許可しない方が良いです。
- [**API-1**](https://docs.github.com/en/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization)**,** [**API-2**](https://docs.github.com/en/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization)
- **外部コラボレーターからのフォークプルリクエストワークフロー**: すべての外部コラボレーターに対して**承認を要求する**ことを推奨します。
- _この情報を持つAPIは見つかりませんでした。知っている場合は共有してください。_
- **フォークプルリクエストからのワークフローの実行**: プルリクエストからのワークフローを実行することは非常に**推奨されません**。フォーク元のメンテナーにソースリポジトリ読み取り権限を持つトークンを使用する能力が与えられるためです。
- **フォークプルリクエストからのワークフローの実行**: プルリクエストからのワークフローを実行することは非常に**推奨されません**。フォーク元のメンテナーにソースリポジトリに対する読み取り権限を持つトークンを使用する能力が与えられるためです。
- _この情報を持つAPIは見つかりませんでした。知っている場合は共有してください。_
- **ワークフローの権限**: **リポジトリの読み取り権限のみを付与する**ことを強く推奨します。GITHUB_TOKENが実行中のワークフローに与えられることを避けるために、書き込みおよびプルリクエストの作成/承認権限を与えることは推奨されません。
- **ワークフローの権限**: **リポジトリの読み取り権限のみを付与する**ことを強く推奨します。GITHUB_TOKENが実行中のワークフローに与えられることを避けるために、書き込みプルリクエストの作成/承認権限を与えることは推奨されません。
- [**API**](https://docs.github.com/en/rest/actions/permissions#get-default-workflow-permissions-for-an-organization)
### Integrations
@@ -109,92 +109,92 @@ _この情報にアクセスするためのAPIエンドポイントを知って
### With User Credentials
もし何らかの方法で組織内のユーザーの資格情報を持っている場合、**ログインして**どの**エンタープライズおよび組織の役割を持っているか**を確認できます。生のメンバーであれば、**生のメンバーが持つ権限**、どの**グループ**に属しているか、どの**リポジトリに対してどの権限を持っているか**、および**リポジトリがどのように保護されているか**を確認できます。
もし何らかの方法で組織内のユーザーの資格情報を持っている場合、**ただログイン**して、どの**エンタープライズおよび組織の役割を持っているか**を確認できます。生のメンバーであれば、**生のメンバーが持つ権限**、どの**グループ**に属しているか、どの**リポジトリに対してどの権限を持っているか**、および**リポジトリがどのように保護されているか**を確認できます。
**2FAが使用されている可能性がある**ことに注意してください。したがって、そのチェックを**通過できる**場合にのみ、この情報にアクセスできます。
> [!NOTE]
> `user_session`クッキーを**盗むことに成功した場合**現在SameSite: Laxで設定されています、資格情報や2FAを必要とせずに**ユーザーを完全に偽装**できます。
> `user_session`クッキーを**盗むことに成功した場合**現在SameSite: Laxで設定されています、資格情報や2FAなしで**ユーザーを完全に偽装**できます。
役立つ場合に備えて、[**ブランチ保護のバイパス**](./#branch-protection-bypass)に関するセクションを確認してください。
役立つ場合に備えて、以下のセクションで[**ブランチ保護のバイパス**](./#branch-protection-bypass)について確認してください。
### With User SSH Key
Githubは、**ユーザー**が**SSHキー**を設定することを許可しており、これが**コードをデプロイするための認証方法**として使用されます2FAは適用されません
Githubは、**ユーザー**が**SSHキー**を設定し、コードをデプロイするための**認証方法**として使用できるようにしています2FAは適用されません
このキーを使用して、ユーザーがいくつかの権限を持つリポジトリで**変更を行う**ことができますが、github APIにアクセスして環境を列挙するために使用することはできません。ただし、アクセスできるリポジトリやユーザーに関する情報を取得するために、**ローカル設定を列挙する**ことができます。
このキーを使用して、ユーザーがいくつかの権限を持つリポジトリで**変更を行う**ことができますが、github APIにアクセスして環境を列挙するために使用することはできません。ただし、**ローカル設定を列挙して**、アクセスできるリポジトリやユーザーに関する情報を取得できます。
```bash
# Go to the the repository folder
# Get repo config and current user name and email
git config --list
```
ユーザーが自分のGitHubユーザー名としてユーザー名を設定している場合、_https://github.com/\<github_username>.keys_ で彼のアカウントに設定された **公開鍵** にアクセスできます。これを確認して、見つけた秘密鍵が使用できるかどうかを確認できます。
ユーザーが自分のGitHubユーザー名としてユーザー名を設定している場合、_https://github.com/\<github_username>.keys_ で彼のアカウントに設定された**公開鍵**にアクセスできます。これを確認して、見つけた秘密鍵が使用できるかどうかを確認できます。
**SSH鍵** はリポジトリに **デプロイ鍵** としても設定できます。この鍵にアクセスできる人は、**リポジトリからプロジェクトを起動する** ことができます。通常、異なるデプロイ鍵を持つサーバーでは、ローカルファイル **`~/.ssh/config`** が関連する鍵に関する情報を提供します。
**SSH鍵**はリポジトリに**デプロイ鍵**としても設定できます。この鍵にアクセスできる人は、**リポジトリからプロジェクトを起動**できるようになります。通常、異なるデプロイ鍵を持つサーバーでは、ローカルファイル**`~/.ssh/config`**が関連する鍵に関する情報を提供します。
#### GPG鍵
[**こちら**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/github-security/broken-reference/README.md) で説明されているように、コミットに署名する必要がある場合や、発見される可能性があります。
[**こちら**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/github-security/broken-reference/README.md)で説明されているように、コミットに署名する必要がある場合や、発見される可能性があります。
現在のユーザーが鍵を持っているかどうかをローカルで確認してください:
現在のユーザーが任意の鍵を持っているかどうかをローカルで確認してください:
```shell
gpg --list-secret-keys --keyid-format=long
```
### ユーザートークンを使用して
### With User Token
[**ユーザートークンについての基本情報を確認する**](basic-github-information.md#personal-access-tokens)の紹介。
[**ユーザートークンの基本情報については、こちらを確認してください**](basic-github-information.md#personal-access-tokens)の紹介。
ユーザートークンは、HTTPS経由のGitの**パスワードの代わり**に使用できるか、[**基本認証を介してAPIに認証するために使用できます**](https://docs.github.com/v3/auth/#basic-authentication)。付与された権限に応じて、さまざまなアクションを実行できる場合があります。
ユーザートークンは、HTTPS経由のGitの**パスワードの代わりに使用**できるか、または[**基本認証を介してAPIに認証するために使用**](https://docs.github.com/v3/auth/#basic-authentication)できます。付与された権限に応じて、さまざまなアクションを実行できる場合があります。
ユーザートークンは次のようになります: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123`
### Oauthアプリケーションを使用して
### With Oauth Application
[**Github Oauthアプリケーションについての基本情報を確認する**](basic-github-information.md#oauth-applications)の紹介。
[**Github Oauthアプリケーションの基本情報については、こちらを確認してください**](basic-github-information.md#oauth-applications)の紹介。
攻撃者は、フィッシングキャンペーンの一環として、ユーザーが受け入れる可能性のある**悪意のあるOauthアプリケーション**を作成して、特権データ/アクションにアクセスすることがあります。
攻撃者は、フィッシングキャンペーンの一環として、ユーザーが受け入れる可能性のある**悪意のあるOauthアプリケーション**を作成して、特権データアクションにアクセスすることがあります。
これらは、Oauthアプリケーションが要求できる[スコープ](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps)です。受け入れる前に、要求されたスコープを常に確認する必要があります。
これらは、[Oauthアプリケーションが要求できるスコープ](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps)です。常に要求されたスコープを確認してから受け入れるべきです。
さらに、基本情報で説明されているように、**組織はサードパーティアプリケーションに対して情報/リポジトリ/アクションへのアクセスを与えたり拒否したりできます**。
### Githubアプリケーションを使用して
### With Github Application
[**Githubアプリケーションについての基本情報を確認する**](basic-github-information.md#github-applications)の紹介。
[**Githubアプリケーションの基本情報については、こちらを確認してください**](basic-github-information.md#github-applications)の紹介。
攻撃者は、フィッシングキャンペーンの一環として、ユーザーが受け入れる可能性のある**悪意のあるGithubアプリケーション**を作成して、特権データ/アクションにアクセスすることがあります。
攻撃者は、フィッシングキャンペーンの一環として、ユーザーが受け入れる可能性のある**悪意のあるGithubアプリケーション**を作成して、特権データアクションにアクセスすることがあります。
さらに、基本情報で説明されているように、**組織はサードパーティアプリケーションに対して情報/リポジトリ/アクションへのアクセスを与えたり拒否したりできます**。
## Github Actionの妥協と悪用
## Compromise & Abuse Github Action
Github Actionを妥協し悪用するためのいくつかの技術があります。ここで確認してください
Github Actionを妨害し悪用するためのいくつかの技術があります。ここで確認してください:
{{#ref}}
abusing-github-actions/
{{#endref}}
## ブランチ保護のバイパス
## Branch Protection Bypass
- **承認の数を要求する**: 複数のアカウントを妥協した場合、他のアカウントからPRを受け入れることができます。PRを作成したアカウントしか持っていない場合、自分のPRを承認することはできません。しかし、リポジトリ内の**Github Action**環境にアクセスできる場合、**GITHUB_TOKEN**を使用して**PRを承認**し、この方法で1つの承認を得ることができるかもしれません。
- _この点とCode Owners制限についての注意: 通常、ユーザーは自分のPRを承認できませんが、もしできる場合は、それを悪用して自分のPRを受け入れることができます。_
- **新しいコミットがプッシュされたときに承認を取り消す**: これが設定されていない場合、正当なコードを提出し、誰かが承認するのを待ってから、悪意のあるコードを追加して保護されたブランチにマージすることができます。
- **Code Ownersからのレビューを要求する**: これが有効になっていて、あなたがCode Ownerであれば、**Github ActionがあなたのPRを作成し、あなた自身で承認することができます**
- **CODEOWNERファイルが誤って設定されている場合**Githubは文句を言いませんが、それを使用しません。したがって、誤って設定されている場合は、**Code Ownersの保護が適用されません。**
- **承認の数を要求**: 複数のアカウントを妨害した場合、他のアカウントから自分のPRを承認することができます。PRを作成したアカウントしか持っていない場合、自分のPRを承認することはできません。しかし、リポジトリ内の**Github Action**環境にアクセスできる場合、**GITHUB_TOKEN**を使用して**PRを承認**し、この方法で1つの承認を得ることができるかもしれません。
- _この点とCode Owners制限についての注意: 通常、ユーザーは自分のPRを承認できませんが、もしできる場合は、それを悪用して自分のPRを承認できます。_
- **新しいコミットがプッシュされたときに承認を取り消す**: これが設定されていない場合、正当なコードを提出し、誰かが承認するのを待ってから、悪意のあるコードを追加して保護されたブランチにマージできます。
- **Code Ownersからのレビューを要求**: これが有効になっていて、あなたがCode Ownerであれば、**Github ActionがあなたのPRを作成し、その後自分で承認する**ことができます。
- **CODEOWNERファイルが誤設定されている場合**: Githubは文句を言いませんが、それを使用しません。したがって、誤設定されている場合は、**Code Ownersの保護が適用されません。**
- **指定されたアクターがプルリクエストの要件をバイパスできるようにする**: あなたがこれらのアクターの1人であれば、プルリクエストの保護をバイパスできます。
- **管理者を含める**: これが設定されていない場合、リポジトリの管理者であれば、このブランチの保護をバイパスできます。
- **PRハイジャック**: 他の誰かのPRを**変更して悪意のあるコードを追加し、結果として得られたPRを自分で承認しすべてをマージすることができるかもしれません。**
- **ブランチ保護の削除**: あなたが**リポジトリの管理者であれば、保護を無効にし、PRをマージして、再度保護を設定できます。**
- **PRハイジャック**: 他の誰かのPRを**変更して悪意のあるコードを追加し、結果として得られたPRを自分で承認しすべてをマージ**できるかもしれません。
- **ブランチ保護の削除**: あなたが**リポジトリの管理者であれば、保護を無効にし、PRをマージして保護を設定**できます。
- **プッシュ保護のバイパス**: リポジトリが**特定のユーザーのみ**がブランチにプッシュ(コードをマージ)できるようにしている場合(ブランチ保護がすべてのブランチを保護している可能性がありますが、ワイルドカード`*`を指定しています)。
- **リポジトリに対する書き込みアクセスがあるが、ブランチ保護のためにコードをプッシュできない場合**、新しいブランチを**作成し、その中でコードがプッシュされたときにトリガーされる**Github Actionを作成することができます。**ブランチ保護はブランチが作成されるまで保護しないため**、この最初のコードプッシュは**Github Actionを実行します**。
- **リポジトリに対する書き込みアクセスがあるが、ブランチ保護のためにコードをプッシュできない場合**、新しいブランチを**作成し、その中でコードがプッシュされたときにトリガーされる**Github Actionを作成できます。**ブランチ保護はブランチが作成されるまで保護しないため**、この最初のコードプッシュは**Github Actionを実行します**。
## 環境保護のバイパス
## Bypass Environments Protections
[**Github環境についての基本情報を確認する**](basic-github-information.md#git-environments)の紹介
[**Github環境の基本情報については、こちらを確認してください**](basic-github-information.md#git-environments)。
環境**すべてのブランチからアクセス可能な場合**、それは**保護されていない**ため、環境内の秘密に簡単にアクセスできます。**すべてのブランチが保護されている**リポジトリ(名前を指定するか、`*`を使用することによって)を見つけることがあることに注意してください。その場合、**コードをプッシュできるブランチを見つけ**、新しいGithub Actionを作成することで秘密を**抽出**できますまたは1つを修正することができます)。
環境**すべてのブランチからアクセスできる場合**、それは**保護されていない**ため、環境内のシークレットに簡単にアクセスできます。**すべてのブランチが保護されている**リポジトリ(名前を指定するか、`*`を使用することによって)を見つけることがあることに注意してください。その場合、**コードをプッシュできるブランチを見つけ**、新しいGithub Actionを作成することでシークレットを**抽出**できますまたは1つを変更することができます)。
すべてのブランチが**保護されている**(ワイルドカード`*`を介して)場合、**誰がブランチにコードをプッシュできるかが指定されており**、**あなたのユーザーは許可されていない**というエッジケースがあることに注意してください。それでもカスタムGithub Actionを実行できます。なぜなら、ブランチを作成し、その上でプッシュトリガーを使用できるからです。**ブランチ保護は新しいブランチへのプッシュを許可するため、Github Actionがトリガーされます**。
すべてのブランチが保護されている(ワイルドカード`*`を介して)場合、**誰がブランチにコードをプッシュできるかが指定されている**エッジケースがあることに注意してください(これはブランチ保護で指定できます)し、**あなたのユーザーは許可されていません**。それでもカスタムGithub Actionを実行できます。なぜなら、ブランチを作成し、その上でプッシュトリガーを使用できるからです。**ブランチ保護は新しいブランチへのプッシュを許可するため、Github Actionがトリガーされます**。
```yaml
push: # Run it when a push is made to a branch
branches:
@@ -207,18 +207,18 @@ branches:
- **ユーザートークン**を生成
- **シークレット**から**githubトークン**を盗む
- ワークフローの**結果**と**ブランチ**の**削除**
- **組織全体に対してより多くの権限を付与**
- **全ての組織に対してより多くの権限を付与**
- 情報を外部に流出させるための**ウェブフック**を作成
- **外部コラボレーター**を招待
- **SIEM**によって使用される**ウェブフック**を**削除**
- **SIEM**使用されている**ウェブフック**を**削除**
- **バックドア**を持つ**Github Action**を作成/変更
- **シークレット**値の変更を通じて**コマンドインジェクション**に脆弱な**Github Action**を見つける
### 偽のコミット - リポジトリコミットを通じたバックドア
### 偽のコミット - リポジトリコミットを介したバックドア
Githubでは、**フォークからリポジトリにPRを作成**することが可能です。PRが**受け入れられなくても**、元のリポジトリ内にフォーク版のコードのための**コミット**IDが作成されます。したがって、攻撃者は**リポジトリの所有者によって作成されていない、見た目上正当なリポジトリから特定のコミットを使用するようにピン留めすることができる**かもしれません
Githubでは、**フォークからリポジトリにPRを作成**することが可能です。PRが**受け入れられなくても**、元のリポジトリ内にフォーク版のコードの**コミット**IDが作成されます。したがって、攻撃者は**リポジトリの所有者によって作成されていない、見た目上正当なリポジトリから特定のコミットを使用するようにピン留めすることができます**
[**これのように**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e):
[**これ**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e)のように:
```yaml
name: example
on: [push]