# An Approach to Analyze Vulnerability of Information Flow in Software Architecture
## 3 Proposed Approach
### Vulnerability of Information Flow in Software Architecture
All services and interactions between services violating this principle are vulnerabilities of information flow in architecture under a confidentiality policy._  
This definition can be described based on a lattice as follows:  
For software architecture SA, there are confidentiality policy requirements. When \(\{L,\leq\}\), \(A,B\in L\), if there exists passing of information from A to B, then \(A\leq B\) holds; \begin{table}
\begin{tabular}{c c c c} \hline \hline
**Comparison** & **Point of View** & **Architecture-Level Vulnerability** & **Code-Level Vulnerability** \\ \hline \multirow{4}{*}{Difference} & Abstraction granularity & High & Low \\ \cline{2-4}  & Object to be analyzed & Software architecture & Source code or binary program \\ \cline{2-4}  & Focus & Components, interactions between components, topology resulting from interactions & \multirow{2}{*}{Lexical, syntactic, semantic} \\ \hline \multirow{2}{*}{Similarity} & \multirow{2}{*}{Manifestation form} & Flow and propagation of data, transition of states, passing of control power & \\  & & & \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Comparison of software architecture vulnerability with code-level vulnerability. If there exists \(a\in A\), \(b\in B\), and \(a\to b\), then \(a\to b\) is secure; If there exists \(a\in B\), \(b\in A\), and \(a\to b\), then \(\{a\to b\}\in Vsa\). **Definition 5**. : _Vulnerability of information flow in software architecture under integrity policies Information carried by the architecture is only being allowed to flow inside services of the same security level or from services of high security level to those of low security level. All services and interactions between services violating this principle are vulnerabilities of information flow in the architecture under integrity policy._  
This definition can be described based on lattice as follows:  
For software architecture SA, there are integrity policies requirement. When \(\{L,\geq\}\) and \(A,B\in L\), if there exists data passing from \(A\) to \(B\), then \(A\geq\ B\) holds; If there exists \(a\in A\), \(b\in B\), and \(a\to b\), then \(a\to b\) is secure; If there exists \(a\in B\), \(b\in A\), and \(a\to b\), then \(\{a\to b\}\in Vsa\)  
In the description above, SA represents the software architecture set, L represents the set of secure classes, \(\leq\) denotes the relationship between low and high secure classes, A and B are elements in L, a represent a service, \(a\in A\) means a is of security level A. \(\to\) denotes the direction of information flow between services, and \(V_{sa}\) represents software architecture vulnerability. To explain Definitions 4 and 5, Figures 2 and 3 are presented. In Figure 2, we can see that the architecture is composed of service 1 to service 5. The rectangular boxes represent services. The color represents the security level of each service, in which blue represents low security level while yellow represents high security level. The boxes with the same color represent services with the same security level. The symbol \"\(\to\)\" represents the interaction between services and the direction of data flow. In Figure 2, the part inside the red box is the vulnerability of information flow in software architecture under confidentiality policies. Figure 3: Graphic example of Definition 5. Figure 2: Graphic example of Definition 4. Similarly, in Figure 3, we can see that the architecture is composed of service 1 to service 5. The rectangular boxes represent services. The color represents the security level of each service, in which pink represents high security level while green represents low security level. The boxes with the same color represent services with the same security level. The symbol \"\(\rightarrow\)\" represents the interaction between services and the direction of data flow. In Figure 3, the part inside the red box is the vulnerability of information flow in software architecture under integrity policies.