Skip to content
Success

#28008 (Apr 16, 2026, 9:09:23 AM)

Started 8 hr 34 min ago
Took 6.3 sec on build4-deb12build-ansible

Started by upstream project gerrit-pysim build number 3057
originally caused by:

This run spent:

  • 6.1 sec waiting;
  • 6.3 sec build duration;
  • 12 sec total from scheduled to completion.
Revision: 816b31eb07ec975275a03fa0f521d228d44ac6f4
Repository: $GERRIT_REPO_URL
  • master
pySim-prog: fix Insecure PRNG for SIM Authentication Keys (CWE-338)

Root Cause:
pySim-prog.py uses Python's random module (Mersenne Twister MT19937) to
generate Ki and OPC — the root authentication keys for SIM cards. MT19937
is a deterministic PRNG that is not cryptographically secure. Its internal
state (624 × 32-bit words, 19,937 bits) can be fully recovered after
observing 624 consecutive outputs.

Impact:
1. SIM Card Cloning: An attacker who determines the PRNG state can predict
all Ki/OPC values generated before and after. With these keys, SIM cards
can be cloned.
2. Network Authentication Bypass: Ki/OPC are used in the Milenage algorithm
for 3G/4G/5G authentication. Predictable keys mean an attacker can
authenticate as any subscriber whose SIM was provisioned with the weak RNG.
3. Batch Compromise: In bulk provisioning scenarios (pySim-prog's primary
use case), hundreds or thousands of SIMs may be programmed sequentially.
Compromising one batch means recovering the PRNG state to predict all keys.

Fix:
Replace random.randrange() with os.urandom()

Change-Id: Id3e00d3ec5386f17c1525cacfc7d3f5bba43381f
pmaier@sysmocom.de at