It seems weird.
Your validation has a higher score than your training. This literally means that your model performs better in unseen data than what it sees.
Typical underfitting is that you achieve the same in train than in test.
In my opinion, since you are not providing much information, you are not splitting right the data. It might be for a lot of reasons:
- The test is too small or too easy to predict
- There is a temporal dependency and you are not using it (data leakage).
- There are groups in your dataset and you are splitting by groups...
And a thousand more. From the visualizations that you are adding my guess your train test split is not performed correctly