セキュリティ スキャナー ツールは、OWASP のセキュリティリスク Top 10 にしたがって、
ナレッジベース内のオブジェクトをスキャン/チェックし、潜在的なセキュリティ問題を探します。
GeneXus IDE のツールバーから次のオプションを選択すると、セキュリティスキャナーの設定ウィンドウを開くことができます: [ ツール ] -> [ セキュリティ ] -> [ セキュリティスキャナー ]

コンテキストメニューの「セキュリティスキャナー」を使用して、特定のオブジェクトやオブジェクトのサブセットに適用することもできます。

全体的にスキャンがトリガーされる場合にのみ、環境のルールが適用されます。コンテキストメニューを使用して部分的なスキャンを実行する場合は、環境のルールは適用されません。
このツールは次のタイプのオブジェクトをスキャンします:
次のタイプのオブジェクトはスキャンしません:
IDE を使用してスキャンを実行する場合、結果は「SecurityScanner」と表示された [ 出力 ] ウィンドウに表示されます。
設定ウィンドウで、すべてのルールに対して重大度レベルを設定したり、無効にしたりすることができます。
セキュリティスキャナーはオブジェクトを分析し、パラメーターが暗号化されているかどうかをチェックします。すなわち、
[ Encrypt URL parameters ] プロパティが「
Session Key」または「
Site Key」に設定されているかどうかをチェックします。
<Parameter encryption> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 100 - パラメーター暗号化が設定されていません
セキュリティスキャナーは項目属性、変数、およびテキストブロックを分析し、それらの
Web 用の [ Format ] プロパティが「
HTML」または「
Raw HTML」に設定されているかどうかをチェックします。
<HTML format> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error 101: WebForm (Name 'htmltxtblock' Type 'HTML'. Name 'rawhtmltxtblock' Type 'Raw HTML'.) で HTML テキストブロックが検出されました)
または
error: Code: 101 - 項目属性の形式に HTML を使用できます
セキュリティスキャナーは KB 内の Web パネルおよびトランザクションを分析し、Authorization プログラム (プロシージャー) を呼び出すかどうかをチェックします。このルールは、マスターページおよび Web コンポーネントには適用されません。
<Authorization> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 102 - このオブジェクトにはアクセスコントロールが設定されていません
X Evolution 2 を使用している場合は、
[ Integrated Security Level ] プロパティがチェックされます (
GeneXus Access Manager 使用)。
セキュリティスキャナーは KB オブジェクトを分析し、
SQL コマンドを検索します。
<SQL Command> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 103 - SQL コマンドの使用が見つかりました
例:
SQL UPDATE UserInfo SET UserWelcomeMessage=' [ !&UserWelcomeMessage! ] 'WHERE UserId= [ !&UserId! ]
セキュリティスキャナーは KB オブジェクトを分析し、パラメーターのない動的なコマンドリンクがあるかどうかをチェックします。
<Link command> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 104 - パラメーターがない Link コマンドの使用が見つかりました
例:
Link(&SomeWebPanel)
セキュリティスキャナーは Web パネルおよびプロシージャーを分析し、HTTPS プロトコルが指定されているかどうかをチェックします。すなわち、
[ Protocol specification ] プロパティが「
Secure (HTTPS)」に設定されているかどうかをチェックします。
SOAP のプロシージャーの場合、環境の [ Protocol specification ] を継承します。そのため、環境に安全でないプロトコルが指定されている場合、ルールがトリガーされます。これは、
GeneXus 17 Upgrade 4 以降で適用されます。
<Http protocol> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 105 - HTTP プロトコルは安全ではありません
または
error: Code: 105 - プロトコル指定が「Do not specify」に設定されている HTTP プロトコルは安全ではありません
セキュリティスキャナーは、
[ Javascript Debug Mode ] プロパティ (ジェネレーターレベル) を分析し、プロパティが有効になっている場合は次のメッセージが表示されます:
error: Code: 106 - JavaScript のデバッグモードが有効になっています
セキュリティスキャナーは、Web コンポーネントとして設定されている KB オブジェクトを分析し、それらの URL アクセスが有効になっているかどうかをチェックします。すなわち、
[ URL access ] プロパティに「
Yes」が設定されているかどうかをチェックします。
<WC URL Access> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 107 - Web コンポーネントの [ URL access ] が有効になっています
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、Java または C# のコマンドをチェックします。
次のメッセージが表示されます:
error 108: ソースでネイティブコードの使用が見つかりました
セキュリティスキャナーは、KB オブジェクトの [ Variables ] エレメントを分析し、
HttpResponse データタイプの使用をチェックします。
次のメッセージが表示されます:
error: Code: 109 - 変数で HttpResponse データタイプが使用されています (名前 'HttpResponse' タイプ 'HttpResponse')
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
LDAPClient データタイプの GetAttribute メソッドの使用をチェックします。
次のメッセージが表示されます:
error: Code: 110 - LDAPClient.GetAttribute 関数の使用
セキュリティスキャナーは、KB オブジェクトの [ Variables ] エレメントを分析し、
Directory データタイプの使用をチェックします。
次のメッセージが表示されます:
error: Code: 111 - 変数で Directory データタイプが使用されています (名前 'Directory' タイプ 'Directory')
セキュリティスキャナーは、KB オブジェクトの [ Variables ] エレメントを分析し、
File データタイプの使用をチェックします。
次のメッセージが表示されます:
error: Code: 112 - 変数で File データタイプが使用されています (名前 'File' タイプ 'File')
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
XMLReader データタイプの [ ValidationType ] プロパティの使用をチェックします。
次のメッセージが表示されます:
error: Code: 113 - XmlReader データタイプの [ ValidationType ] プロパティの設定にミスがあります
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
Shell 関数の使用をチェックします。
次のメッセージが表示されます:
error: Code: 114 - Shell 関数の使用が見つかりました
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
Random 関数の使用をチェックします。
次のメッセージが表示されます:
error: Code: 115 - Random 関数の使用が見つかりました
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
SetCookie 関数の使用をチェックします。
次のメッセージが表示されます:
error: Code: 116 - SetCookie 関数の使用が見つかりました
可能なときに、
Cookie データタイプを使用し、 [ HttpOnly ] プロパティを有効にします。
セキュリティスキャナーは、Web Panel オブジェクトおよび Transaction オブジェクトのソースセクションを分析し、 [ Form.HeaderRawHTML ] プロパティの使用をチェックします。
次のメッセージが表示されます:
error: Code: 117 - [ HeaderRawHTML ] プロパティの使用が見つかりました
セキュリティスキャナーは、Web Panel オブジェクトおよび Transaction オブジェクトのソースセクションを分析し、 [ Form.JScriptSrc ] プロパティの使用をチェックします。
次のメッセージが表示されます:
error: Code: 118 - [ JScriptSrc ] プロパティの使用が見つかりました
セキュリティスキャナーは、Web Panel オブジェクトおよび Transaction オブジェクトのソースセクションを分析し、 [ IsPassword ] プロパティの使用をチェックします。
次のメッセージが表示されます:
error: Code: 119 - [ IsPassword ] プロパティの使用が見つかりました
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
外部オブジェクトの使用をチェックします。
次のメッセージが表示されます:
error: Code: 120 - 変数で外部オブジェクトが使用されています (名 'CustomType' タイプ 'CustomType')
X Evolution 2 のバージョンでは、GAM および GXflow の外部オブジェクトは除外されます。
セキュリティスキャナーは、
Web Panel オブジェクトおよび
Transaction オブジェクトの [ Web Layout ] エレメントを分析し、
ユーザーコントロールの使用をチェックします。
次のメッセージが表示されます:
error: Code: 121 - WebForm で UserControl が検出されました (名前 'CustomControl' タイプ 'CustomControl')
セキュリティスキャナーは、KB オブジェクトの [ Variables ] エレメントを分析し、
Cookie データタイプの使用をチェックします。
次のメッセージが表示されます:
error: Code: 124 - 変数で Cookie データタイプが使用されています (名前 'Cookie' タイプ 'cookie')
可能な限り [ HttpOnly ] プロパティを有効にします。
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
XMLWriter の
WriteRawText メソッドの使用をチェックします。
次のメッセージが表示されます:
error: Code: 125 - XmlWriter.WriteRawText 関数が使用されています
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
FromXml メソッド - SDT の使用をチェックします。
次のメッセージが表示されます:
error: Code: 126 - SDT.FromXml 関数が使用されています
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
ビジネスコンポーネントの FromJson メソッドの使用をチェックします。
次のメッセージが表示されます:
error: Code: 127 - SDT.FromJson 関数が使用されています
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
XMLReader データタイプの
ReadRawXML メソッドの使用をチェックします。
次のメッセージが表示されます:
error: Code: 128 - XmlReader.ReadRawXML 関数が使用されています
セキュリティスキャナーは、KB オブジェクトの [ Variables ] エレメントを分析し、
Blob データタイプの使用をチェックします。
次のメッセージが表示されます:
error: Code: 129 - オブジェクトで Blob データタイプの使用が検出されました (変数: Blob)
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
JSEvent メソッドの使用をチェックします。
次のメッセージが表示されます:
error: Code: 130 - JSEvent 関数の使用が見つかりました
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
SoapHeaderRaw の非標準関数の使用をチェックします。
次のメッセージが表示されます:
error: Code: 131 - [ SoapHeaderRaw ] プロパティの使用が見つかりました
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
PathToURL 関数の使用をチェックします。
次のメッセージが表示されます:
error: Code: 132 - PathtoUrl の使用が見つかりました
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
XMLReader データタイプの
[ ReadExternalEntities ] プロパティの使用をチェックします。
次のメッセージが表示されます:
error: Code: 133 - [ XmlReader.ReadExternalEntities ] プロパティが使用されています
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
FromXmlFile メソッドの使用をチェックします。
次のメッセージが表示されます:
error: Code: 134 - SDT.FromXmlFile 関数が使用されています
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、
FromJsonFile メソッドの使用をチェックします。
次のメッセージが表示されます:
error: Code: 135 - SDT.FromJsonFile 関数が使用されています
セキュリティスキャナーは KB の環境を分析し、パラメーターが暗号化されているかどうかをチェックします。すなわち、
[ Encrypt URL parameters ] プロパティが「
Session Key」または「
Site Key」に設定されているかどうかをチェックします。
<Parameter encryption> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 136 - パラメーターの暗号化が設定されていません
セキュリティスキャナーは KB の環境を分析し、HTTPS プロトコルが指定されているかどうかをチェックします。すなわち、
[ Protocol specification ] プロパティが「
Secure (HTTPS)」に設定されているかどうかをチェックします。
<Http protocol> に問題が見つかった場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 137 - HTTP プロトコルが安全ではありません
セキュリティスキャナーは KB 環境を分析し、
[ SameSite cookie attribute ] プロパティの値が None に設定されているかどうかをチェックします。
設定されている場合、
セキュリティスキャナーに次のメッセージが表示されます:
error: Code: 138 - SameSite cookie 項目属性が None に設定されています
セキュリティスキャナーは、KB オブジェクトのソースセクションを分析し、マルチメディア データ タイプ (
Image データタイプ、
Audio データタイプ、
Video データタイプ) に対する FromURL 関数の使用をチェックします。
次のメッセージが表示されます:
error: Code: 139 - Multimedia.FromURL 関数が使用されています

このフィールドを使用して、解析でホワイトリストに登録するオブジェクトおよびルールを選択できます。

GAM を使用していない場合は、このフィールドを使用して、認可のロジックを含むプロシージャーまたはマスターページを挿入できます。スキャンの際、Authentication プロシージャーの呼び出しを含まないオブジェクト、または選択したマスターページを使用しないオブジェクトをエラーで通知します。

Master Page や Procedure とは異なるタイプのオブジェクトを指定した場合、スキャンはその設定を無視します。
Scan という、MSBuild スクリプトでスキャナーを実行できる新しいタスクを定義します。このタスクは、任意のサーバー側の CI/CD パイプラインに含めることができます。
このタスクは、セキュリティスキャナーの設定ウィンドウで設定済みの構成を実行します。
<Project DefaultTargets="SecurityScan" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(GXInstall)\genexus.tasks.targets"/>
<Import Project="$(GXInstall)\security.tasks.targets"/>
<Target Name="SecurityScan">
<OpenKnowledgeBase Directory="$(KBDir)" />
<SecurityScan XmlOutputFile="securityTest.xml"/>
</Target>
</Project>
XmlOutputFile を指定することにより、Error や Warning を XML 形式で受け取ります。
msbuild securityscantest.msbuild /verbosity:minimal /t:SecurityScan /p:KBDir=c:\mykbpath /p:GXInstall=c:\genexusinstalldir