Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
chore: make greetings on PR First-time Contrib by ddevsr · Pull Request #8885 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: make greetings on PR First-time Contrib by ddevsr · Pull Request #8885 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: make greetings on PR First-time Contrib by ddevsr · Pull Request #8885 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' chore: make greetings on PR First-time Contrib by ddevsr · Pull Request #8885 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: make greetings on PR First-time Contrib by ddevsr · Pull Request #8885 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' chore: make greetings on PR First-time Contrib by ddevsr · Pull Request #8885 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); chore: make greetings on PR First-time Contrib by ddevsr · Pull Request #8885 · codeigniter4/CodeIgniter4 · GitHub
Skip to content

chore: make greetings on PR First-time Contrib - #8885

Closed
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr
Closed

chore: make greetings on PR First-time Contrib#8885
ddevsr wants to merge 3 commits into
codeigniter4:developfrom
ddevsr:greetings-pr

Conversation

@ddevsr

Copy link
Copy Markdown
Collaborator

Description
Ref codeigniter4/CodeIgniter4#8878.

Checklist:

  • Securely signed commits
  • Component(s) with PHPDoc blocks, only if necessary or adds value
  • Unit testing, with >80% coverage
  • User guide updated
  • Conforms to style guide

@ddevsrddevsr added the github_actions Pull requests that update Github_actions code label May 11, 2024
kenjis
kenjis previously approved these changes May 11, 2024
Comment thread.github/workflows/greetings.yml Outdated
@kenjis
kenjis dismissed their stale reviewMay 11, 2024 01:58

pull_requedt_target should not be used for security reasons.

@kenjis

Copy link
Copy Markdown
Member

By Claude 3 Sonnet.

Q: We are running an open source project on GitHub and using GitHub Actions for all pull requests. What are the security considerations when using pull_requedt_target in workflows?

When using the pull_request_target event in GitHub Actions workflows, there are some important security considerations to keep in mind:

  1. Untrusted Code: The pull_request_target event runs the workflow code from the pull request's head commit, which means it executes code from an untrusted source. This code could potentially be malicious, so it's crucial to ensure that your workflow doesn't perform any sensitive operations or expose any secrets.

  2. Code Injection: If your workflow includes steps that allow user input or use external data sources, there's a risk of code injection attacks. Malicious code could be injected into your workflow, leading to unintended actions or data leaks.

  3. Permissions: By default, the pull_request_target event runs with read-only permissions to the repository. However, if your workflow requires write access, you'll need to grant the GITHUB_TOKEN permissions explicitly. This introduces a potential risk if the workflow is compromised, as it could then make unauthorized changes to your repository.

  4. Secrets Exposure: If your workflow uses secrets (e.g., API keys, passwords), they could potentially be exposed to the untrusted code in the pull request. It's recommended to avoid using secrets in workflows triggered by the pull_request_target event, or at least limit their usage to read-only operations.

  5. Resource Exhaustion: Malicious pull requests could attempt to overwhelm your system resources (e.g., CPU, memory, disk space) by running resource-intensive operations in the workflow. It's important to set reasonable limits and monitor resource usage.

To mitigate these risks, consider the following best practices:

  1. Validate Inputs: Sanitize and validate all inputs and data sources used in your workflow to prevent code injection attacks.
  2. Minimize Permissions: Grant the minimum required permissions to the GITHUB_TOKEN or use a custom token with limited scope.
  3. Avoid Secrets: If possible, avoid using secrets in workflows triggered by the pull_request_target event. If you must use secrets, ensure they are only used for read-only operations.
  4. Resource Limits: Set appropriate resource limits for your workflows to prevent resource exhaustion attacks.
  5. Code Review: Thoroughly review the code in pull requests before merging, especially if the workflow performs sensitive operations.
  6. Monitoring and Logging: Implement monitoring and logging mechanisms to detect and respond to potential security incidents or misuse.
  7. Security Updates: Keep your GitHub Actions environment and dependencies up-to-date with the latest security patches and updates.

By following these best practices, you can mitigate the risks associated with running untrusted code in your GitHub Actions workflows and maintain a secure environment for your open-source project.

@paulbalandan

Copy link
Copy Markdown
Member

Based on actions/first-interaction's readme, it is enough to use pull_request event:
https://github.com/actions/first-interaction?tab=readme-ov-file#usage

@kenjis

Copy link
Copy Markdown
Member

@kenjis

Copy link
Copy Markdown
Member

@ddevsr Thank you. But did you test this works on pull requests by contributers?

@kenjis

Copy link
Copy Markdown
Member

By ChatGPT.

Using pull_request_target in GitHub Actions workflows comes with several security considerations, especially for open-source projects where pull requests (PRs) may come from untrusted contributors. Here’s what you need to keep in mind:

1. Access to Secrets

  • Workflows triggered by pull_request_target run in the context of the base repository (i.e., the repository into which the PR is being merged). This means they have access to secrets and can perform actions with the repository's permissions.
  • An attacker could potentially submit a malicious PR to exploit this, accessing secrets or performing unauthorized actions.

2. Careful with Untrusted Code

  • Avoid checking out and running untrusted code directly from the PR in these workflows. If you do need to check out the PR, consider using actions/checkout with ref: ${{ github.event.pull_request.head.ref }} instead of the PR’s branch, but be cautious.
  • One safer approach is to validate the PR (e.g., linting, formatting, running tests) without exposing secrets or doing anything sensitive.

3. Use Limited Scopes

  • Ensure the GitHub token (GITHUB_TOKEN) or any other credentials used in the workflow are scoped appropriately, limiting permissions as much as possible.
  • Consider using the permissions key in the workflow file to restrict the default permissions of the GITHUB_TOKEN.

4. Review and Approval

  • Implement mandatory code reviews before workflows using pull_request_target can be merged. This adds an additional layer of protection by ensuring that a maintainer reviews potentially malicious code before it executes.

5. Limit Workflow Modifications

  • Be cautious about allowing workflows or configuration files to be modified in PRs, as these changes could be exploited. Ensure that any changes to workflow files are reviewed thoroughly.

6. Consider Alternative Triggers

  • For untrusted code or contributors, consider using pull_request instead of pull_request_target if you don’t need access to secrets or write permissions. This trigger runs in the context of the fork, offering more isolation.

7. Custom Environment Variables

  • Be careful when passing custom environment variables to workflows triggered by pull_request_target. Avoid passing sensitive information directly from the PR.

Summary

Using pull_request_target is powerful but should be approached with caution, especially in open-source projects. The key is to limit exposure and access to sensitive resources, thoroughly review untrusted code, and ensure workflows are tightly controlled and reviewed.

greeting:
runs-on: ubuntu-latest
permissions:
issues: read

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line does not seem to be needed.

Suggested change
issues: read

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actionsPull requests that update Github_actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@ddevsr@kenjis@paulbalandan@datamweb