<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>5</buildableDurationMillis><buildableTimeMillis>5</buildableTimeMillis><buildingDurationMillis>470153</buildingDurationMillis><executingTimeMillis>470153</executingTimeMillis><executorUtilization>1.0</executorUtilization><queuingDurationMillis>493</queuingDurationMillis><queuingTimeMillis>493</queuingTimeMillis><subTaskCount>0</subTaskCount><totalDurationMillis>470646</totalDurationMillis><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>567</buildNumber><marked><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><branch><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><name>origin/master</name></branch></marked><revision><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><branch><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>5</buildNumber><marked><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><branch><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><branch><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>253</buildNumber><marked><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><branch><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><branch><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><branch><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://jenkins.osmocom.org/jenkins/view/all/job/simtester-sanitize/567/artifact</artifactsUrl><changesUrl>https://jenkins.osmocom.org/jenkins/view/all/job/simtester-sanitize/changes</changesUrl><displayUrl>https://jenkins.osmocom.org/jenkins/view/all/job/simtester-sanitize/567/</displayUrl><testsUrl>https://jenkins.osmocom.org/jenkins/view/all/job/simtester-sanitize/567/testReport</testsUrl></action><building>false</building><displayName>#567</displayName><duration>470153</duration><estimatedDuration>470201</estimatedDuration><fullDisplayName>simtester-sanitize #567</fullDisplayName><id>567</id><inProgress>false</inProgress><keepLog>false</keepLog><number>567</number><queueId>90486</queueId><result>SUCCESS</result><timestamp>1776386581670</timestamp><url>https://jenkins.osmocom.org/jenkins/view/all/job/simtester-sanitize/567/</url><builtOn>simtester</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim-prog.py</affectedPath><commitId>816b31eb07ec975275a03fa0f521d228d44ac6f4</commitId><timestamp>1776253811000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>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
</comment><date>2026-04-15 13:50:11 +0200</date><id>816b31eb07ec975275a03fa0f521d228d44ac6f4</id><msg>pySim-prog: fix Insecure PRNG for SIM Authentication Keys (CWE-338)</msg><path><editType>edit</editType><file>pySim-prog.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><description></description><fullName>pmaier@sysmocom.de</fullName><id>pmaier</id></culprit></freeStyleBuild>