diff --git a/jerry-core/ecma/operations/ecma-objects.c b/jerry-core/ecma/operations/ecma-objects.c
index 75d4481c5..d1dbadc4d 100644
--- a/jerry-core/ecma/operations/ecma-objects.c
+++ b/jerry-core/ecma/operations/ecma-objects.c
@@ -1083,7 +1083,14 @@ ecma_op_object_put_apply_receiver (ecma_value_t receiver, /**< receiver */
if (ECMA_OBJECT_IS_PROXY (receiver_obj_p))
{
ecma_property_descriptor_t desc;
- desc.flags = ECMA_NAME_DATA_PROPERTY_DESCRIPTOR_BITS;
+ /* Based on: ES6 9.1.9 [[Set]] 4.d.i. / ES11 9.1.9.2 OrdinarySetWithOwnDescriptor 2.c.i. */
+ desc.flags = (ECMA_PROP_IS_CONFIGURABLE
+ | ECMA_PROP_IS_CONFIGURABLE_DEFINED
+ | ECMA_PROP_IS_ENUMERABLE
+ | ECMA_PROP_IS_ENUMERABLE_DEFINED
+ | ECMA_PROP_IS_WRITABLE
+ | ECMA_PROP_IS_WRITABLE_DEFINED
+ | ECMA_PROP_IS_VALUE_DEFINED);
desc.value = value;
return ecma_proxy_object_define_own_property (receiver_obj_p, property_name_p, &desc);
}
diff --git a/tests/jerry/es.next/proxy_set.js b/tests/jerry/es.next/proxy_set.js
index 96183344a..f93d05888 100644
--- a/tests/jerry/es.next/proxy_set.js
+++ b/tests/jerry/es.next/proxy_set.js
@@ -138,3 +138,16 @@ try {
} catch (e) {
assert(e instanceof TypeError);
}
+
+/* Setting a new property should be configurable, enumerable, and writable by default
+ * over a proxy.
+ */
+var setPropProxy = new Proxy({}, {});
+setPropProxy["alma"] = 3;
+
+var desc = Object.getOwnPropertyDescriptor(setPropProxy, "alma");
+
+assert(desc.writable === true);
+assert(desc.enumerable === true);
+assert(desc.configurable === true);
+assert(desc.value === 3);
diff --git a/tests/test262-esnext-excludelist.xml b/tests/test262-esnext-excludelist.xml
index 4294e36a6..a546c8701 100644
--- a/tests/test262-esnext-excludelist.xml
+++ b/tests/test262-esnext-excludelist.xml
@@ -822,7 +822,6 @@
-
@@ -995,8 +994,6 @@
-
-