Here, you can try this.
Start with a torus object such as this (this is just the geometry/subdiv level I used, you can use as much or as little as you need, however I will decimate later):
The rest will be done with a shader such as this, almost completely generated from noise textures:
I started with a rather large (scaled down) Noise Texture, stretched by 2 on the X to make it more realistic (default looked stretched).
Then I made the little "micro holes" you mentioned by using a small (scaled up) Noise Texture, with a rather high detail level to give the most variance ( of cavity shape). I then used a ColorRamp to clamp alot of the values, so the holes don't "take over" the whole object.
NOTE - throughout the graph, you will see me mix the noise values with pure white using MixRGB nodes. This is because often the default "strength" (more related to contrast) of noise textures looks too strong when put through a bump node, and I don't feel the strength value of the Bump Node gives me the proper "control" over these strengths. Therefore, I control them by mixing them with pure white (often quite heavily).
I felt the large overall warp was lacking something, so I mixed it with yet another large Noise Texture, this one with a bit more detail.
I then mixed (multiplied) these values together, and used the result as the basis for both a Bump Node and an Ambient Occlusion node. I also used one of the large Noise Textures as a mix factor for a couple of "cereal colors. I then multiplied the cereal colors by the Ambient Occlusion values to make the distortion "stand out". I also used the colors by themselves as a small subsurface color contribution, to give a bit of that cereal "see-through corn glow" look.
Note - you can use stronger values for the Ambient Occlusion or a stronger mix factor than I did - this result looks rather subtle, I know, but I go on to use this as part of a particle system, and as particles, the detail stands out more. Change the values to your taste, but do it once the particles are made.
To make the mesh more conducive to being a part of a particle system, I used a decimate modifier. You can do this any way you like, or just start with "smarter" geometry than I did.
I then made a bowl and a plane with some "milk" and gave the plane a particle system. I also gave the "milk" a subsurface value to show the "immersed" cereal better. Make sure that Ambient Occlusion is checked in the render properties.
Here's the result zoomed in quite close: