Java: static field access of unknown class breaks dataflow (build-mode=none)
- 主要語言
- CodeQL
- 星號
- 10.1k
- 分支
- 2.1k
- 平均合併
- 2 天 15 小時
- 30 天內合併 PR
- 141
描述
This is another issue we encountered when analysing databases created with `build-mode=none`.
It appears that dataflow graphs are broken when static fields are accessed on unknown classes.
Please take a look [codeql_issue2.zip](https://github.com/user-attachments/files/20458091/codeql_issue2.zip) for more information.
Here is the example java code:
```
// This import is from a dependency that is not resolved
import com.foo.mycompany.UnknownClass;
public class DataFlowNotConnected {
static class MyClass {
public static String staticField = "static";
}
private int run() {
// data source 1 should flow to sink e and f, but dataflow is broken by UnknownClass.staticField
int a = 1;
int b = a;
// static class field access from known class
String staticField1 = MyClass.staticField;
int c = b;
int d = c;
// static class field access from unknown class breaks dataflow
String staticField2 = UnknownClass.staticField;
int e = d;
int f = e;
return f;
}
}
```
貢獻指南
研究方向
Start by reproducing the example from codeql_issue2.zip with build-mode=none, focusing on the Java dataflow graph around UnknownClass.staticField. Compare the graph with and without that static access; done means the flow from a through d remains connected to sinks e and f.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- java
- 領域
- devtools, security
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 需要釐清
- 新手友好度
- 35/100