[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KKCCPDAT0KB88WNJJ71XJW":3,"skill-same:01M6KKCCPDAT0KB88WNJJ71XJW":59},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6KKCCPDAT0KB88WNJJ71XJW","druid-vulnerability-patching",null,"Techniques for identifying and patching vulnerabilities in Apache Druid, specifically focusing on Jackson deserialization and JavaScript security. Use this skill when dealing with CVEs related to RCE or security bypasses in Druid.","cxcscmu\u002FSkillLearnBench","cxcscmu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142838272?v=4","01M6KCQDFQWPDSN0MKZY96MSQP","01M6KCQDM7G70TKJ28NTSQC0RZ",92,"MIT","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb4-skill-creator-gemini-3-flash-preview\u002Ffix-security-bug\u002Fdruid-vulnerability-patching\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31],"patching","vulnerability","druid vulnerability patching","security","vulnerabilities","javascript","apache","deserialization","rce","use","jackson","with","techniques","for","2026-11-10 10:12:30",false,"---\nname: druid-vulnerability-patching\ndescription: Techniques for identifying and patching vulnerabilities in Apache Druid, specifically focusing on Jackson deserialization and JavaScript security. Use this skill when dealing with CVEs related to RCE or security bypasses in Druid.\n---\n\n# Druid Vulnerability Patching\n\n## Jackson Deserialization Security\nApache Druid uses Jackson for JSON deserialization. A common vulnerability is when injected values (via `@JacksonInject`) can be overridden by user-provided JSON properties.\n\n### Preventing Injection Overrides\nTo prevent a JSON property from overriding an injected value, use the `useInput` attribute of `@JacksonInject` set to `OptBoolean.FALSE`.\n\nExample:\n```java\n@JsonCreator\npublic MyObject(\n    @JsonProperty(\"prop\") String prop,\n    @JacksonInject(useInput = com.fasterxml.jackson.annotation.OptBoolean.FALSE) MyConfig config\n)\n```\n\n### Identifying Vulnerable Components\nSearch for all occurrences of `@JacksonInject` in the codebase, especially those involving configuration classes like `JavaScriptConfig`, `AuthConfig`, etc.\n\n```bash\ngrep -r \"@JacksonInject\" .\n```\n\n## JavaScript Security in Druid\nDruid has a global configuration to enable\u002Fdisable JavaScript execution. This is usually managed by `JavaScriptConfig`.\n\n### Security Checks\nAlways check `config.isEnabled()` before executing any JavaScript.\n\n```java\nif (!config.isEnabled()) {\n  throw new ISE(\"JavaScript is disabled\");\n}\n```\n\n### Bypass via Empty Keys\nAttackers may use empty keys `\"\"` in JSON to target parameters that lack a name during deserialization. Ensuring all constructor parameters have explicit `@JsonProperty` names or disabling input for `@JacksonInject` prevents this.\n","# Druid Vulnerability Patching\n\n## Jackson Deserialization Security\nApache Druid uses Jackson for JSON deserialization. A common vulnerability is when injected values (via `@JacksonInject`) can be overridden by user-provided JSON properties.\n\n### Preventing Injection Overrides\nTo prevent a JSON property from overriding an injected value, use the `useInput` attribute of `@JacksonInject` set to `OptBoolean.FALSE`.\n\nExample:\n```java\n@JsonCreator\npublic MyObject(\n    @JsonProperty(\"prop\") String prop,\n    @JacksonInject(useInput = com.fasterxml.jackson.annotation.OptBoolean.FALSE) MyConfig config\n)\n```\n\n### Identifying Vulnerable Components\nSearch for all occurrences of `@JacksonInject` in the codebase, especially those involving configuration classes like `JavaScriptConfig`, `AuthConfig`, etc.\n\n```bash\ngrep -r \"@JacksonInject\" .\n```\n\n## JavaScript Security in Druid\nDruid has a global configuration to enable\u002Fdisable JavaScript execution. This is usually managed by `JavaScriptConfig`.\n\n### Security Checks\nAlways check `config.isEnabled()` before executing any JavaScript.\n\n```java\nif (!config.isEnabled()) {\n  throw new ISE(\"JavaScript is disabled\");\n}\n```\n\n### Bypass via Empty Keys\nAttackers may use empty keys `\"\"` in JSON to target parameters that lack a name during deserialization. Ensuring all constructor parameters have explicit `@JsonProperty` names or disabling input for `@JacksonInject` prevents this.\n",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb4-skill-creator-gemini-3-flash-preview\u002Ffix-security-bug\u002Fdruid-vulnerability-patching",7,"https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench","https:\u002F\u002Fcxcscmu.github.io\u002FSkillLearnBench","https:\u002F\u002Fgithub.com\u002Fcxcscmu","2026-10-02 22:55:36",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill druid-vulnerability-patching",{"tool":51,"command":52},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill druid-vulnerability-patching",{"tool":54,"command":55},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill druid-vulnerability-patching","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb4-skill-creator-gemini-3-flash-preview\u002Ffix-security-bug\u002Fdruid-vulnerability-patching\u002FSKILL.md",true,[],[60,78,102,120,140,152],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":71,"publishedAt":32},"01M6KM5KH175P5ABP5JMX2SBDQ","object_counter","Count occurrences of an object in the image using computer vision algorithm.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Fvideo-object-counting\u002Fobject_counter\u002FSKILL.md",[66],{"categoryNo":67,"categoryName":68,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[72,73,74,75,76,77],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":87,"publishedAt":32},"01M6KM51TMVXG79MMPCS6Y8G86","travel-planning-workflow","Invoke this skill when performing travel planning. It defines a structured workflow for generating itineraries. Following this workflow is essential to ensure the final plan satisfies user requirements.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Ftravel-planning-workflow\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000023","Skill与智能体开发",[88,89,90,91,92,93,94,95,96,31,97,98,99,100,101],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","user","it","requirements","essential","itineraries",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":32},"01M6KM4DY820XHS9YTSK5QP5HD","bundled-dataset-search-tool","invoke this skill when you need to perform database search for travel planning. This skill provides some useful pre-packaged tools to look up accommodations, attractions, cities, driving distance, flights, and restaurants from the bundled dataset.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Fbundled-dataset-search-tool\u002FSKILL.md",[],[109,110,111,112,113,114,115,91,116,117,92,118,31,119,89],"search","tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":32},"01M6KM465BB9PQ0B548HQSVAWZ","glm-output","Output-processing guidance for GLM tasks. Especially useful after glm-basics and glm-calibration when you need verifier-matching metrics from output.nc and a final \u002Froot\u002Fmetrics.json.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-output\u002FSKILL.md",[],[127,128,129,31,130,131,132,133,134,135,136,137,118,138,139],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":147,"publishedAt":32},"01M6KM40KY3QWDW5W97S39R2BC","glm-calibration","Calibration guidance for GLM tasks. Often most effective after glm-basics has clarified the setup; glm-output is the companion skill for exact final metric computation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-calibration\u002FSKILL.md",[146],{"categoryNo":85,"categoryName":86,"taxonomyType":69,"taxonomyTypeDesc":70},[148,139,129,128,134,133,130,149,150,31,151],"glm calibration","setup","companion","metric",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":32},"01M6KM3VHHVSGMGHJQB3PPT6YG","glm-basics","A good starting point for GLM calibration tasks. Use to inspect glm3.nml, confirm how GLM runs, and identify the relevant files before moving on to calibration and output evaluation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-basics\u002FSKILL.md",[],[159,129,133,160,148,139,31,128,161,162,163,27,164,165,130],"glm basics","inspect","relevant","files","good","how","Evaluation"]