It is acceptable. You can then use constraints to ensure that the chosen AttributeDescription belongs to the chosen Attribute:
create table AttributeDescription
( id ... primary key
, description ...
, attributeId ...
, UNIQUE (attribute_id, id)
);
create table ProductAttributes
( productId references Product(id)
, attributeId references Attribute(id)
, attributeDescriptionId ...
, FOREIGN KEY (attributeID, attributeDescriptionId) REFERENCES AttributeDescription (attribute_id, id)
);
(BTW, I would say this model is veering ominously towards the egregious
EAV model!)