{"id":3223,"date":"2026-05-20T09:04:36","date_gmt":"2026-05-20T09:04:36","guid":{"rendered":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/"},"modified":"2026-05-20T09:04:36","modified_gmt":"2026-05-20T09:04:36","slug":"how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102","status":"publish","type":"post","link":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/","title":{"rendered":"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102)"},"content":{"rendered":"<div>\n<p><img width=\"990\" height=\"400\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg\" class=\"attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image\" alt=\"exiftools featured\" decoding=\"async\" loading=\"lazy\"><\/p>\n<h2 id=\"introduction\">Introduction<\/h2>\n<p><a>ExifTool<\/a> is a widely adopted utility for reading and writing metadata in image, PDF, audio, and video files. It is available both as a standalone command-line application and as a library that can be embedded in other software. In this article, we break down <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2026-3102\" target=\"_blank\" rel=\"noopener\">CVE-2026-3102<\/a>, an ExifTool vulnerability discovered by Kaspersky\u2019s Global Research and Analysis Team (GReAT) in February 2026 and patched by the developers within the same month. Affecting macOS systems with ExifTool version 13.49 and earlier, this flaw could let an attacker run arbitrary commands by hiding instructions inside an image file\u2019s metadata.<\/p>\n<p>This investigation originated from revisiting an n-day vulnerability I first examined years ago: <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/cve-2021-22204\" target=\"_blank\" rel=\"noopener\">CVE-2021-22204<\/a>. That flaw exploited weak regex-based sanitization before feeding user input into an eval sink. By auditing adjacent input validation routines across ExifTool codebase for similar oversights, I discovered <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2026-3102\" target=\"_blank\" rel=\"noopener\">CVE-2026-3102<\/a>. Successful exploitation of CVE-2026-3102 enables an attacker to execute arbitrary shell commands with the privileges of the user invoking ExifTool, potentially leading to full system compromise.<\/p>\n<h2 id=\"technical-details\">Technical details<\/h2>\n<h3 id=\"disclaimer\">Disclaimer<\/h3>\n<p>Exploiting CVE-2026-3102 requires the <code>-n<\/code> (also known as <code>-printConv<\/code>) flag and outputs machine-readable data without additional processing.<\/p>\n<h3 id=\"tracing-the-vulnerable-sink\">Tracing the vulnerable sink<\/h3>\n<p>Taint analysis (aka tainted data analysis) allows for the detection of \u201cdirty\u201d data that reaches dangerous locations without validation. In this context, a \u201csink\u201d is a point or function in a program where data or a parameter marked as \u201ctainted\u201d or originating from an untrusted source (e.g., user input) can affect the program\u2019s behavior. In ExifTool, these functions are <code>eval<\/code> and <code>system<\/code>, both of which are capable of executing system commands. While CVE-2021-22204 exploited an eval function as a sink, this vulnerability (CVE-2026-3102) targets the system function. Knowing the vulnerable sink, we needed to trace how user-controlled data reaches it. Below, we break down the details.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1.png\" class=\"magnificImage\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-119873\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1.png\" alt=\"\" width=\"774\" height=\"454\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1.png 774w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1-300x176.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1-768x450.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1-597x350.png 597w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1-740x434.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160759\/exiftools1-477x280.png 477w\" sizes=\"(max-width: 774px) 100vw, 774px\"><\/a><\/p>\n<h3 id=\"finding-an-unsanitized-date-value\">Finding an unsanitized date value<\/h3>\n<p>The screenshot above shows where the system() sink resides within the <code>SetMacOSTags<\/code> function. Tracing backward from <code>system()<\/code>, we identified the $cmd variable as the source of the executed command. This variable is assembled from three inputs: <code>$file<\/code> (properly sanitized), <code>$setTags<\/code> (processed iteratively), and <code>$val<\/code> (user-controlled and, crucially, left unsanitized in the vulnerable branch).<\/p>\n<p>In ExifTool, a tag is a named metadata field. When parsing an image, the utility extracts date and time values from standard EXIF records or macOS filesystem attributes. To handle file creation dates on macOS, ExifTool relies on the Spotlight system attribute <code>MDItemFSCreationDate<\/code>. Within the program code, this attribute maps to the internal alias $FileCreateDate. These two identifiers govern how the file creation date is stored and applied.<\/p>\n<p>This creates a critical link to the vulnerability: when parsing an image, ExifTool iterates through the discovered tags. The current tag\u2019s name is assigned to the $tag variable, while its text content (e.g., a date string) is assigned to $val. The vulnerable code path is triggered only when $tag matches <code>MDItemFSCreationDate<\/code> or <code>$FileCreateDate<\/code>. At this point, the tag\u2019s content flows into $val and is passed to the SetMacOSTags function. As shown in the screenshot below, the filename parameter is properly escaped, but the date value (<code>$val<\/code>) is not. Because the date is extracted directly from file metadata, an attacker can inject quotes into this field. This breaks the command structure and allows the payload to execute via the <code>system()<\/code> sink.<\/p>\n<p>The following screenshots show some of the tags that can be modified. With the vulnerable parameter identified, the next challenge was delivery: how to place our payload into <code>FileCreateDate<\/code> without triggering early validation? We found the answer in the official documentation.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160925\/exiftools3.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119874\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160925\/exiftools3.png\" alt=\"\" width=\"594\" height=\"85\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160925\/exiftools3.png 594w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160925\/exiftools3-300x43.png 300w\" sizes=\"auto, (max-width: 594px) 100vw, 594px\"><\/a><br \/>\n<a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-119875\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4.png\" alt=\"\" width=\"576\" height=\"529\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4.png 860w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4-300x276.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4-768x705.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4-381x350.png 381w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4-740x680.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4-305x280.png 305w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160956\/exiftools4-800x735.png 800w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\"><\/a><\/p>\n<h3 id=\"planning-the-payload-delivery\">Planning the payload delivery<\/h3>\n<p>Let\u2019s refer to the <a href=\"https:\/\/exiftool.org\/exiftool_pod.html\" target=\"_blank\" rel=\"noopener\">documentation<\/a> to understand how ExifTool handles tag operations and identify a legitimate feature that can be repurposed for exploitation. Specifically, we need to find a way to deliver our payload into the vulnerable FileCreateDate parameter. When looking for macOS-related tags as well as FileCreateDate, we can find the following information:<\/p>\n<ul>\n<li>To write or delete metadata, tag values are assigned using \u2013<em>TAG<\/em>=[<em>VALUE<\/em>], and\/or the\u00a0<code>-geotag<\/code>,\u00a0<code>-csv=<\/code> or\u00a0<code>-json=<\/code><\/li>\n<li>To copy or move metadata, the\u00a0<code>-tagsFromFile<\/code> feature is used.<\/li>\n<\/ul>\n<p>(You can find the useful info on tag operations above and how it relates under the hood in ExifTool in the <a href=\"https:\/\/exiftool.org\/exiftool_pod.html#Tag-operations\" target=\"_blank\" rel=\"noopener\">dedicated section of the documentation<\/a> and on the <a href=\"https:\/\/exiftool.org\/under.html\" target=\"_blank\" rel=\"noopener\">ExifTool description page<\/a>.)<\/p>\n<p>To trigger the vulnerability, we need to copy a string (date format: <code>MM\/DD\/YYYY<\/code>) using the <code>-tagsFromFile<\/code> feature, as this operation invokes the SetMacOSTags function where the unsanitized <code>$val<\/code> parameter reaches the <code>system()<\/code> sink.<\/p>\n<p>Why copy instead of writing directly? Because the vulnerable code path (<code>SetMacOSTags<\/code>) is only triggered when metadata is copied into <code>FileCreateDate<\/code> \u2014 not when it is written directly. By using <code>-tagsFromFile<\/code>, we can prepare a \u201csource\u201d tag (e.g., <code>DateTimeOriginal<\/code>) that accepts arbitrary values and copy that value into <code>FileCreateDate<\/code>, thereby invoking the vulnerable function with our controlled input.<\/p>\n<p>Furthermore, we want to introduce single quotes (since they are not being escaped in <code>$val<\/code>). For starters, we can look for date-time tag and copy via <code>-tagsFromFile<\/code> by searching the EXIF tag table. Direct assignment to <code>FileCreateDate<\/code> is heavily validated, so we looked for a source tag that accepts raw values and can be copied into the target field. The following snippet shows the beginning of said table.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119876\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7.png\" alt=\"\" width=\"902\" height=\"805\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7.png 902w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7-300x268.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7-768x685.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7-392x350.png 392w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7-740x660.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7-314x280.png 314w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161242\/exiftools7-800x714.png 800w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\"><\/a><\/p>\n<p>When doing the analysis, I made use of DateTimeOriginal though I believe you can also use CreateDate which is <code>0x9004<\/code> (see the following screenshot). Initial attempts to inject malformed dates failed: ExifTool\u2019s built-in filter rejected the input. To bypass this, we examined how the tool handles raw metadata.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161347\/exiftools8.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119877\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161347\/exiftools8.png\" alt=\"\" width=\"765\" height=\"596\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161347\/exiftools8.png 765w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161347\/exiftools8-300x234.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161347\/exiftools8-449x350.png 449w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161347\/exiftools8-740x577.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161347\/exiftools8-359x280.png 359w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\"><\/a><\/p>\n<h3 id=\"bypassing-the-filter\">Bypassing the filter<\/h3>\n<p>To confirm that the PrintConvInv filter rejects invalid dates when written directly, I ran the following command, where <code>evil_benign.jpg<\/code> is a normal JPG with an invalid date time format. We are greeted with the error message: <code>Invalid date\/time<\/code>. This requires the time as well. The next screenshot confirms that direct exploitation fails: ExifTool\u2019s date validation detects the malformed input and rejects the change, activating the internal <code>PrintConvInv<\/code> filter.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161421\/exiftools10.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119878\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161421\/exiftools10.png\" alt=\"\" width=\"804\" height=\"95\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161421\/exiftools10.png 804w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161421\/exiftools10-300x35.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161421\/exiftools10-768x91.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161421\/exiftools10-800x95.png 800w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161421\/exiftools10-740x87.png 740w\" sizes=\"auto, (max-width: 804px) 100vw, 804px\"><\/a><\/p>\n<p>That said, it is possible to ignore the formatting and use the <code>-n<\/code> flag which accepts raw values instead of human-readable value. \u00a0The <code>-n<\/code> flag skips the <code>PrintConvInv<\/code> conversion step, which is exactly where input sanitization occurs. This confirmed we could park unsanitized data in a source tag. The final step was to trigger the vulnerable code path by copying that data into <code>FileCreateDate<\/code>. This means we should now be able to modify the DateTimeOriginal tag with the invalid date time format with an <code>-n<\/code> flag. Examining the EXIF metadata tag, we can confirm that we can store a raw value without a proper human readable format that ExifTool accepts:<\/p>\n<h3 id=\"triggering-the-exploit\">Triggering the exploit<\/h3>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161735\/exiftools12.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119881\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161735\/exiftools12.png\" alt=\"\" width=\"492\" height=\"51\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161735\/exiftools12.png 492w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161735\/exiftools12-300x31.png 300w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\"><\/a><\/p>\n<p>To inject commands, we have to revisit the single quote injection into this datetime related tag.<\/p>\n<p>The following screenshot shows that we have successfully set the datetime metadata with the single quote. With the payload safely stored in a source tag, the next step was to copy it into <code>FileCreateDate<\/code>, triggering the vulnerable <code>system() call<\/code>.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161539\/exiftools14.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-119880\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161539\/exiftools14.png\" alt=\"\" width=\"903\" height=\"84\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161539\/exiftools14.png 903w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161539\/exiftools14-300x28.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161539\/exiftools14-768x71.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161539\/exiftools14-740x69.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161539\/exiftools14-800x74.png 800w\" sizes=\"auto, (max-width: 903px) 100vw, 903px\"><\/a><\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161808\/exiftools15.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119882\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161808\/exiftools15.png\" alt=\"\" width=\"518\" height=\"216\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161808\/exiftools15.png 518w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161808\/exiftools15-300x125.png 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\"><\/a><\/p>\n<p>The next step now is to copy the datetime tag to a file which invokes <code>SetMacOSTags<\/code>. According to the documentation, this is how we can copy the data from the SRC tag to the FileCreateDate tag as seen in the SetMacOSTags with the <code>-tagsFromFile<\/code> feature.<\/p>\n<pre class=\"urvanov-syntax-highlighter-plain-tag\">exiftool [_OPTIONS_] -tagsFromFile _SRCFILE_ [-[_DSTTAG_&lt;]_SRCTAG_...] _FILE_...<\/pre>\n<p>Therefore, we can craft our final command:<\/p>\n<pre class=\"urvanov-syntax-highlighter-plain-tag\">cp evil_benign.jpg pwn.jpg;\r\n..\/..\/exiftool -n -tagsFromFile evil_benign.jpg \"-FileCreateDate&lt;DateTimeOriginal\" pwn.jpg<\/pre>\n<p>Here, we confirm that the payload has been executed! Note that when copying tags in MacOS (Darwin), the <code>\/usr\/bin\/setfile<\/code> command is used. To view the full $cmd value before the injection, I have added the debugging statement to displaying the actual command that is executed within the system function.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119883\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16.png\" alt=\"\" width=\"907\" height=\"515\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16.png 907w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16-300x170.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16-768x436.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16-616x350.png 616w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16-740x420.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16-493x280.png 493w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161901\/exiftools16-800x454.png 800w\" sizes=\"auto, (max-width: 907px) 100vw, 907px\"><\/a><\/p>\n<p>Upon injection, we can see that our command gets executed via command substitution. The single quotes that we added helped to make the entire command syntactically valid. The following shows a more detailed labelling and their roles in making this command line injection successful:<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161926\/exiftools18.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-119884\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161926\/exiftools18.png\" alt=\"\" width=\"947\" height=\"118\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161926\/exiftools18.png 947w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161926\/exiftools18-300x37.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161926\/exiftools18-768x96.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161926\/exiftools18-740x92.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19161926\/exiftools18-800x100.png 800w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\"><\/a><\/p>\n<p>Such an image can appear completely benign and easily find its way into a newsroom or any organization that processes photos on macOS using ExifTool. Once processed, an attacker could silently deploy a Trojan for covert data exfiltration, drop additional malware, or use the compromised machine as a foothold to expand the attack within the victim\u2019s network.<\/p>\n<h2 id=\"patch-analysis\">Patch analysis<\/h2>\n<p>After verifying successful exploitation, we examined how the maintainer addressed the flaw in version 13.50. In the vulnerable version of ExifTool, commands were sanitized before being concatenated together. This means that it is possible to concatenate single quotes which led to the exploitation. However, by abstracting the system call into a dedicated wrapper and requiring a list of arguments instead of concatenated string, the fix removes the need for any manual escaping altogether.<\/p>\n<p>1. Replacing string form to argument list form:<\/p>\n<pre class=\"urvanov-syntax-highlighter-plain-tag\">#### BEFORE\r\n$cmd = \"\/usr\/bin\/setfile -d '${val}' '${f}'\";\r\nsystem $cmd;\r\n  \r\n#### AFTER\r\nsystem('\/usr\/bin\/setfile', '-d', $val, $file);<\/pre>\n<p>2. Create new <code>System()<\/code> wrapper. In version 13.49, the output is piped to <code>\/dev\/null<\/code> . To maintain that logic, the wrapper would temporarily redirect <code>STDOUT<\/code>\/<code>STDERR<\/code> to <code>\/dev\/null<\/code> and restore them after the call.<\/p>\n<pre class=\"urvanov-syntax-highlighter-plain-tag\"># Call system command, redirecting all I\/O to \/dev\/null\r\n# Inputs: system arguments\r\n# Returns: system return code\r\nsub System\r\n{\r\n    open(my $oldout, \"&gt;&amp;STDOUT\");\r\n    open(my $olderr, \"&gt;&amp;STDERR\");\r\n    open(STDOUT, '&gt;', '\/dev\/null');\r\n    open(STDERR, '&gt;', '\/dev\/null');\r\n    my $result = system(@_);\r\n    open(STDOUT, \"&gt;&amp;\", $oldout);\r\n    open(STDERR, \"&gt;&amp;\", $olderr);\r\n    return $result;\r\n}<\/pre>\n<\/p>\n<h2 id=\"how-to-protect-against-exiftool-vulnerability\">How to protect against ExifTool vulnerability<\/h2>\n<p>It\u2019s critical to ensure that all photo processing workflows are using the updated version. You should verify that all asset management platforms, photo organization apps, and any bulk image processing scripts running on Macs are calling ExifTool version 13.50 or later, and don\u2019t contain an embedded older copy of the ExifTool library.<\/p>\n<p>ExifTool, like any software, may contain additional vulnerabilities of this class. To harden defenses, I recommend using <a href=\"https:\/\/www.kaspersky.com\/open-source-feed?icid=gl_sl_open-source-feed-lnk_sm-team_9f2df07be7fe6194\">Kaspersky Open Source Software Threats Data Feed<\/a> for continuous monitoring of open-source components in your software supply chain, and <a href=\"https:\/\/www.kaspersky.com\/mac-antivirus?icid=gl_sl_mac-antivirus-lnk_sm-team_3544891285e6d3b1\">Kaspersky for macOS<\/a> as comprehensive endpoint protection. Additionally, isolate processing of untrusted files on dedicated machines or virtual environments with strictly limited network and storage access. If you work with freelancers, contractors, or allow BYOD, enforce a policy that only devices with an active macOS security solution can access your corporate network.<\/p>\n<h2 id=\"conclusions\">Conclusions<\/h2>\n<p>CVE-2026-3102 highlights the risks of inconsistent input sanitization in tools that bridge high-level metadata parsing with platform-specific utilities. While exploitation requires explicit flag usage (<code>-n<\/code>) and is restricted to macOS, the vulnerability underscores the danger of manual escaping routines in evolving codebases. The transition to list-form system execution provides a robust, architecture-level fix that eliminates shell interpretation risks entirely. This case reinforces a core security principle: replacing fragile string concatenation with secure, list-based API calls remains the most reliable mitigation against command injection.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction ExifTool is a widely adopted utility for reading and writing metadata in image, PDF, audio, and video files. It is available both as a standalone command-line application and as a library that can be embedded in other software. In this article, we break down CVE-2026-3102, an ExifTool vulnerability discovered by Kaspersky\u2019s Global Research and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[1159,1176,90,1177,248,221,258,684,241,759,760],"tags":[91],"class_list":["post-3223","post","type-post","status-publish","format-standard","hentry","category-apple-macos","category-archive","category-cybersecurity","category-exiftool","category-great-research","category-research","category-security-technologies","category-unix-and-macos-malware","category-vulnerabilities-and-exploits","category-vulnerability-reports","category-zero-day-vulnerabilities","tag-cybersecurity"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102) - Imperative Business Ventures Limited<\/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:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102) - Imperative Business Ventures Limited\" \/>\n<meta property=\"og:description\" content=\"Introduction ExifTool is a widely adopted utility for reading and writing metadata in image, PDF, audio, and video files. It is available both as a standalone command-line application and as a library that can be embedded in other software. In this article, we break down CVE-2026-3102, an ExifTool vulnerability discovered by Kaspersky\u2019s Global Research and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/\" \/>\n<meta property=\"og:site_name\" content=\"Imperative Business Ventures Limited\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-20T09:04:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02\"},\"headline\":\"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102)\",\"datePublished\":\"2026-05-20T09:04:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/\"},\"wordCount\":1669,\"image\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg\",\"keywords\":[\"Cybersecurity\"],\"articleSection\":[\"Apple MacOS\",\"Archive\",\"Cybersecurity\",\"ExifTool\",\"GReAT research\",\"Research\",\"Security technologies\",\"Unix and macOS malware\",\"Vulnerabilities and exploits\",\"Vulnerability reports\",\"Zero-day vulnerabilities\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/\",\"url\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/\",\"name\":\"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102) - Imperative Business Ventures Limited\",\"isPartOf\":{\"@id\":\"https:\/\/blog.ibvl.in\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg\",\"datePublished\":\"2026-05-20T09:04:36+00:00\",\"author\":{\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage\",\"url\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg\",\"contentUrl\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.ibvl.in\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.ibvl.in\/#website\",\"url\":\"https:\/\/blog.ibvl.in\/\",\"name\":\"Imperative Business Ventures Limited\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.ibvl.in\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/blog.ibvl.in\"],\"url\":\"https:\/\/blog.ibvl.in\/index.php\/author\/admin_hcbs9yw6\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102) - Imperative Business Ventures Limited","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:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/","og_locale":"en_US","og_type":"article","og_title":"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102) - Imperative Business Ventures Limited","og_description":"Introduction ExifTool is a widely adopted utility for reading and writing metadata in image, PDF, audio, and video files. It is available both as a standalone command-line application and as a library that can be embedded in other software. In this article, we break down CVE-2026-3102, an ExifTool vulnerability discovered by Kaspersky\u2019s Global Research and [&hellip;]","og_url":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/","og_site_name":"Imperative Business Ventures Limited","article_published_time":"2026-05-20T09:04:36+00:00","og_image":[{"url":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg","type":"","width":"","height":""}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#article","isPartOf":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/"},"author":{"name":"admin","@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02"},"headline":"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102)","datePublished":"2026-05-20T09:04:36+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/"},"wordCount":1669,"image":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage"},"thumbnailUrl":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg","keywords":["Cybersecurity"],"articleSection":["Apple MacOS","Archive","Cybersecurity","ExifTool","GReAT research","Research","Security technologies","Unix and macOS malware","Vulnerabilities and exploits","Vulnerability reports","Zero-day vulnerabilities"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/","url":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/","name":"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102) - Imperative Business Ventures Limited","isPartOf":{"@id":"https:\/\/blog.ibvl.in\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage"},"image":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage"},"thumbnailUrl":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg","datePublished":"2026-05-20T09:04:36+00:00","author":{"@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02"},"breadcrumb":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#primaryimage","url":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg","contentUrl":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2026\/05\/19160550\/exiftools-featured-990x400.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.ibvl.in\/index.php\/2026\/05\/20\/how-an-image-could-compromise-your-mac-understanding-an-exiftool-vulnerability-cve-2026-3102\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.ibvl.in\/"},{"@type":"ListItem","position":2,"name":"How an image could compromise your Mac: understanding an ExifTool vulnerability (CVE-2026-3102)"}]},{"@type":"WebSite","@id":"https:\/\/blog.ibvl.in\/#website","url":"https:\/\/blog.ibvl.in\/","name":"Imperative Business Ventures Limited","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.ibvl.in\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/blog.ibvl.in"],"url":"https:\/\/blog.ibvl.in\/index.php\/author\/admin_hcbs9yw6\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/posts\/3223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/comments?post=3223"}],"version-history":[{"count":0,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/posts\/3223\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/media?parent=3223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/categories?post=3223"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/tags?post=3223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}