[
  {
    "id": "DESER001",
    "pattern": "pickle\\.loads|ObjectInputStream|BinaryFormatter|unserialize\\s*\\(",
    "flags": "",
    "category": "deserialization",
    "description": "Deserialization (expanded)",
    "language": [
      "js",
      "ts",
      "python",
      "java",
      "go",
      "csharp",
      "php",
      "ruby",
      "rust",
      "kotlin"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER002",
    "pattern": "DataContractSerializer|JavaScriptSerializer|JsonConvert\\.DeserializeObject\\s*<(?!string)",
    "flags": "i",
    "category": "deserialization",
    "description": "Deserialization (expanded)",
    "language": [
      "js",
      "ts",
      "python",
      "java",
      "go",
      "csharp",
      "php",
      "ruby",
      "rust",
      "kotlin"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER003",
    "pattern": "ObjectMessage|message\\.getObject\\s*\\(\\)|readObject\\s*\\(\\)",
    "flags": "",
    "category": "deserialization",
    "description": "Deserialization (expanded)",
    "language": [
      "js",
      "ts",
      "python",
      "java",
      "go",
      "csharp",
      "php",
      "ruby",
      "rust",
      "kotlin"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER004",
    "pattern": "new BinaryFormatter\\s*\\(\\)",
    "flags": "i",
    "category": "deserialization",
    "description": "C# deserialization",
    "language": [
      "csharp"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER005",
    "pattern": "TypeNameHandling\\.(?:All|Objects|Auto)",
    "flags": "i",
    "category": "deserialization",
    "description": "C# deserialization",
    "language": [
      "csharp"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER006",
    "pattern": "new LosFormatter\\s*\\(\\)",
    "flags": "i",
    "category": "deserialization",
    "description": "C# deserialization",
    "language": [
      "csharp"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER007",
    "pattern": "unserialize\\s*\\(\\s*\\$(?:_GET|_POST|_REQUEST|_COOKIE|data)",
    "flags": "i",
    "category": "deserialization",
    "description": "PHP deserialization",
    "language": [
      "php"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER008",
    "pattern": "Class\\.forName\\s*\\(",
    "flags": "",
    "category": "deserialization",
    "description": "Kotlin: deserialization (Gson Class.forName, Kryo unsafe config)",
    "language": [
      "kotlin"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER009",
    "pattern": "kryo\\.readClassAndObject\\s*\\(|isRegistrationRequired\\s*=\\s*false",
    "flags": "i",
    "category": "deserialization",
    "description": "Kotlin: deserialization (Gson Class.forName, Kryo unsafe config)",
    "language": [
      "kotlin"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER010",
    "pattern": "\\[\\s*\\w+\\.(?:action|method|nextStep|type)\\s*\\]",
    "flags": "",
    "category": "deserialization",
    "description": "JS/TS: unsafe deserialization via dynamic property/method dispatch",
    "language": [
      "js",
      "ts"
    ],
    "severity": "critical"
  },
  {
    "id": "DESER011",
    "pattern": "plainToClass\\s*\\(\\s*\\w+\\s*,",
    "flags": "",
    "category": "deserialization",
    "description": "JS/TS: unsafe deserialization via dynamic property/method dispatch",
    "language": [
      "js",
      "ts"
    ],
    "severity": "critical"
  }
]
