Fix: Run container as non-root user to mitigate RCE vulnerability#19
Fix: Run container as non-root user to mitigate RCE vulnerability#19
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the WalkthroughO Dockerfile foi modificado para implementar práticas de segurança com a criação de um usuário e grupo não-root (appuser), atribuição de propriedade adequada do diretório /app e execução do container sob esse usuário não-privilegiado. Changes
Estimated code review effort🎯 2 (Simples) | ⏱️ ~8 minutos
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
Comment |
Co-authored-by: yuriishizawa <50813580+yuriishizawa@users.noreply.github.com>
… timing Co-authored-by: yuriishizawa <50813580+yuriishizawa@users.noreply.github.com>
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
|
@sourcery-ai review |
Co-authored-by: yuriishizawa <50813580+yuriishizawa@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
Dockerfile (2)
6-7: Considere usargroupaddeuseradd(POSIX-compliant) para maior robustez e compatibilidade.Os comandos
addgroupeaddusercom a sintaxe usada funcionam em Debian, mas a combinação de flags--home /app --no-create-homeé confusa (especifica um home mas depois diz para não criá-lo). A alternativa comgroupadd -reuseradd -ré mais clara e segue convenções POSIX.-RUN addgroup --system appuser && \ - adduser --system --home /app --no-create-home --ingroup appuser appuser +RUN groupadd -r appuser && \ + useradd -r -d /app -s /sbin/nologin -g appuser appuser
14-17:⚠️ Nota:poetry shellem linha 17 (pré-existente) pode não ter o efeito esperado em contexto Dockerfile.A diretiva
poetry shellé interativa e não costuma funcionar em builds não-interativos. Comovirtualenvs.createjá está desabilitado em linha 15 (correto), opoetry shellé redundante. Considere remover em um future refactor, mas não é bloqueador para esta correção de segurança.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
Dockerfile(2 hunks)
🔇 Additional comments (1)
Dockerfile (1)
21-24: Ótimo posicionamento dechowneUSER— segurança implementada corretamente.O comando
chown -R appuser:appuser /appestá corretamente posicionado após a cópia dos arquivos, e a diretivaUSER appuserestá corretamente colocada após todas as operações que exigem privilégios root. Nenhuma operação subsequente (incluindo ENTRYPOINT/CMD) requer permissões elevadas. A mitigação de RCE está bem implementada.
|
@coderabbitai help |
|
@sourcery-ai help |
ChatThere are 3 ways to chat with CodeRabbit:
CodeRabbit commands
Other keywords and placeholders
CodeRabbit configuration file (
|
|
@CodeRabbit atualize o poetry deste repositório para >= 2.0.0 e remova o comando |
|
@coderabbitai atualize o poetry deste repositório para >= 2.0.0 e remova o comando poetry shell do dockerfile |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 1455 @yuriishizawa, entendido! Vou atualizar o Poetry para >= 2.0.0 e remover o comando Aqui está o Dockerfile atualizado: FROM python:3.10
EXPOSE 8501
WORKDIR /app
# Create a non-root user with dedicated group
RUN addgroup --system appuser && \
adduser --system --no-create-home --ingroup appuser appuser
# COPY requirements.txt ./requirements.txt
# RUN pip3 install -r requirements.txt
COPY pyproject.toml poetry.lock ./
RUN pip install 'poetry>=2.0.0' && \
poetry config virtualenvs.create false && \
poetry install --no-dev
COPY . .
# Change ownership of application files to non-root user
RUN chown -R appuser:appuser /app
USER appuser
ENTRYPOINT ["streamlit"]
CMD ["run", "myapp.py"]Mudanças realizadas:
Nota: O arquivo
|
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 1183 @yuriishizawa, entendido! Vou atualizar o Poetry para >= 2.0.0 e remover o comando O comando
Aqui está a seção atualizada do Dockerfile: FROM python:3.10
EXPOSE 8501
WORKDIR /app
# Create a non-root user with dedicated group
RUN addgroup --system appuser && \
adduser --system --no-create-home --ingroup appuser appuser
# COPY requirements.txt ./requirements.txt
# RUN pip3 install -r requirements.txt
COPY pyproject.toml poetry.lock ./
RUN pip install "poetry>=2.0.0" && \
poetry config virtualenvs.create false && \
poetry install --no-dev
COPY . .
# Change ownership of application files to non-root user
RUN chown -R appuser:appuser /app
USER appuser
ENTRYPOINT ["streamlit"]
CMD ["run", "myapp.py"]Mudanças realizadas:
Estas alterações mantêm a segurança implementada neste PR (usuário não-root) e modernizam a versão do Poetry. |
Container defaulted to root user, enabling RCE exploits to gain full privileges for container escape, lateral movement, and host compromise.
Changes
appusersystem user with isolated group/appdirectory ownership toappuser:appuserafter file copyUSER appuserdirective to drop privileges before entrypointNotes
Pre-existing issues remain unaddressed per minimal change scope:
poetry.lockfile will cause build failure (line 12)poetry shellcommand in build context (line 17)Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.
Summary by CodeRabbit