The repository presents the code for the paper "CellularLint: A Systematic Approach to Identify Inconsistent Behavior in Cellular Network Specifications", published at the 33rd USENIX Security Symposium (2024).
CellularLint was successfully run with the following hardware-
- CPU: AMD Ryzen Threadripper PRO 5965WX (24 core, 3.8 GHz)
- GPU: Nvidia RTX 3090 (24GB)
- Memory: 64GB.
- Additionally, we recommend 50 GB of available disk space. However, it may work with less.
- CellularLint can be successfully run on Ubuntu 20.04 LTS and using python3. It should also run on Ubuntu 22.04 LTS and later stable versions.
Please follow these steps to set up the environment-
(For all the steps, we assume the current directory is: cellularlint-codes
)
- Download the pretrained models from Zenodo and place them under the
Pretrained Models/
directory. - Download the SNLI Train Dataset from Zenodo and place it under the
Data/SNLI/
directory. The validation and test datasets are already there. - Run
chmod 700 unpack.sh
followed by./unpack.sh
to unpack the pretrained models in the correct way. - Run
pip install -r requirements.txt
to install the required packages. (Note: The requirements were generated usingpip freeze
and modified manually to consider only the required packages. If a package is missing or runs into a problem, you may remove the specific version number, and it should still work.)
-
The following experiment is to generate figures similar to Figure 3 and Figure 4 of the paper.
From the main directory, run-
python3 tokenizer_and_sim_matrix.py 4G
andpython3 tokenizer_and_sim_matrix.py 5G
for 4G and 5G datasets, respectively. Each of these should generate one PDF and one PNG formatted image file (Thus, in total, 4 files are generated) in the main directory. The generated files are-- 4G_embedding_times.png,
- heatmap_4G.pdf,
- 5G_embedding_times.png, and
- heatmap_5G.pdf.
The PDF files can be compared to Figure 3 of the paper, and PNG files can be compared to Figure 4 of the paper.
-
The following experiment is to generate the models' performance metrics.
Follow these instructions to train and use the language models-
-
Run the notebooks sequentially in the following order. (If you are using Jupyter GUI, you may do
Kernel
>Restart & Run All
for each of them)-- train_bert.ipynb,
- train_roberta.ipynb,
- train_xlnet.ipynb,
- phase_train_bert.ipynb,
- phase_train_roberta.ipynb, and
- phase_train_xlnet.ipynb
-
From the
eval/
directory, runpython3 -W ignore eval.py
. It should generate the metrics (Seeoutput_metrics.txt
in the same directory) like Table 1 (one phase) of the paper.
-
If you use the code or dataset used here, please cite our paper:
@inproceedings {298168,
author = {Mirza Masfiqur Rahman and Imtiaz Karim and Elisa Bertino},
title = {{CellularLint}: A Systematic Approach to Identify Inconsistent Behavior in Cellular Network Specifications},
booktitle = {33rd USENIX Security Symposium (USENIX Security 24)},
year = {2024},
isbn = {978-1-939133-44-1},
address = {Philadelphia, PA},
pages = {5215--5232},
url = {https://www.usenix.org/conference/usenixsecurity24/presentation/rahman},
publisher = {USENIX Association},
month = aug
}