{"id":"GO-2026-5051","aliases":[],"status":"published","title":"Out-of-bounds read and panic in ReadDir in github.com/cloudsoda/go-smb2 and github.com/hirochachacha/go-smb2","description":"ReadDir and ReadDirPlus parse the QUERY_DIRECTORY SMB response by advancing through entries using the server-supplied NextEntryOffset field. The pre-fix code does not bound next against the remaining buffer before re-slicing, and the entry decoder IsInvalid check performs length arithmetic in int after narrowing from uint16.\n\nA guest or anonymous directory listing against an attacker-controlled or man-in-the-middle SMB server crashes the Go client process with a runtime panic when the response contains an entry whose NextEntryOffset is larger than the remaining buffer, or whose declared FileNameLength produces a length that does not match the actual buffer size.","facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"published":"2026-07-27T16:16:22Z","modified":"2026-07-27T17:00:19Z","fixes":[{"ecosystem":"Go","package":"github.com/cloudsoda/go-smb2","fixed_in":["0.0.0-20260609183447-7b96c35f5f4b"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Go","package":"github.com/cloudsoda/go-smb2","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.0.0-20260609183447-7b96c35f5f4b"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/hirochachacha/go-smb2","ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}]}],"references":[{"url":"https://github.com/cloudsoda/go-smb2/commit/7b96c35f5f4babfc9d68a60baf5e85f2303d4a4b","tags":["fix"]},{"url":"https://github.com/golang/vulndb/issues/5051","tags":["report"]}],"sources":{"osv":[{"id":"GO-2026-5051","title":"Out-of-bounds read and panic in ReadDir in github.com/cloudsoda/go-smb2 and github.com/hirochachacha/go-smb2","description":"ReadDir and ReadDirPlus parse the QUERY_DIRECTORY SMB response by advancing through entries using the server-supplied NextEntryOffset field. The pre-fix code does not bound next against the remaining buffer before re-slicing, and the entry decoder IsInvalid check performs length arithmetic in int after narrowing from uint16.\n\nA guest or anonymous directory listing against an attacker-controlled or man-in-the-middle SMB server crashes the Go client process with a runtime panic when the response contains an entry whose NextEntryOffset is larger than the remaining buffer, or whose declared FileNameLength produces a length that does not match the actual buffer size.","status":"published","published":"2026-07-27T16:16:22Z","modified":"2026-07-27T17:00:19.805577842Z","updated_at":"2026-11-02T15:47:02.280725Z"}]}}
