False positive on "Query built by concatenation with a possibly-untrusted string" - "java/concatenated-sql-query"
- 主要言語
- CodeQL
- スター
- 10.1k
- フォーク
- 2.1k
- 平均マージ
- 2日 15時間
- マージ済み PR(30日)
- 141
説明
False positive on `Query built by concatenation with a possibly-untrusted string` - `java/concatenated-sql-query`
* https://github.com/github/codeql/blob/ff0c1ca2d6401e63914f20b650b49c2b82cac148/java/ql/src/Security/CWE/CWE-089/SqlConcatenated.ql
We have a constant value from enum
```
public enum CommentType {
REVIEW_SIMPLE_COMMENT("comment.review.simple"),
SIMPLE_COMMENT("comment.simple");
private final String type;
private CommentType(String type) {
this.type = type;
}
public String getType() {
return this.type;
}
}
```
Used in query
```
sql.append(" AND REVIEW_COMMENT.COMMENT_TYPE = '").append(CommentType.REVIEW_SIMPLE_COMMENT.getType()).append("') ");
```
And CodeQL is stating `Query built by concatenation with a possibly-untrusted string` in `CommentType.REVIEW_SIMPLE_COMMENT.getType()`. From my understanding the enum is immutable. Could you take a look?
コントリビューションガイド
調査の方向性
java/ql/src/Security/CWE/CWE-089/SqlConcatenated.ql から始め、提供された enum と SQL 構築の例を使ってレポートを再現してください。query が enum 由来の値を信頼できない可能性があるものとして分類する方法を追跡し、そのうえで例を引き続き報告すべきか判断してください。このケースの false positive の挙動が解消されるか、明確に正当化されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- security
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100