Poporo: Bridging the Gap Between Code and Social Network Privacy Policies
Poporo: A Formal Methods Tool for Fast-Checking of Social Network Privacy Policies
Poporo is a formal methods tool designed to verify if third-party Java applications adhere to Social Networking Site (SNS) privacy policies. It leverages the Matelas B-method model, JML (Java Modeling Language), and the Yices SMT solver to automate the detection of privacy breaches through weakest-precondition calculus.
TL;DR
Poporo is a specialized formal verification tool that ensures third-party applications don't leak private data in social networks. By translating Java code into logical formulas (Verification Conditions) and solving them with the Yices SMT solver, it provides a mathematical guarantee that an app won't violate a user's sharing preferences.
Background Positioning: This work sits at the intersection of Software Engineering (Formal Methods) and Information Security. It evolves the "Matelas" model into a practical pipeline using JML (Java Modeling Language).
Problem & Motivation
In the era of "Smart" everything, third-party developers build features on top of platforms (like Facebook or LinkedIn). The core risk is Non-Adherence: an app might have permissions to "post photos," but it might accidentally (or maliciously) send a photo to a user's "Superior" when the user only intended to share it with "Colleagues."
Existing access control languages like XACML are often too rigid for the fluid relationships in social networks. The authors realized that to truly protect users, we need to treat privacy policies as formal invariants that must never be broken by the program's logic.
Methodology: The Formal Pipeline
The genius of Poporo lies in its rigorous translation stack. It doesn't just "check" code; it transforms code into a mathematical proof.
1. The Architecture
The tool follows a multi-step process:
- Matelas (B Model): Defines the "physics" of the social network (what is a friend? what is content?).
- JML Layer: Converts those abstract rules into Java "contracts" (Pre-conditions and Post-conditions).
- VCGen (OCaml): Takes the third-party Java code, converts it to OCaml, and calculates the Weakest Precondition (WP)—the minimum requirements needed for the program to behave safely.

2. Logic Mapping
When an app calls a function like transmit_rc(rc, ow, pe) (transmit raw content), Poporo checks if the recipient pe satisfies the user's specific policy. In Yices notation, this looks like a lambda expression checking membership in specific sets (e.g., the colleagues set minus the superior set).
Experimental Validation
The researchers demonstrated Poporo with a practical "Running Example." They simulated a Java class where an owner (ow) creates code, uploads a picture, and tries to transmit it.
By defining a policy in Yices:
lisp (implication (jmlrel-is-member visible (mk-tuple rc pe)) (jmlset-is-member (jmlset-diff colleagues superior) pe))
The SMT solver can instantly flag if the program's path could lead to a state where pe is a superior, thereby failing the verification.

Critical Analysis & Conclusion
Takeaway
Poporo proves that formal methods are not just for NASA-grade aerospace software. They can be applied to the messiness of social media privacy. By using SMT solvers, the tool moves away from "guessing" if an app is safe toward "knowing" it is safe based on the logic of the code itself.
Limitations & Future Work
- Loop Support: Currently, the tool handles basic control flow but lacks full support for Java loops, which are notoriously difficult for WP calculus.
- Static Nature: It checks the source code. If an app uses dynamic code loading or obfuscation, the static analysis might be bypassed.
- Outlook: The researchers aim to support JML libraries to allow users to define "on-the-fly" policies, making the tool adaptable to changing social dynamics.
Final Thought: Poporo represents a shift toward "Safety-by-Design" for the social web, ensuring our digital boundaries are enforced by math, not just promises.
