Problem: wp_query outputs all images on site

Your issue is the post_parent parameter, if this is set to 0 or a falsey value like null your query will return all top level posts.

So you just have to make sure $rental->post->ID has a value, or use a different approach like the get_the_ID() function.

Can’t really tell you more than that as you have not included the part where you set $rental

$image_query = new WP_Query( 
    array(
        'post_type' => 'attachment',
        'post_status' => 'inherit',
        'posts_per_page' => -1,
        'post_parent' => get_the_ID(), // your issue here lays
    )
);

And check out the docs for more details:
https://developer.wordpress.org/reference/classes/wp_query/#post-page-parameters