)]}'
{
  "commit": "d356e2178b542e36dda3d311e8a787a9ef4b352b",
  "tree": "99c8c9363887035d6b67659265ee7fc9dcdc2ada",
  "parents": [
    "9056cc2162f77f90250855c9e838c221d540c6ba"
  ],
  "author": {
    "name": "Neal Patel",
    "email": "nealpatel@google.com",
    "time": "Thu Sep 24 13:00:00 2026 -0400"
  },
  "committer": {
    "name": "Neal Patel",
    "email": "nealpatel@google.com",
    "time": "Thu Sep 24 14:15:36 2026 -0700"
  },
  "message": "all: use os.Root for handling user input\n\nThe playground accepts arbitrary user input\nin the form of a txtar file in the /compile\nendpoint: https://golang.org/x/tools/txtar\n\nA malicious txtar could escape the intended\nexecution context and force arbitrary writes\nto the playground host\u0027s trusted filesystem.\n\nDisjointly, one of the three possible paths\nto invoke `go vet` on the playground host\ndid not correctly lockdown the execution env.\nThis permitted a Go process to make a read\nfor an environment configuration file rooted\nin the playground host\u0027s $HOME.\n\nTogether, a well-crafted go env file and the\n`go vet` invocation could lead to remote code\nexecution in the playground host itself.\n\nWe now use `os.Root` to ensure that user-provided\narchives cannot escape the execution context.\n\nThanks to splitline (@splitline) from DEVCORE\nResearch Team for reporting this issue.\n\nFor CVE-2026-94445\nFor golang/go#81737\n\nChange-Id: Idc6fcba402502788a0c911b612f7dd6c9506ec36\nReviewed-on: https://go-review.googlesource.com/c/playground/+/838485\nReviewed-by: Nicholas Husin \u003chusin@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Nicholas Husin \u003cnsh@golang.org\u003e\nAuto-Submit: Neal Patel \u003cnealpatel@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f39129157ff98f4787e8ce5d1e624098db30e7cc",
      "old_mode": 33188,
      "old_path": "sandbox.go",
      "new_id": "e6f467b7bf7d145a23c7e1c557dbbd35c2408ef6",
      "new_mode": 33188,
      "new_path": "sandbox.go"
    },
    {
      "type": "modify",
      "old_id": "3466158356ec4a0f9da40653c9c650e5202e0e42",
      "old_mode": 33188,
      "old_path": "sandbox/sandbox.go",
      "new_id": "eb81810b99e6e33f3423ba374b3d51a877404f79",
      "new_mode": 33188,
      "new_path": "sandbox/sandbox.go"
    },
    {
      "type": "modify",
      "old_id": "b80362d5b76710f65b9dcfb2cc585f58d912a32f",
      "old_mode": 33188,
      "old_path": "server.go",
      "new_id": "529ef872a3c16f18499ab559dccf8e333f6b76de",
      "new_mode": 33188,
      "new_path": "server.go"
    },
    {
      "type": "modify",
      "old_id": "1e449a90b1c528aac2c0215d8c0f89d97b9a2518",
      "old_mode": 33188,
      "old_path": "vet.go",
      "new_id": "1b38550e8e7c746924ddd8c973279415fec101fb",
      "new_mode": 33188,
      "new_path": "vet.go"
    }
  ]
}
