The vulnerability is a Server-Side Request Forgery (SSRF) in the LMDeploy library, which allows an unauthenticated attacker to make the server issue requests to arbitrary URLs. The root cause is the lack of input validation on URLs provided for image loading.
The analysis of the provided patch in commit 71d64a339edb901e9005358e0633fbbab367d626 shows that the core vulnerability is in the _load_http_url function located in lmdeploy/vl/media/connection.py. This function was responsible for making the HTTP request via requests.get without ensuring the destination URL was not a private or internal address. The fix involves adding a new function, _is_safe_url, which performs this validation, and ensuring _load_http_url calls it before proceeding.
The vulnerability report explicitly identifies load_image in lmdeploy/vl/utils.py as the primary vulnerable function that takes the user-supplied URL. It also mentions encode_image_base64 as being affected. This indicates a call chain where encode_image_base64 may call load_image, which in turn leads to the call to the unsafe _load_http_url function. Therefore, all three functions would likely appear in a stack trace during an exploit and are considered part of the vulnerable functionality.