Description
The product violates the Enterprise JavaBeans (EJB) specification by using thread synchronization primitives.
The Enterprise JavaBeans specification requires that every bean provider follow a set of programming guidelines designed to ensure that the bean will be portable and behave consistently in any EJB container. In this case, the product violates the following EJB guideline: "An enterprise bean must not use thread synchronization primitives to synchronize execution of multiple instances." The specification justifies this requirement in the following way: "This rule is required to ensure consistent runtime semantics because while some EJB containers may use a single JVM to execute all enterprise bean's instances, others may distribute the instances across multiple JVMs."
Potential Impact
Other
Quality Degradation
Demonstrative Examples
@Entitypublic class Customer implements Serializable {
private String id;private String firstName;private String lastName;private Address address;
public Customer() {...}
public Customer(String id, String firstName, String lastName) {...}
@Idpublic String getCustomerId() {...}
public synchronized void setCustomerId(String id) {...}
public String getFirstName() {...}
public synchronized void setFirstName(String firstName) {...}
public String getLastName() {...}
public synchronized void setLastName(String lastName) {...}
@OneToOne()public Address getAddress() {...}
public synchronized void setAddress(Address address) {...}
}Mitigations & Prevention
Do not use Synchronization Primitives when writing EJBs.
Related Weaknesses
Taxonomy Mappings
- Software Fault Patterns: SFP3 — Use of an improper API
Frequently Asked Questions
What is CWE-574?
CWE-574 (EJB Bad Practices: Use of Synchronization Primitives) is a software weakness identified by MITRE's Common Weakness Enumeration. It is classified as a Variant-level weakness. The product violates the Enterprise JavaBeans (EJB) specification by using thread synchronization primitives.
How can CWE-574 be exploited?
Attackers can exploit CWE-574 (EJB Bad Practices: Use of Synchronization Primitives) to quality degradation. This weakness is typically introduced during the Implementation phase of software development.
How do I prevent CWE-574?
Key mitigations include: Do not use Synchronization Primitives when writing EJBs.
What is the severity of CWE-574?
CWE-574 is classified as a Variant-level weakness (Low-Medium abstraction). Its actual severity depends on the specific context and how the weakness manifests in your application.