Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Error when calling createComment with markdown in body

未关闭
#723 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
55/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
冷清
技术栈
github, github-actions, javascript, typescript
领域
api, ci-cd, devops

调研方向

Reproduce the workflow step using actions/github-script@v9.0.0 and github.rest.issues.createComment with the shown nested Markdown and code fences, then inspect the action's script evaluation and comment request path. Done means the exact body creates a comment without the SyntaxError, including its backticks and pickle text.

由索引模型根据 Issue 内容生成。

描述

Describe the bug
The following error is thrown:
Error: Unhandled error: SyntaxError: Unexpected identifier 'pickle'

To Reproduce
Steps to reproduce the behavior:
run the following action step:

    - name: Create comment
      uses: actions/github-script@v9.0.0
      with:
        github-token: ${{ inputs.github-token }}
        script: |
          github.rest.issues.createComment({
            issue_number: context.issue.number,
            owner: context.repo.owner,
            repo: context.repo.repo,
            body: `### 1. **Arbitrary Code Execution via `pickle.loads()` on Untrusted Input** (`test01.py`)
 
              **Severity: CRITICAL**
             
              The file `test01.py` takes user input directly and passes it to `pickle.loads()`. This is a well-known **Remote Code Execution (RCE)** vulnerability. An attacker can craft a malicious pickle payload that executes arbitrary system commands upon deserialization.
             
              Additionally, `pickle.loads()` expects `bytes`, but `input()` returns a `str` in Python 3, so this code will also raise a **`TypeError`** at runtime.
             
              **File: `test01.py`**
             
              ```python
              # Current (vulnerable and broken):
              import pickle
             
              data = input("Enter serialized data: ")
              obj = pickle.loads(data)
              ```
             
              **Suggested fix:**
             
              ```python
              import json
             
              data = input("Enter serialized data: ")
              obj = json.loads(data)
              ```
             
              If `pickle` is absolutely required (not recommended with untrusted input), at minimum fix the type error and restrict allowed classes:
             
              ```python
              import pickle
              import io
             
              ALLOWED_CLASSES = {
                  # explicitly list allowed classes here
              }
             
              class RestrictedUnpickler(pickle.Unpickler):
                  def find_class(self, module, name):
                      if (module, name) in ALLOWED_CLASSES:
                          return ALLOWED_CLASSES[(module, name)]
                      raise pickle.UnpicklingError(f"Forbidden class: {module}.{name}")
             
              data = input("Enter serialized data: ")
              obj = RestrictedUnpickler(io.BytesIO(data.encode('latin-1'))).load()
              ```
            `
          })

Expected behavior
No error and comment is created.

Desktop (please complete the following information):

  • OS: Ubuntu 22.04
  • Runner 2.331.0

Additional context
The markdown text is actually a dynamic response generated by a LLM, hence no way to modify the markdown contents.

主要语言
TypeScript
星标
5k
派生
586
PR 合并指标
30 天内没有已合并 PR

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

actions/github-script 的其他 Issue

查看 actions/github-script 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。