OSSN-0099: Denial of Service in Ironic under reduced process stack size

Summary

An unauthenticated malicious user could submit a specially crafted JSON string to certain endpoints on the API service or the JSON-RPC endpoint if enabled, and cause a service crash until the service is restarted. This was due to the memory allocation exceeding the stack size of the Python runtime due to Ironic’s reduced default stack size prior to the initial payload validation.

Affected Services / Software

ironic (>=32.0.0, <37.0.0)

Discussion

The Ironic project has introduced a customized size check middleware which looks for excessive and invalid recursive JSON data structures while also enforcing path awareness and endpoint size limits based upon the intended patterns of interaction with Ironic.

Contacts / References

Author: Jay Faulkner (GR-OSS), Julia Kreger (Red Hat)