Index: /trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunMmc.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunMmc.cpp	(revision 46596)
+++ /trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunMmc.cpp	(revision 46597)
@@ -262,4 +262,5 @@
             uint8_t aReply[24];
             uint8_t *pu8ReplyPos;
+            bool    fValid = false;
 
             memset(aReply, 0, sizeof(aReply));
@@ -277,8 +278,16 @@
                 *pu8ReplyPos++ = 0x12; /* Size of the page. */
                 *pu8ReplyPos++ = 0x4;  /* Write cache enabled. */
-            }
-
-            RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
-            rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
+                fValid = true;
+            } else if (uModePage == 0) {
+                fValid = true;
+            }
+
+            /* Querying unknown pages must fail. */
+            if (fValid) {
+                RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
+                rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
+            } else {
+                rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00);
+            }
             break;
         }
Index: /trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunSbc.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunSbc.cpp	(revision 46596)
+++ /trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunSbc.cpp	(revision 46597)
@@ -256,4 +256,5 @@
             uint8_t aReply[24];
             uint8_t *pu8ReplyPos;
+            bool    fValid = false;
 
             memset(aReply, 0, sizeof(aReply));
@@ -274,8 +275,16 @@
                 *pu8ReplyPos++ = 0x12; /* Size of the page. */
                 *pu8ReplyPos++ = 0x4;  /* Write cache enabled. */
-            }
-
-            RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
-            rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
+                fValid = true;
+            } else if (uModePage == 0) {
+                fValid = 0;
+            }
+
+            /* Querying unknown pages must fail. */
+            if (fValid) {
+                RTSgBufCopyFromBuf(&pVScsiReq->SgBuf, aReply, sizeof(aReply));
+                rcReq = vscsiLunReqSenseOkSet(pVScsiLun, pVScsiReq);
+            } else {
+                rcReq = vscsiLunReqSenseErrorSet(pVScsiLun, pVScsiReq, SCSI_SENSE_ILLEGAL_REQUEST, SCSI_ASC_INV_FIELD_IN_CMD_PACKET, 0x00);
+            }
             break;
         }
