)]}'
{
  "commit": "84d77d3f06e7e8dea057d10e8ec77ad71f721be3",
  "tree": "6efbcfc0877019c2afbdf11596362c8198ebdd0d",
  "parents": [
    "64b875f7ac8a5d60a4e191479299e931ee949b67"
  ],
  "author": {
    "name": "Eric W. Biederman",
    "email": "ebiederm@xmission.com",
    "time": "Tue Nov 22 12:06:50 2016 -0600"
  },
  "committer": {
    "name": "Eric W. Biederman",
    "email": "ebiederm@xmission.com",
    "time": "Tue Nov 22 12:57:38 2016 -0600"
  },
  "message": "ptrace: Don\u0027t allow accessing an undumpable mm\n\nIt is the reasonable expectation that if an executable file is not\nreadable there will be no way for a user without special privileges to\nread the file.  This is enforced in ptrace_attach but if ptrace\nis already attached before exec there is no enforcement for read-only\nexecutables.\n\nAs the only way to read such an mm is through access_process_vm\nspin a variant called ptrace_access_vm that will fail if the\ntarget process is not being ptraced by the current process, or\nthe current process did not have sufficient privileges when ptracing\nbegan to read the target processes mm.\n\nIn the ptrace implementations replace access_process_vm by\nptrace_access_vm.  There remain several ptrace sites that still use\naccess_process_vm as they are reading the target executables\ninstructions (for kernel consumption) or register stacks.  As such it\ndoes not appear necessary to add a permission check to those calls.\n\nThis bug has always existed in Linux.\n\nFixes: v1.0\nCc: stable@vger.kernel.org\nReported-by: Andy Lutomirski \u003cluto@amacapital.net\u003e\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "940dfb4065910822d42f3d11c02ba2305f25b02a",
      "old_mode": 33188,
      "old_path": "arch/alpha/kernel/ptrace.c",
      "new_id": "04abdec7f49605ecee1b460162440b6cfdb3f554",
      "new_mode": 33188,
      "new_path": "arch/alpha/kernel/ptrace.c"
    },
    {
      "type": "modify",
      "old_id": "8d79286ee4e878044b02c963f5fb3c6deaaafb19",
      "old_mode": 33188,
      "old_path": "arch/blackfin/kernel/ptrace.c",
      "new_id": "360d996451633c8281256048305f88c245ae3819",
      "new_mode": 33188,
      "new_path": "arch/blackfin/kernel/ptrace.c"
    },
    {
      "type": "modify",
      "old_id": "f0df654ac6fc5ca53ffd6d6951817e92f492e0be",
      "old_mode": 33188,
      "old_path": "arch/cris/arch-v32/kernel/ptrace.c",
      "new_id": "fe1f9cf7b391e54c9b973b07fe00d29ab6099ec5",
      "new_mode": 33188,
      "new_path": "arch/cris/arch-v32/kernel/ptrace.c"
    },
    {
      "type": "modify",
      "old_id": "31aa8c0f68e14a284e0f2b088afe4c29de7daee5",
      "old_mode": 33188,
      "old_path": "arch/ia64/kernel/ptrace.c",
      "new_id": "36f660da81242f6cb13be8ded36f4d80bad4759d",
      "new_mode": 33188,
      "new_path": "arch/ia64/kernel/ptrace.c"
    },
    {
      "type": "modify",
      "old_id": "7e71a4e0281ba9cc3c2190dd9a06d958754155fb",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/ptrace32.c",
      "new_id": "5fcbdcd7abd0bcecff728726812aca54519608c7",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/ptrace32.c"
    },
    {
      "type": "modify",
      "old_id": "010b7b310237e4be38ef1d7bcc15a76050fc4469",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/ptrace32.c",
      "new_id": "1e887f3a61a675a0dd9a7ff5aa29c2b205c809ec",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/ptrace32.c"
    },
    {
      "type": "modify",
      "old_id": "a92c8d73aeafc5f5bafa551eacc284f86bad50d0",
      "old_mode": 33188,
      "old_path": "include/linux/mm.h",
      "new_id": "0b5b2e4df14e909ba62c33d3704b9578ddbce88e",
      "new_mode": 33188,
      "new_path": "include/linux/mm.h"
    },
    {
      "type": "modify",
      "old_id": "e13bfdf7f314784e326b245e1f1ab5465da9e7dc",
      "old_mode": 33188,
      "old_path": "include/linux/ptrace.h",
      "new_id": "e0e539321ab95c38adb2ca9f28b358e04253c999",
      "new_mode": 33188,
      "new_path": "include/linux/ptrace.h"
    },
    {
      "type": "modify",
      "old_id": "e82c15cadd6df68dfbe7c8866485db59c3f8689d",
      "old_mode": 33188,
      "old_path": "kernel/ptrace.c",
      "new_id": "49ba7c1ade9d074b814105fb648f33b0ce95f061",
      "new_mode": 33188,
      "new_path": "kernel/ptrace.c"
    },
    {
      "type": "modify",
      "old_id": "e18c57bdc75c4c96e3ef79546afe11fab5a3c07a",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "cbb1e5e5f79159159d1f90fe607a9e512bdcaf53",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    },
    {
      "type": "modify",
      "old_id": "8b8faaf2a9e95cfc607ff1a5a37c83eadfda59fe",
      "old_mode": 33188,
      "old_path": "mm/nommu.c",
      "new_id": "44265e00b701ebe5bc3327c8575f5181aa6a6f99",
      "new_mode": 33188,
      "new_path": "mm/nommu.c"
    }
  ]
}
