<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,059</shortDescription><upstreamBuild>3059</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42625</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/25/42625/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3059/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1985904</blockedDurationMillis><blockedTimeMillis>1985904</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>986686</buildingDurationMillis><executingTimeMillis>986686</executingTimeMillis><executorUtilization>1.0</executorUtilization><queuingDurationMillis>1991519</queuingDurationMillis><queuingTimeMillis>1991519</queuingTimeMillis><subTaskCount>0</subTaskCount><totalDurationMillis>2978205</totalDurationMillis><waitingDurationMillis>5607</waitingDurationMillis><waitingTimeMillis>5607</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3052</buildNumber><marked><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></marked><revision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/3052/artifact</artifactsUrl><changesUrl>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/changes</changesUrl><displayUrl>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/3052/</displayUrl><testsUrl>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/3052/testReport</testsUrl></action><building>false</building><displayName>#3052</displayName><duration>986686</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3052</fullDisplayName><id>3052</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3052</number><queueId>89966</queueId><result>SUCCESS</result><timestamp>1776332547781</timestamp><url>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/3052/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>osmo-smdpp.py</affectedPath><commitId>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</commitId><timestamp>1776254248000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)

Root Cause:
os.path.commonprefix() compares strings character-by-character, NOT by path
components. This is a well-known Python antipattern (Python docs explicitly
warn: "this function may return invalid paths because it works a character
at a time").

Attack Context:
The matchingId parameter is received from a network client via the GSMA
ES9+ authenticateClient API endpoint (POST to
/gsma/rsp2/es9plus/authenticateClient). The SM-DP+ server is a Twisted web
application listening on port 443. An unauthenticated eUICC client sends
the matchingId in the ctxParamsForCommonAuthentication ASN.1 structure.

Fix:
Replace os.path.commonprefix() with proper path component checking:

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
</comment><date>2026-04-15 13:57:28 +0200</date><id>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</id><msg>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)</msg><path><editType>edit</editType><file>osmo-smdpp.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><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42625</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/25/42625/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3059/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim-build" build number 3,052</shortDescription><upstreamBuild>3052</upstreamBuild><upstreamProject>gerrit-pysim-build</upstreamProject><upstreamUrl>job/gerrit-pysim-build/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>10703</buildingDurationMillis><executingTimeMillis>10703</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3052</buildNumber><marked><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></marked><revision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3052</displayName><duration>10703</duration><estimatedDuration>9549</estimatedDuration><fullDisplayName>gerrit-pysim-build » distcheck,a1=default,a3=default,a4=default,osmocom-gerrit #3052</fullDisplayName><id>3052</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3052</number><queueId>89997</queueId><result>SUCCESS</result><timestamp>1776332547781</timestamp><url>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>osmo-smdpp.py</affectedPath><commitId>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</commitId><timestamp>1776254248000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)

Root Cause:
os.path.commonprefix() compares strings character-by-character, NOT by path
components. This is a well-known Python antipattern (Python docs explicitly
warn: "this function may return invalid paths because it works a character
at a time").

Attack Context:
The matchingId parameter is received from a network client via the GSMA
ES9+ authenticateClient API endpoint (POST to
/gsma/rsp2/es9plus/authenticateClient). The SM-DP+ server is a Twisted web
application listening on port 443. An unauthenticated eUICC client sends
the matchingId in the ctxParamsForCommonAuthentication ASN.1 structure.

Fix:
Replace os.path.commonprefix() with proper path component checking:

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
</comment><date>2026-04-15 13:57:28 +0200</date><id>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</id><msg>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)</msg><path><editType>edit</editType><file>osmo-smdpp.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42625</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/25/42625/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3059/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim-build" build number 3,052</shortDescription><upstreamBuild>3052</upstreamBuild><upstreamProject>gerrit-pysim-build</upstreamProject><upstreamUrl>job/gerrit-pysim-build/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>1</buildableDurationMillis><buildableTimeMillis>1</buildableTimeMillis><buildingDurationMillis>24746</buildingDurationMillis><executingTimeMillis>24746</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3052</buildNumber><marked><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></marked><revision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3052</displayName><duration>24746</duration><estimatedDuration>23692</estimatedDuration><fullDisplayName>gerrit-pysim-build » docs,a1=default,a3=default,a4=default,osmocom-gerrit #3052</fullDisplayName><id>3052</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3052</number><queueId>89999</queueId><result>SUCCESS</result><timestamp>1776332547781</timestamp><url>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>osmo-smdpp.py</affectedPath><commitId>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</commitId><timestamp>1776254248000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)

Root Cause:
os.path.commonprefix() compares strings character-by-character, NOT by path
components. This is a well-known Python antipattern (Python docs explicitly
warn: "this function may return invalid paths because it works a character
at a time").

Attack Context:
The matchingId parameter is received from a network client via the GSMA
ES9+ authenticateClient API endpoint (POST to
/gsma/rsp2/es9plus/authenticateClient). The SM-DP+ server is a Twisted web
application listening on port 443. An unauthenticated eUICC client sends
the matchingId in the ctxParamsForCommonAuthentication ASN.1 structure.

Fix:
Replace os.path.commonprefix() with proper path component checking:

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
</comment><date>2026-04-15 13:57:28 +0200</date><id>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</id><msg>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)</msg><path><editType>edit</editType><file>osmo-smdpp.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42625</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/25/42625/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3059/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim-build" build number 3,052</shortDescription><upstreamBuild>3052</upstreamBuild><upstreamProject>gerrit-pysim-build</upstreamProject><upstreamUrl>job/gerrit-pysim-build/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>1</buildableDurationMillis><buildableTimeMillis>1</buildableTimeMillis><buildingDurationMillis>11457</buildingDurationMillis><executingTimeMillis>11457</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3052</buildNumber><marked><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></marked><revision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3052</displayName><duration>11457</duration><estimatedDuration>11532</estimatedDuration><fullDisplayName>gerrit-pysim-build » pylint,a1=default,a3=default,a4=default,osmocom-gerrit #3052</fullDisplayName><id>3052</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3052</number><queueId>89998</queueId><result>SUCCESS</result><timestamp>1776332547781</timestamp><url>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>osmo-smdpp.py</affectedPath><commitId>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</commitId><timestamp>1776254248000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)

Root Cause:
os.path.commonprefix() compares strings character-by-character, NOT by path
components. This is a well-known Python antipattern (Python docs explicitly
warn: "this function may return invalid paths because it works a character
at a time").

Attack Context:
The matchingId parameter is received from a network client via the GSMA
ES9+ authenticateClient API endpoint (POST to
/gsma/rsp2/es9plus/authenticateClient). The SM-DP+ server is a Twisted web
application listening on port 443. An unauthenticated eUICC client sends
the matchingId in the ctxParamsForCommonAuthentication ASN.1 structure.

Fix:
Replace os.path.commonprefix() with proper path component checking:

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
</comment><date>2026-04-15 13:57:28 +0200</date><id>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</id><msg>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)</msg><path><editType>edit</editType><file>osmo-smdpp.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42625</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/25/42625/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3059/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim-build" build number 3,052</shortDescription><upstreamBuild>3052</upstreamBuild><upstreamProject>gerrit-pysim-build</upstreamProject><upstreamUrl>job/gerrit-pysim-build/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>985954</buildingDurationMillis><executingTimeMillis>985954</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3052</buildNumber><marked><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></marked><revision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3052</displayName><duration>985954</duration><estimatedDuration>986571</estimatedDuration><fullDisplayName>gerrit-pysim-build » test,a1=default,a3=default,a4=default,simtester #3052</fullDisplayName><id>3052</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3052</number><queueId>90000</queueId><result>SUCCESS</result><timestamp>1776332547781</timestamp><url>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3052/</url><builtOn>simtester</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>osmo-smdpp.py</affectedPath><commitId>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</commitId><timestamp>1776254248000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)

Root Cause:
os.path.commonprefix() compares strings character-by-character, NOT by path
components. This is a well-known Python antipattern (Python docs explicitly
warn: "this function may return invalid paths because it works a character
at a time").

Attack Context:
The matchingId parameter is received from a network client via the GSMA
ES9+ authenticateClient API endpoint (POST to
/gsma/rsp2/es9plus/authenticateClient). The SM-DP+ server is a Twisted web
application listening on port 443. An unauthenticated eUICC client sends
the matchingId in the ctxParamsForCommonAuthentication ASN.1 structure.

Fix:
Replace os.path.commonprefix() with proper path component checking:

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
</comment><date>2026-04-15 13:57:28 +0200</date><id>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</id><msg>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)</msg><path><editType>edit</editType><file>osmo-smdpp.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit></run></matrixBuild>