IBM Qiskit Quantum SDK Hizmet Reddi Güvenlik Açığı
CVE-2025-1403, uzak saldırganların kötü amaçlı QPY dosyalarını istismar ederek hizmet reddi (DoS) oluşturmasına olanak tanıyan açık kaynaklı bir kuantum hesaplama çerçevesi olan Qiskit SDK'da yüksek öneme sahip bir güvenlik açığıdır. Bu güvenlik açığı, özellikle symengine 0.13.0 veya daha düşük bir sürüm yüklüyse, QPY biçimli sürüm 10, 11 ve 12 kullanıldığında öncelikle 1.3.0'dan önceki Qiskit sürümlerini etkiler. (21/02/2025)
Qiskit, kuantum algoritmalarının oluşturulmasını ve yürütülmesini kolaylaştırmak, kuantum donanımında kuantum devresi oluşturma, simülasyon ve yürütme için araçlar sağlamak üzere tasarlanmıştır. Kuantum programlarını depolamak için kullanılan QPY dahil olmak üzere çeşitli serileştirme biçimlerini destekler. Ancak, Qiskit'in belirli QPY dosyalarını, özellikle de kötü biçimlendirilmiş symengine serileştirme akışları içerenleri nasıl işlediği konusunda bir güvenlik açığı vardır.
Güvenlik açığı, Qiskit'in kötü biçimlendirilmiş symengine serileştirme akışları içeren QPY dosyalarını serileştirme biçiminden kaynaklanır. Böyle bir dosya serileştirildiğinde, symengine kitaplığında bir segmentasyon hatasına neden olabilir ve barındırma işlemini sonlandırarak hizmet reddi durumuna yol açabilir. Bu sorun, uzak saldırganların Qiskit'in güvenlik açığı olan sürümlerini kullanan sistemlerin çalışmasını bozabilecek kötü amaçlı QPY dosyaları oluşturmasına olanak tanıdığı için özellikle sorunludur.
: 0.45.0'dan 1.2.4'e kadar olan sürümler etkilenmiştir.
: 10, 11 ve 12 sürümleri symengine sembolik kodlamasını kullanıyorsa güvenlik açığına sahiptir.
: 0.13.0 ve altı sürümler etkileniyor.
Bu güvenlik açığının etkisi önemlidir, çünkü hizmet reddi durumuna yol açabilir. Bu, bir saldırganın güvenlik açığını kullanarak sistemin kullanılamaz hale gelmesine neden olabileceği anlamına gelir, bu da güvenilirliğin ve çalışma süresinin kritik olduğu ortamlarda ciddi sonuçlar doğurabilir.
CVE-2025-1403 için CVSS puanı 7,3'tür ve YÜKSEK olarak sınıflandırılmıştır. Bu, güvenlik açığının önemli bir risk oluşturduğunu ve derhal ele alınması gerektiğini gösterir.
Bir araştırmacının Qiskit kullanarak bir kuantum hesaplama projesi üzerinde çalıştığı bir senaryoyu düşünün. Bir meslektaşından bir QPY dosyası alır veya güvenilmeyen bir kaynaktan indirir. Bu dosya kötü niyetli bir şekilde CVE-2025-1403'ü istismar edecek şekilde tasarlanmışsa, seri durumdan çıkarılması araştırmacının sisteminin çökmesine neden olabilir, bu da iş kaybına ve potansiyel olarak kritik araştırma zaman çizelgelerinin bozulmasına yol açabilir.
Bu güvenlik açığını azaltmak için kullanıcılara şunlar önerilir:
: QPY format sürüm 13'ü kullanan ve bu soruna karşı savunmasız olmayan Qiskit sürüm 1.3.0 veya daha sonraki bir sürüme yükseltin. Bu, komutu kullanarak yapılabilir
pip install --upgrade qiskit
.: Yerel olarak yüklenen symengine sürümünü, segfault'u önleyen belirli bir commit uygulayarak yamalamayı düşünün. Ancak, segfault sorununu düzelten symengine 0.14.0 sürümünün geriye dönük uyumsuz olduğunu ve herhangi bir Qiskit sürümüyle çalışmayacağını unutmayın.
: Potansiyel olarak savunmasız QPY dosyalarının seri hale getirilmesini önlemek için bir kontrol uygulayın. Bir QPY yükünün sürümüne ve sembolik kodlamasına göre potansiyel olarak savunmasız olup olmadığını belirlemek için bir Python işlevi sağlanır.
pythonimport struct from collections import namedtuple def check_qpy_payload(path: str) -> bool: """Function to check if a QPY payload is potentially vulnerable to a symengine vulnerability.""" with open(path, "rb") as file_obj: version = struct.unpack("!6sB", file_obj.read(7)) if version[1] < 10 or version[1] >= 13: return False file_obj.seek(0) header_tuple = namedtuple( "FILE_HEADER", [ "preface", "qpy_version", "major_version", "minor_version", "patch_version", "num_programs", "symbolic_encoding", ], ) header_pack_str = "!6sBBBBQc" header_read_size = struct.calcsize(header_pack_str) data = struct.unpack(header_pack_str, file_obj.read(header_read_size)) header = header_tuple(*data) return header.symbolic_encoding == b"e"
Bu işlev, savunmasız olup olmadığını belirlemek için QPY dosya sürümünü ve sembolik kodlamayı kontrol eder. Ancak, yükün kötü amaçlı olduğunu garanti etmez; yalnızca bir savunmasızlığa yol açabilecek koşulları belirler.
Çözüm
CVE-2025-1403, Qiskit'in savunmasız sürümlerini kullanan sistemler için önemli bir risk oluşturmaktadır. Qiskit'i güncellemek ve olası hizmet reddi saldırılarını önlemek için symengine'i yamalamayı düşünmek için acil eylem gereklidir. Olası savunmasız QPY dosyaları için denetimler uygulamak da bu riski azaltmaya yardımcı olabilir.