Skip to content
Closed
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions Tasks/AzurePowerShellV2/AzurePowerShell.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
Trace-VstsEnteringInvocation $MyInvocation
Import-VstsLocStrings "$PSScriptRoot\Task.json"

Import-Module $PSScriptRoot\ps_modules\Sanitizer

# Get inputs.
$scriptType = Get-VstsInput -Name ScriptType -Require
$scriptPath = Get-VstsInput -Name ScriptPath
Expand All @@ -21,6 +23,17 @@ if ($scriptArguments -match '[\r\n]') {
throw (Get-VstsLocString -Key InvalidScriptArguments0 -ArgumentList $scriptArguments)
}

# Sanitize script arguments to prevent PowerShell command injection.
# No-op unless BOTH the org-level "Enable shell tasks arguments validation"
# toggle and the per-task pipeline feature flag are enabled.
# See https://aka.ms/ado/75787 and Tasks/Common/Sanitizer/Invoke-ScriptArgumentSanitization.ps1.
if ($scriptType -ne "InlineScript") {
Invoke-ScriptArgumentSanitization `
-InputArgs $scriptArguments `
-TaskName 'AzurePowerShellV2' `
-PipelineFeatureFlagName 'EnableAzurePowerShellArgumentsSanitization'
}

# string constants
$otherVersion = "OtherVersion"
$latestVersion = "LatestVersion"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "Ungültige Skriptargumente \"{0}\". Zeilenumbrüche sind unzulässig.",
"loc.messages.InvalidScriptPath0": "Ungültiger Skriptpfad \"{0}\". Es wurden ungültige Pfadzeichen angegeben.",
"loc.messages.InvalidAzurePsVersion": "Die angegebene Azure PowerShell-Version \"{0}\" weist nicht das richtige Format auf. Überprüfen Sie das Format. Ein Beispiel für das richtige Format ist etwa 1.0.1.",
"loc.messages.OverrideAzurePowerShellVersion": "Die Azure PowerShell-Version {0} wird für den gehosteten Agent nicht unterstützt. Überschreiben Sie die Version mit Version {1}. Erwägen Sie eine Änderung der ausgewählten Version."
"loc.messages.OverrideAzurePowerShellVersion": "Die Azure PowerShell-Version {0} wird für den gehosteten Agent nicht unterstützt. Überschreiben Sie die Version mit Version {1}. Erwägen Sie eine Änderung der ausgewählten Version.",
"loc.messages.ScriptArgsSanitized": "Erkannte Zeichen in Argumenten, die von der Shell möglicherweise nicht ordnungsgemäß ausgeführt werden. Verwenden Sie einen Backtick (`), um Sonderzeichen mit Escapezeichen zu versehen. Weitere Informationen finden Sie hier: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "Invalid script arguments '{0}'. Line breaks are not allowed.",
"loc.messages.InvalidScriptPath0": "Invalid script path '{0}'. Invalid path characters specified.",
"loc.messages.InvalidAzurePsVersion": "The Azure PowerShell version '{0}' specified is not in the correct format. Please check the format. An example of correct format is 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "The Azure PowerShell version '{0}' is not supported for Hosted Agent. Overriding it with version '{1}'. Consider changing the version selected."
"loc.messages.OverrideAzurePowerShellVersion": "The Azure PowerShell version '{0}' is not supported for Hosted Agent. Overriding it with version '{1}'. Consider changing the version selected.",
"loc.messages.ScriptArgsSanitized": "Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`). More information is available here: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "Argumentos de script '{0}' no válidos. No se permiten los saltos de línea.",
"loc.messages.InvalidScriptPath0": "Ruta del script '{0}' no válida. Los caracteres de ruta de acceso especificados no son válidos.",
"loc.messages.InvalidAzurePsVersion": "La versión de Azure PowerShell \"{0}\" especificada no tiene el formato correcto. Compruebe el formato. Ejemplo de formato correcto: 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "La versión \"{0}\" de Azure PowerShell no se admite para el agente hospedado. Reemplácela por la versión \"{1}\". Considere la posibilidad de cambiar la versión seleccionada."
"loc.messages.OverrideAzurePowerShellVersion": "La versión \"{0}\" de Azure PowerShell no se admite para el agente hospedado. Reemplácela por la versión \"{1}\". Considere la posibilidad de cambiar la versión seleccionada.",
"loc.messages.ScriptArgsSanitized": "Se detectaron caracteres en argumentos que el shell no puede ejecutar correctamente. Escape de los caracteres especiales mediante el acento grave ('). Puede encontrar más información aquí: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "Arguments de script '{0}' non valides. Les sauts de ligne ne sont pas autorisés.",
"loc.messages.InvalidScriptPath0": "Chemin de script '{0}' non valide. Caractères non valides spécifiés dans le chemin.",
"loc.messages.InvalidAzurePsVersion": "La version '{0}' spécifiée pour Azure PowerShell n'est pas au format approprié. Vérifiez le format. Exemple de format correct : 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell '{0}' n'est pas une version prise en charge pour l'agent hébergé. Remplacement par la version '{1}'. Changez la version sélectionnée."
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell '{0}' n'est pas une version prise en charge pour l'agent hébergé. Remplacement par la version '{1}'. Changez la version sélectionnée.",
"loc.messages.ScriptArgsSanitized": "Caractères détectés dans les arguments qui peuvent ne pas être exécutés correctement par le shell. Veuillez échapper les caractères spéciaux en utilisant le backtick (`). Plus d'informations sont disponibles ici: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "Gli argomenti '{0}' dello script non sono validi. Le interruzioni di riga non sono consentite.",
"loc.messages.InvalidScriptPath0": "Il percorso '{0}' dello script non è valido. Sono stati specificati caratteri non validi.",
"loc.messages.InvalidAzurePsVersion": "Il formato della versione di Azure PowerShell '{0}' specificata non è corretto. Controllare il formato. Un esempio di formato corretto è 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "La versione '{0}' di Azure PowerShell non è supportata per l'agente ospitato e verrà sostituita con la versione '{1}'. Provare a cambiare la versione selezionata."
"loc.messages.OverrideAzurePowerShellVersion": "La versione '{0}' di Azure PowerShell non è supportata per l'agente ospitato e verrà sostituita con la versione '{1}'. Provare a cambiare la versione selezionata.",
"loc.messages.ScriptArgsSanitized": "Sono stati rilevati caratteri negli argomenti che potrebbero non essere eseguiti correttamente dalla shell. Eseguire l'escape dei caratteri speciali usando l’apice inverso (`). Ulteriori informazioni sono disponibili qui: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "スクリプトの引数 '{0}' が無効です。改行は使用できません。",
"loc.messages.InvalidScriptPath0": "スクリプト パス '{0}' が無効です。無効なパス文字が指定されました。",
"loc.messages.InvalidAzurePsVersion": "指定した Azure PowerShell バージョン '{0}' は、形式が正しくありません。形式をご確認ください。正しい形式の例は、1.0.1 です",
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell バージョン '{0}' はホストされたエージェントではサポートされていません。バージョン '{1}' でオーバーライドされます。選択したバージョンを変更することをご検討ください。"
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell バージョン '{0}' はホストされたエージェントではサポートされていません。バージョン '{1}' でオーバーライドされます。選択したバージョンを変更することをご検討ください。",
"loc.messages.ScriptArgsSanitized": "シェルによって正しく実行されない可能性のある引数の文字が検出されました。バックティック (`) を使用して特殊文字をエスケープしてください。詳細についてはこちら: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "스크립트 인수 '{0}'이(가) 잘못되었습니다. 줄 바꿈은 허용되지 않습니다.",
"loc.messages.InvalidScriptPath0": "스크립트 경로 '{0}'이(가) 잘못되었습니다. 잘못된 경로 문자를 지정했습니다.",
"loc.messages.InvalidAzurePsVersion": "지정한 Azure PowerShell 버전 '{0}'의 형식이 잘못되었습니다. 형식을 확인하세요. 올바른 형식의 예는 1.0.1입니다.",
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell 버전 '{0}'은(는) 호스트된 에이전트에 사용할 수 없습니다. '{1}' 버전으로 재정의하세요. 선택한 버전을 변경하는 것이 좋습니다."
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell 버전 '{0}'은(는) 호스트된 에이전트에 사용할 수 없습니다. '{1}' 버전으로 재정의하세요. 선택한 버전을 변경하는 것이 좋습니다.",
"loc.messages.ScriptArgsSanitized": "셸에서 올바르게 실행되지 않을 수 있는 인수에서 검색된 문자입니다. 백틱(`)을 사용하여 이스케이프 특수 문자를 만드세요. 자세한 내용은 https://aka.ms/ado/75787을 참조하세요."
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "Недопустимые аргументы скрипта \"{0}\". Разрывы строк запрещены.",
"loc.messages.InvalidScriptPath0": "Недопустимый путь к скрипту \"{0}\". Указаны символы, недопустимые в пути.",
"loc.messages.InvalidAzurePsVersion": "Указанная версия Azure PowerShell \"{0}\" имеет неправильный формат. Проверьте формат. Пример правильного формата: 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "Версия Azure PowerShell \"{0}\" не поддерживается для размещенного агента. Она будет заменена на версию \"{1}\". Попробуйте изменить выбранную версию."
"loc.messages.OverrideAzurePowerShellVersion": "Версия Azure PowerShell \"{0}\" не поддерживается для размещенного агента. Она будет заменена на версию \"{1}\". Попробуйте изменить выбранную версию.",
"loc.messages.ScriptArgsSanitized": "Обнаружены символы в аргументах, которые могут быть неправильно интерпретированы оболочкой. Экранируйте специальные символы с помощью обратного апострофа (`). Дополнительные сведения см. на следующей странице: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "脚本参数“{0}”无效。不允许换行。",
"loc.messages.InvalidScriptPath0": "脚本路径“{0}”无效。指定的路径字符无效。",
"loc.messages.InvalidAzurePsVersion": "指定的 Azure PowerShell 版本“{0}”格式不正确。请检查格式。正确格式的示例为 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell 版本“{0}”不受托管代理支持。将其替代为版本“{1}”。请考虑更改选定的版本。"
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell 版本“{0}”不受托管代理支持。将其替代为版本“{1}”。请考虑更改选定的版本。",
"loc.messages.ScriptArgsSanitized": "在参数中检测到可能无法由 shell 正确执行的字符。请使用反引号斜杠 (`) 转义特殊字符。有关详细信息,请访问此处: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@
"loc.messages.InvalidScriptArguments0": "指令碼引數 '{0}' 無效。不允許分行符號。",
"loc.messages.InvalidScriptPath0": "指令碼路徑 '{0}' 無效。指定的路徑字元無效。",
"loc.messages.InvalidAzurePsVersion": "指定的 Azure PowerShell 版本 '{0}' 格式不正確。請檢查格式。正確格式的範例為 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "裝載的代理程式不支援 Azure PowerShell '{0}' 版。正在以 '{1}' 版予以覆寫。請考慮變更選取的版本。"
"loc.messages.OverrideAzurePowerShellVersion": "裝載的代理程式不支援 Azure PowerShell '{0}' 版。正在以 '{1}' 版予以覆寫。請考慮變更選取的版本。",
"loc.messages.ScriptArgsSanitized": "偵測到引數中可能無法由殼層正確執行的字元。請使用反單引號 (') 逸出特殊字元。如需詳細資訊,請參閱: https://aka.ms/ado/75787"
}
4 changes: 4 additions & 0 deletions Tasks/AzurePowerShellV2/make.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
{
"module": "../Common/TlsHelper_",
"type": "ps"
},
{
"module": "../Common/Sanitizer",
"type": "ps"
}
],
"externals": {
Expand Down
2 changes: 1 addition & 1 deletion Tasks/AzurePowerShellV2/task.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"version": {
"Major": 2,
"Minor": 274,
"Patch": 0
"Patch": 2
},
"demands": [
"azureps"
Expand Down
7 changes: 4 additions & 3 deletions Tasks/AzurePowerShellV2/task.loc.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"version": {
"Major": 2,
"Minor": 274,
"Patch": 0
"Patch": 2
},
"demands": [
"azureps"
Expand Down Expand Up @@ -150,6 +150,7 @@
"InvalidScriptArguments0": "ms-resource:loc.messages.InvalidScriptArguments0",
"InvalidScriptPath0": "ms-resource:loc.messages.InvalidScriptPath0",
"InvalidAzurePsVersion": "ms-resource:loc.messages.InvalidAzurePsVersion",
"OverrideAzurePowerShellVersion": "ms-resource:loc.messages.OverrideAzurePowerShellVersion"
"OverrideAzurePowerShellVersion": "ms-resource:loc.messages.OverrideAzurePowerShellVersion",
"ScriptArgsSanitized": "ms-resource:loc.messages.ScriptArgsSanitized"
}
}
}
13 changes: 13 additions & 0 deletions Tasks/AzurePowerShellV3/AzurePowerShell.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
Trace-VstsEnteringInvocation $MyInvocation
Import-VstsLocStrings "$PSScriptRoot\Task.json"

Import-Module $PSScriptRoot\ps_modules\Sanitizer

# Get inputs.
$scriptType = Get-VstsInput -Name ScriptType -Require
$scriptPath = Get-VstsInput -Name ScriptPath
Expand All @@ -25,6 +27,17 @@ if ($scriptArguments -match '[\r\n]') {
throw (Get-VstsLocString -Key InvalidScriptArguments0 -ArgumentList $scriptArguments)
}

# Sanitize script arguments to prevent PowerShell command injection.
# No-op unless BOTH the org-level "Enable shell tasks arguments validation"
# toggle and the per-task pipeline feature flag are enabled.
# See https://aka.ms/ado/75787 and Tasks/Common/Sanitizer/Invoke-ScriptArgumentSanitization.ps1.
if ($scriptType -ne "InlineScript") {
Invoke-ScriptArgumentSanitization `
-InputArgs $scriptArguments `
-TaskName 'AzurePowerShellV3' `
-PipelineFeatureFlagName 'EnableAzurePowerShellArgumentsSanitization'
}

# string constants
$otherVersion = "OtherVersion"
$latestVersion = "LatestVersion"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@
"loc.messages.InvalidScriptArguments0": "Ungültige Skriptargumente \"{0}\". Zeilenumbrüche sind unzulässig.",
"loc.messages.InvalidScriptPath0": "Ungültiger Skriptpfad \"{0}\". Es wurden ungültige Pfadzeichen angegeben.",
"loc.messages.InvalidAzurePsVersion": "Die angegebene Azure PowerShell-Version \"{0}\" weist nicht das richtige Format auf. Überprüfen Sie das Format. Ein Beispiel für das richtige Format ist etwa 1.0.1.",
"loc.messages.OverrideAzurePowerShellVersion": "Die Azure PowerShell-Version {0} wird für den gehosteten Agent nicht unterstützt. Überschreiben Sie die Version mit Version {1}. Erwägen Sie eine Änderung der ausgewählten Version."
"loc.messages.OverrideAzurePowerShellVersion": "Die Azure PowerShell-Version {0} wird für den gehosteten Agent nicht unterstützt. Überschreiben Sie die Version mit Version {1}. Erwägen Sie eine Änderung der ausgewählten Version.",
"loc.messages.ScriptArgsSanitized": "Erkannte Zeichen in Argumenten, die von der Shell möglicherweise nicht ordnungsgemäß ausgeführt werden. Verwenden Sie einen Backtick (`), um Sonderzeichen mit Escapezeichen zu versehen. Weitere Informationen finden Sie hier: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@
"loc.messages.InvalidScriptArguments0": "Invalid script arguments '{0}'. Line breaks are not allowed.",
"loc.messages.InvalidScriptPath0": "Invalid script path '{0}'. Invalid path characters specified.",
"loc.messages.InvalidAzurePsVersion": "The Azure PowerShell version '{0}' specified is not in the correct format. Please check the format. An example of correct format is 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "The Azure PowerShell version '{0}' is not supported for Hosted Agent. Overriding it with version '{1}'. Consider changing the version selected."
"loc.messages.OverrideAzurePowerShellVersion": "The Azure PowerShell version '{0}' is not supported for Hosted Agent. Overriding it with version '{1}'. Consider changing the version selected.",
"loc.messages.ScriptArgsSanitized": "Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`). More information is available here: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@
"loc.messages.InvalidScriptArguments0": "Argumentos de script '{0}' no válidos. No se permiten los saltos de línea.",
"loc.messages.InvalidScriptPath0": "Ruta del script '{0}' no válida. Los caracteres de ruta de acceso especificados no son válidos.",
"loc.messages.InvalidAzurePsVersion": "La versión de Azure PowerShell \"{0}\" especificada no tiene el formato correcto. Compruebe el formato. Ejemplo de formato correcto: 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "La versión \"{0}\" de Azure PowerShell no se admite para el agente hospedado. Reemplácela por la versión \"{1}\". Considere la posibilidad de cambiar la versión seleccionada."
"loc.messages.OverrideAzurePowerShellVersion": "La versión \"{0}\" de Azure PowerShell no se admite para el agente hospedado. Reemplácela por la versión \"{1}\". Considere la posibilidad de cambiar la versión seleccionada.",
"loc.messages.ScriptArgsSanitized": "Se detectaron caracteres en argumentos que el shell no puede ejecutar correctamente. Escape de los caracteres especiales mediante el acento grave ('). Puede encontrar más información aquí: https://aka.ms/ado/75787"
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,6 @@
"loc.messages.InvalidScriptArguments0": "Arguments de script '{0}' non valides. Les sauts de ligne ne sont pas autorisés.",
"loc.messages.InvalidScriptPath0": "Chemin de script '{0}' non valide. Caractères non valides spécifiés dans le chemin.",
"loc.messages.InvalidAzurePsVersion": "La version '{0}' spécifiée pour Azure PowerShell n'est pas au format approprié. Vérifiez le format. Exemple de format correct : 1.0.1",
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell '{0}' n'est pas une version prise en charge pour l'agent hébergé. Remplacement par la version '{1}'. Changez la version sélectionnée."
"loc.messages.OverrideAzurePowerShellVersion": "Azure PowerShell '{0}' n'est pas une version prise en charge pour l'agent hébergé. Remplacement par la version '{1}'. Changez la version sélectionnée.",
"loc.messages.ScriptArgsSanitized": "Caractères détectés dans les arguments qui peuvent ne pas être exécutés correctement par le shell. Veuillez échapper les caractères spéciaux en utilisant le backtick (`). Plus d'informations sont disponibles ici: https://aka.ms/ado/75787"
}
Loading