GHSA-p67v-3w7g-wjg7

    Dashboard / Vulnerabilities / GHSA-p67v-3w7g-wjg7

    GHSA-p67v-3w7g-wjg7

    Published: 19 Jun 2026Last Modified: 10 Sept 2026

    Summary: Nokogiri: Possible Use-After-Free when directly using `NokogirI::XML::XPathContext` beyond document lifetime

    Details: ### Summary `Nokogiri::XML::XPathContext` did not keep its source document alive for garbage collection. If an `XPathContext` outlived its document and the document was collected, evaluating an XPath expression could read invalid memory and potentially segfault. This is only reachable when application code constructs an `XPathContext` directly and lets the document become unreachable while continuing to use the context. The normal `Document#xpath`, `#css`, and related search methods are not affected, and it is not triggerable by malicious document input. Nokogiri 1.19.4 makes `XPathContext` keep its source document alive for as long as the context exists. Only the CRuby implementation is affected. JRuby is not affected. ### Severity The Nokogiri maintainers have evaluated this as low severity. Reaching it requires an unusual API-usage pattern that does not arise during normal use. The application must construct an `XML::XPathContext` directly and continue using it after allowing its source document to be garbage-collected. Nokogiri 1.19.4 makes this pattern safe with no change to the public API. The context now keeps its source document alive for as long as it exists. ### Mitigation Upgrade to Nokogiri 1.19.4 or later. As a workaround, ensure the source document remains referenced for as long as any `XPathContext` created from it is in use. The standard `Document#xpath`, `#css`, and related search methods already do this and are unaffected. ### Credit This issue was responsibly reported by Zheng Yu from depthfirst.com.

    Affected packages

    Package

    Name: nokogiri

    Purl: pkg:gem/nokogiri

    Affected ranges

    Type: ECOSYSTEM

    Events:

    Introduced- 0
    Fixed -1.19.4

    Affected versions

    1.0.0
    1.0.1
    1.0.2
    1.0.3
    1.0.4
    1.0.5
    1.0.6
    1.0.7

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High
    GHSA-p67v-3w7g-wjg7 | CVE-DB