microsoft/onnxruntime v1.28.0
microsoft/onnxruntime
Captured source
source ↗published Jul 25, 2026seen 1dcaptured 1dhttp 200method plain
ONNX Runtime v1.28.0
Repository: microsoft/onnxruntime
Tag: v1.28.0
Published: 2026-07-25T05:27:07Z
Prerelease: no
Release notes:
Announcements & Breaking Changes
- Upgraded to ONNX 1.22.0 and protobuf 6.33.5 (#28754, #29606, #28967). Graph optimizer opset version checks were updated accordingly (#28966).
- cuDNN and cuFFT are now optional at runtime for the CUDA EP, and
nvrtcis no longer linked, which significantly reduces the required CUDA redistributable footprint (#29252, #29808, #29705, #29620). - An experimental C/C++ API surface was introduced.
OrtModelPackageApinow lives in the experimental C API and may change in future releases (#28746, #29142, #28990). - Deprecated / removed:
- SkipLayerNorm strict mode is deprecated (#29388).
- The TensorRT fused causal attention kernels were removed from the CUDA EP (#29143).
- The dynamic WGSL generator (duktape/Node) path was removed in favor of the Python
wgsl-genimplementation (#29141, #28355). CUDA_QUANT_PREPROCESSis off by default (#29687).- NPM packages are now published from the CUDA 13 pipeline (#28773).
- The CUDA 12.8 package architecture list was refreshed for this release (#29711).
Security Fixes
Memory safety & input validation
- Hardened the ORT FlatBuffer model loader against malformed buffers, and removed now-redundant table offset validation (#28186, #29068)
- Fixed type confusion in raw-pointer
bind_inputcausing an out-of-bounds write (#28839) - Fixed out-of-bounds pointer in
TensorAtfor sub-byte packed types (#28973) - Fixed arbitrary memory read, out-of-bounds dereference, and other OOB accesses in kernels (#28991, #29011, #29012, #29014)
- Validated
Col2Iminputs to prevent heap over-read (#28706) - Hardened
CropAndResizeagainst malformedcrop_sizetensors (#28766) - Validated
BeamSearchvocab_sizeagainst logits width (#28774) - Fixed bounds in
WhisperDecoderSubgraph::CreateInitialFeeds(#29239) - Validated
SparseAttentionCSR indices/key lengths and rejected zero-dimensionblock_row_indices(#29015, #29242) - Clamped derived sequence lengths and KV-cache index in CUDA GroupQueryAttention, and fixed a CPU GQA out-of-bounds read in the past-KV buffer (#29240, #29447)
- Clamped 1D attention
mask_indexto valid bounds (#29449) - Validated
MaxpoolWithMaskkernel rank against input spatial rank (#29253) - Rejected CUDA BERT
EmbedLayerNorm/SkipLayerNormshapes exceeding 32-bit output indexing (#29264) - Fixed the optional-output guard in
DecoderAttention/MultiHeadAttentionshape inference and negative-axis handling inExpandDimsshape inference (#29268, #29448) - Fixed
TreeEnsembletarget id validation and added input validation toLinearClassifier(#29293, #29060) - Fixed
DynamicQuantizeLSTMzero-point/scale validation typos (#29462) - Handled non-trivially-copyable types in
Loop/Scanoutput concatenation (#29397) - Normalized bool tensor
raw_datato{0, 1}on unpack (#29238) - Addressed hardening gaps in
Resize,PadFusion, and LoRA handling (#28779, #28780, #28801) - Fixed unbounded lifetime on
WithOutputTensorin the Rust bindings (#29251)
Integer overflow & allocation size
- Guarded
MlasConvPrepareworking-buffer products andConvTransposepad computation with SafeInt (#29444, #29446) - Fixed signed-int overflow in
SamplingState::Initthat could cause a heap buffer overflow (#29443) - Hardened QMoE against integer overflow and partial K tiles (#29067)
- Validated
B/scales/zero-points shape inMatMulNBits::PrePack(#29445)
-...
Excerpt shown — open the source for the full document.